NETWORK_END int main(int argc, char** argv) { USE_NETWORK; LogicServer app; app.run(); return 0; }
int main(int argc, const char** argv) { if(argc < 2) { std::cout << "ApnPushServer <config>\n"; return 0; } Settings *pSettings = Singleton<Settings>::instance(); if (!pSettings->load(argv[1])) { std::cout << "load setting file:" << argv[1] << ", fail\n"; exit(1); } pSettings->print(); signal(SIGPIPE, SIG_IGN); signal(SIGCHLD, SIG_IGN); signal(SIGTSTP, SIG_IGN); signal(SIGTTOU, SIG_IGN); signal(SIGTTIN, SIG_IGN); signal(SIGHUP, SIG_IGN); signal(SIGQUIT, SIG_IGN); signal(SIGURG, SIG_IGN); signal(SIGTERM, signal_handler); if(pSettings->Daemon) { std::cout << "Daemon!\n"; daemonize(); } initNetLog(pSettings->NLogLevel, pSettings->NLogPath, 3600, true); logInit(pSettings->LogConfig); initStatistic(output_statistic); MsgDBFactory::init(pSettings->MsgDBConfig); LogicServer s; g_s = &s; PushConFac* pcf = getPushConFactory(); pcf->setLogicServer(&s); s.setSvConFactory(getPeerConFactory()); s.setKeepAliveSpan(pSettings->KeepAliveSpan); s.setReconnectSpan(pSettings->ReconnectSpan); s.setServiceType(pSettings->ServiceType); s.init(pSettings->ThreadCount, pSettings->SvLstCacheConfig, pSettings->SessCacheConfig); s.startListen(pSettings->PushListenPort, pcf); g_run = true; s.run(); while(g_run) { sleep(1); } s.stopListen(pSettings->PushListenPort); s.stop(); MsgDBFactory::free(); return 0; }