#ifndef NETWORKSERVER_HH
#define NETWORKSERVER_HH
#include "Network.hh"
#include "GameState.hh"
#include <list>
#include <map>
#include <ClanLib/core.h>
// forward-declare
class NetworkServerClient;
class NetworkServer : public NetworkBase {
private:
GameState *state;
std::map<CL_IPAddress, NetworkServerClient> client_sockets;
CL_EventListener listener;
CL_Slot slot_on_recv;
NetworkServer (GameState *state, const CL_IPAddress &listen_ip);
public:
static NetworkServer *newServer (void);
void run (void);
private:
void _onRecv (void);
};
class NetworkServerClient {
private:
NetworkServer &server;
private:
NetworkServerClient (NetworkServer &server);
};
void runNetworkServer (void);
#endif