#ifndef _BEHAVIOR_MANAGER_HH_ #define _BEHAVIOR_MANAGER_HH_ /********************** *** SYSTEM HEADERS *** **********************/ #include #include #include #include #include #include #include #include /********************* *** LOCAL HEADERS *** *********************/ #include "Semaphore.hh" #include "Common.hh" typedef struct priorityLevelStruct { int numBehaviors; // number of behaviors in this priority // level int levelNumber; // the priority level of this struct int levelSuspensions; list IDs; // list of all the pids in this // priority level map pendingSuspend; // id to # of suspensions map hostnames; // id to hostname map sems; // id to semaphore }; class BehaviorManager { public: BehaviorManager (int serverPort); ~BehaviorManager(); static void* startServer (void* arg); bool isRunning() { return runServer; } private: bool runServer; bool initalizeNetworking (); void registerBehavior (int level, int ID, char* hostname, Semaphore* sem); void unregisterBehavior (int level, int ID, char* hostname); void testSuspend (int level, int ID); void suspend (int level); void resume (int level); map levels; int serverPort; int clientServer, clientSocket; struct sockaddr_in ClientAddress, ClientServerAddress; socklen_t ClientServerAddressLength, ClientAddressLength; }; #endif /* _BEHAVIOR_MANAGER_HH_ */