int ACE_TMAIN(int argc, ACE_TCHAR* argv[])
{
	//指定当前目录,防止访问文件失败
	TCHAR szFileName[MAX_PATH] = {0};
	GetModuleFileName(0, szFileName, MAX_PATH);
	LPTSTR pszEnd = _tcsrchr(szFileName, TEXT('\\'));

	if (pszEnd != 0)
	{
		pszEnd++;
		*pszEnd = 0;
	}
	SetCurrentDirectory(szFileName);

	//添加Dump文件
	SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);   

	//第一步,读取配置文件
	if(!App_MainConfig::instance()->Init())
	{
		OUR_DEBUG((LM_INFO, "[main]%s\n", App_MainConfig::instance()->GetError()));
	}
	else
	{
		App_MainConfig::instance()->Display();
	}

	//隐式加载PacketParse
	bool blState = App_PacketParseLoader::instance()->LoadPacketInfo(App_MainConfig::instance()->GetPacketParseInfo()->m_szPacketParseName);
	if(true == blState)
	{
		//判断是否是需要以服务的状态启动
		if(App_MainConfig::instance()->GetServerType() == 1)
		{
			//以服务状态启动
			//首先看有没有配置启动windows服务
			App_Process::instance()->run(argc, argv);
		}
		else
		{
			//正常启动
			ServerMain();
		}
	}
 
	return 0;
}
Beispiel #2
0
DWORD WINAPI ChatFunc(LPVOID randparam)
{
    ServerMain(randparam);
    return 0;
}