#ifndef DISPATCHERSERVER_H #define DISPATCHERSERVER_H #include "cloudserver.h" class TileList; class DispatcherServer: public PIObject { PIOBJECT(DispatcherServer) public: DispatcherServer(PINetworkAddress addr); ~DispatcherServer(); void start(); void updateConnectionsTile(TileList * tl); void updateServersTile(TileList * tl, PISet servers = PISet()); void updateClientsTile(TileList * tl, PISet servers = PISet()); const DispatcherClient * getConnection(int index); const DispatcherClient * getServer(int index); PISet getServers(PISet ids); void setMaxConnections(uint max_count); uint maxConnections() const { return max_connections; } EVENT_HANDLER0(void, picoutStatus); private: EVENT_HANDLER1(void, newConnection, PIEthernet *, cl); EVENT_HANDLER1(void, disconnectClient, DispatcherClient *, client); EVENT_HANDLER0(void, cleanClients); PIEthernet eth; PIVector clients; PIMap c_servers; PIMap index_c_servers; PIMap index_c_clients; PIVector rm_clients; PIVector rmrf_clients; PIVector rmrf_servers; PITimer timeout_timer; PIMutex map_mutex; uint client_gid; uint max_connections; }; #endif // DISPATCHERSERVER_H