void Monitor::CreateSocketServer(MonitorConfiguration *config) { static SocketServer socketServer(config,0) ; static SocketServer fms32ProServer(config,1000) ; fms32ProServer.m_ServerModus = SocketThread::fms32pro ; static SocketServer crusaderServer(config,2000) ; crusaderServer.m_ServerModus = SocketThread::crusader ; socketServer.Start() ; fms32ProServer.Start() ; crusaderServer.Start() ; }
int _tmain(int argc, _TCHAR* argv[]) { using namespace Framework; using namespace log4cplus; using namespace std; using namespace TcpSocketServerSide; using namespace Business; using namespace Business::Handlers; // configure log4cplus SharedAppenderPtr appender(new DailyRollingFileAppender(_T("Whisper.log"))); //tstring patternExp = _T("%-5p - %Y-%m-%d %H:%M:%S - %l - %m%n"); tstring patternExp = _T("%-5p - %D - %l - %m%n"); auto_ptr<Layout> layout(new PatternLayout(patternExp)); appender->setLayout(layout); Logger logger = Logger::getRoot(); logger.addAppender(appender); // configure Framework Configurations::BufferSize = 1024; Configurations::Logger = &logger; try{ ITaskFactory* taskFactory = new DefaultTaskFactory(1); SocketServer* server = new TcpSocketServer( "127.0.0.1", //"192.168.1.103",// 8888, taskFactory ); auto dispatcher = new TcpSocketEventDispatcher(*server); auto socketFactory = new TcpSocketFactory(); auto manager = new TcpConnectionManager(*server, *dispatcher, *socketFactory); auto handler = new WhisperSocketEventHandler(*server); auto serverEventHandler = new WhisperSocketEventHandler::ServerEventHandler( *server, *handler ); /* register message handler */ PacketDispatcher& packetDispatcher = handler->GetPacketDispatcher(); packetDispatcher.Register(new AuthenticateRequestHandler()); /* register message handler */ server->SetSocketEventDispatcher(dispatcher); server->SetConnectionManager(manager); server->SetSocketEventHandler(handler); server->SetServerEventHandler(serverEventHandler); server->Start(); /*Sleep(10*1000);*/ //server->Shutdown(); server->WaitForShutdown(); delete server; cout << " Server closed." << endl; } catch(std::exception &ex){ cout << ex.what() << endl; } cin.get(); return 0; }
void Monitor::MainLoop() { // Soundkarte initialisieren InitSndCard() ; /********************************************************/ static SocketServer socketServer(&m_MonitorConfig,m_MonitorConfig.m_socketFilterFileName ,0) ; socketServer.Start() ; FILE_LOG(logINFO) << "monitord socketserver started" ; static SocketServer fms32ProServer(&m_MonitorConfig,m_MonitorConfig.m_socketFilterFileName ,1000) ; fms32ProServer.m_ServerModus=SocketThread::fms32pro ; fms32ProServer.Start() ; FILE_LOG(logINFO) << "fms32pro socketserver started" ; static SocketServer crusaderServer(&m_MonitorConfig,m_MonitorConfig.m_socketFilterFileName ,2000) ; crusaderServer.m_ServerModus=SocketThread::crusader ; crusaderServer.Start() ; FILE_LOG(logINFO) << "crusader socketserver started" ; /*******************************************************/ #ifdef PLUGINS //GetPluginsManager().loadPlugin("plugins/.libs/libmplugin_mysql-0.dll",NULL); GetPluginsManager().loadScriptFilter(m_MonitorConfig.m_pluginFilterFileName) ; GetPluginsManager().loadPluginsFromConfigNode(&m_MonitorConfig.m_configDataPlugins); FILE_LOG(logDEBUG) << "PluginManager started" ; #endif /*********************************************************/ while (!m_bWantStop) { /** * Wer sich fragt, wo eigentlich denn die Arbeit gemacht wird: * Die drei SocketServer sind eigenstaendige Threads. Die bedienen * die TCP/IP Verbindungen und laufen unabhaegig. * * Die eigentliche (Ton) Auswertung erfolgt in jeweils einem Thread * pro Soundkarte. Diese Threads werden im InitSndCard gestartet. * * Dann gibt es noch den GlobalDispatcher. Er ist auch ein eigenstaendiger * Thread. Er wird von dem Auswerten mit ResultSets versorgt. Die Auswerter * haben damit Ihren Teil erledigt. * Der Dispatcher verteilt dann die Results an alle Sockets und Plugins (ohne die * Auswerter zu blockieren) * */ usleep(100); // Wie man sieht: hier gibt es im Moment nichts zu tun :- } FILE_LOG(logINFO) << PACKAGE_NAME << " shutting down..." ; StopSndCard() ; FILE_LOG(logINFO) << "stopping socketserver monitord"; socketServer.m_bWantStop=true ; FILE_LOG(logINFO) << "stopping socketserver FMS32"; fms32ProServer.m_bWantStop=true ; FILE_LOG(logINFO) << "stopping socketserver Crusader"; crusaderServer.m_bWantStop=true ; usleep(1000) ; m_SignalStopped->SetSignal() ; usleep(500) ; FILE_LOG(logINFO) << "all done. " << PACKAGE_NAME << " exiting"; }
int main(int argc, char *argv[]) { SocketServer* socketServer = new SocketServer(); socketServer->Start(MAX_CLIENT_COUNT); while (getch()!=27) {} }