#ifndef DISPATCHERSERVER_H #define DISPATCHERSERVER_H #include "cloudserver.h" class TileList; class DispatcherServer: public PIObject { PIOBJECT(DispatcherServer) public: DispatcherServer(PIEthernet::Address 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); 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; PITimer timeout_timer; PIMutex map_mutex; uint client_gid; }; #endif // DISPATCHERSERVER_H