Example #1
0
void doQuitJob()
{
	char fileCntBuf[20] = {0};
	snprintf(fileCntBuf, 20, "%llu", g_fileManager->getFileCntCurr());
    	config_file.SetConfigValue("FileCnt", fileCntBuf);
	FileManager::destroyInstance();
netlib_destroy();
    log("I'm ready quit...");
}
Example #2
0
int main(int argc, char* argv[])
{//test
    for(int i=0; i < argc; ++i)
       {
           if(strncmp(argv[i], "-d", 2) == 0)
           {
               if(daemon(1, 0, 1) < 0)
               {
                   cout<<"daemon error"<<endl;
                   return -1;
               }
               break;
           }
       }
    log("MsgServer max files can open: %d", getdtablesize());


    char* listen_ip = config_file.GetConfigName("ListenIP");
    char* str_listen_port = config_file.GetConfigName("ListenPort");
    char* base_dir = config_file.GetConfigName("BaseDir");
    char* str_file_cnt = config_file.GetConfigName("FileCnt");
    char* str_files_per_dir = config_file.GetConfigName("FilesPerDir");
    char* str_post_thread_count = config_file.GetConfigName("PostThreadCount");
    char* str_get_thread_count = config_file.GetConfigName("GetThreadCount");

    if (!listen_ip || !str_listen_port || !base_dir || !str_file_cnt || !str_files_per_dir || !str_post_thread_count || !str_get_thread_count)
    {
        log("config file miss, exit...");
        return -1;
    }
    
    log("%s,%s",listen_ip, str_listen_port);
    uint16_t listen_port = atoi(str_listen_port);
    long long int  fileCnt = atoll(str_file_cnt);
    int filesPerDir = atoi(str_files_per_dir);
    int nPostThreadCount = atoi(str_post_thread_count);
    int nGetThreadCount = atoi(str_get_thread_count);
    if(nPostThreadCount <= 0 || nGetThreadCount <= 0)
    {
        log("thread count is invalied");
        return -1;
    }
    g_PostThreadPool.Init(nPostThreadCount);
    g_GetThreadPool.Init(nGetThreadCount);

    g_fileManager = FileManager::getInstance(listen_ip, base_dir, fileCnt, filesPerDir);
	int ret = g_fileManager->initDir();
	if (ret) {
		printf("The BaseDir is set incorrectly :%s\n",base_dir);
		return ret;
    }
	ret = netlib_init();
    if (ret == NETLIB_ERROR)
        return ret;

    CStrExplode listen_ip_list(listen_ip, ';');
    for (uint32_t i = 0; i < listen_ip_list.GetItemCnt(); i++)
    {
        ret = netlib_listen(listen_ip_list.GetItem(i), listen_port,
                http_callback, NULL);
        if (ret == NETLIB_ERROR)
            return ret;
    }

    signal(SIGINT, Stop);
    signal (SIGTERM, Stop);
    signal (SIGQUIT, Stop);
    signal(SIGPIPE, SIG_IGN);
    signal (SIGHUP, SIG_IGN);

    printf("server start listen on: %s:%d\n", listen_ip, listen_port);
    init_http_conn();
    printf("now enter the event loop...\n");

    netlib_eventloop();
    return 0;
}
Example #3
0
int main(int argc, char* argv[])
{
    if ((argc == 2) && (strcmp(argv[1], "-v") == 0)) {
    	cout << "HttpMsgServer   " << endl;
    	cout << "Server Build:" << __DATE__ << __TIME__ << endl;
        return ERR_SUCCESS;
    }

    signal(SIGPIPE, SIG_IGN);
    srand(time(NULL));

    //日志类初始化
	 if (!Logger.Init(2000, 0, 0)){
		 cout <<"log init failed!!!"<< endl;
		return -1;
	}
	/* 设置打印级别 */
	Logger.SetLogLevel(0x0040, true);


    Logger.Log(INFO, "The Server max files can open: %d ", getdtablesize());

    CConfigFileReader* configFile = new CConfigFileReader("httpsvr.conf");
    char* listenIp = configFile->GetConfigName("ListenIP");
    char* strListenPort = configFile->GetConfigName("ListenPort");
	char* strThreadNum = configFile->GetConfigName("ThreadNum");

	//初始化数据库连接及管理类
	CDBManager* pDBManager = CDBManager::getInstance(configFile);
	if (!pDBManager) {
		Logger.Log(ERROR, "DBManager init failed");
		return ERR_FAILED;
	}
	pDBManager->Init();

    if (!listenIp || !strListenPort) {
    	Logger.Log(ERROR, "config file miss, exit ");
        return ERR_FAILED;
    }

    int ret = netlib_init();
    if (ret == NETLIB_ERROR){
        return ret;
    }

    uint16_t listenPort = atoi(strListenPort);
    CStrExplode listen_ip_list(listenIp, ';');
    for (uint32_t i = 0; i < listen_ip_list.GetItemCnt(); i++) {
        ret = netlib_listen(listen_ip_list.GetItem(i), listenPort, HttpCallback, NULL);
        if (ret == NETLIB_ERROR)
            return ret;
    }

    cout << "server start listen on: " << listenIp << listenPort << endl;

    uint32_t threadNum = atoi(strThreadNum);
    InitHttpConn(threadNum);//初始化线程,增加心跳定时器


    cout << "now enter the event loop!" << endl;

    writePid();

    netlib_eventloop();

    return 0;
}