#ifndef MASTER_DAEMON #define MASTER_DAEMON /*! \brief masterDaemon * server core. * * Two Process Layers: one to n EPP Servers and one to n EPP Clients. */ #ifdef MD_CORE class masterDaemon *thisService; #else extern class masterDaemon *thisService; #endif using boost::asio::ip::udp; class masterDaemon : public mdProcess, public Listener, public Listener, public Listener, public Listener, public Listener, public Listener, public Listener, public Listener { public: bool shuttingDown; boost::asio::io_service io_; int arCycles, apiClients[MAX_CLIENTS], eppServers[MAX_PEER], nClievers, received, sentCommands; masterDaemonConfig *cfg; mdDGChannel *bg,*fg; std::string clievers[MAX_CLIEVER]; masterDaemon(); ~masterDaemon() {} masterDaemon(masterDaemonConfig *cmdCfg) { int i; thisService = this; cfg = cmdCfg; nClievers = 0; shuttingDown = false; memset(apiClients,0,sizeof(apiClients)); memset(eppServers,0,sizeof(eppServers)); } int getDeviceHandle(int deviceMajor,std::string &deviceMinor) {}; int initBaseAPI(void); int initDataLayer(void); int releaseDevice(int handle) {return( -1);} int validateHandleForCmds(int handle) {return(-1);} void dispatch(mdWQitem*); void dispatch(const mdIncoming&); void listen(); //rrj xmlrpc_c::value* fetchCommands(std::string subSystem) {}; void * fetchCommands(std::string subSystem) {}; virtual void processEvent(const mdAttention &ev); virtual void processEvent(const mdCDPulse &ev); virtual void processEvent(const mdClientBirth &ev); virtual void processEvent(const mdClientDeath &ev); virtual void processEvent(const mdIncoming &ev); virtual void processEvent(const mdResponse &ev); virtual void processEvent(const mdAPIFrame &ev); virtual void processEvent(const mdHostCommand &ev); void run(); }; #endif