Ejemplo n.º 1
0
NETWORK_END

	int main(int argc, char** argv)
{
	USE_NETWORK;
	LogicServer app;
	app.run();
	return 0;
}
Ejemplo n.º 2
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;
}