142 lines
3.8 KiB
C++
142 lines
3.8 KiB
C++
|
|
|
|||
|
|
#include "stdafx.h"
|
|||
|
|
//#include "WinService.h"
|
|||
|
|
#include "FileLogger.h"
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
CRobotManager* CRobotManager::s_pRobotManager =NULL;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#define ROBOT_KN_VERION MAKEFOURCC(1, 11, 9, 20) //机器人的版本号
|
|||
|
|
|
|||
|
|
extern const TCHAR szExceptionDumpFile[] = _T("./Robot.dmp");
|
|||
|
|
BOOL SetupSessionManagerConfig(CRobotManager*);
|
|||
|
|
VOID ServerMain(int argc, char **argv);
|
|||
|
|
|
|||
|
|
|
|||
|
|
int main(int argc, char** argv)
|
|||
|
|
{
|
|||
|
|
//SetCurrentDirectory("../"); //CWinService里会把当前目录改成exe允许的目录,所以这里再转一下
|
|||
|
|
CTimeProfMgr::getSingleton().InitMgr(); //性能统计
|
|||
|
|
//SetUnhandledExceptionFilter( DefaultUnHandleExceptionFilter ); //异常处理
|
|||
|
|
InitDefMsgOut();
|
|||
|
|
|
|||
|
|
#ifdef WIN32
|
|||
|
|
SetCurrentDirectory("./");
|
|||
|
|
#else
|
|||
|
|
std::string filename(argv[1]);
|
|||
|
|
size_t found = filename.find_last_of("/\\");
|
|||
|
|
filename = filename.substr(0, found);
|
|||
|
|
if( filename[0] == '.' && filename.length()==1 )
|
|||
|
|
filename = "./" ;
|
|||
|
|
SetCurrentDirectory(filename.c_str());
|
|||
|
|
#endif
|
|||
|
|
ServerMain(argc, argv);
|
|||
|
|
|
|||
|
|
UninitDefMsgOut();
|
|||
|
|
#ifdef _MLIB_DUMP_MEMORY_LEAKS_
|
|||
|
|
_CrtDumpMemoryLeaks();
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
BOOL SetupRobotManagerConfig(CRobotManager *lpSSManager, const char * sConfigFile)
|
|||
|
|
{
|
|||
|
|
CRobotConfig config;
|
|||
|
|
return config.loadConfig(lpSSManager, sConfigFile);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
VOID ServerMain(int argc, char **argv)
|
|||
|
|
{
|
|||
|
|
const char * sConfigFile = NULL;
|
|||
|
|
if (argc > 0)
|
|||
|
|
{
|
|||
|
|
//sConfigFile = argv[1];
|
|||
|
|
//sConfigFile = _T("data/robot/RobotConfig.txt");//argv[1];
|
|||
|
|
}
|
|||
|
|
//主线程的代码
|
|||
|
|
INT_PTR nError;
|
|||
|
|
TCHAR sCmdBuf[512];
|
|||
|
|
//CRobotManager *pSSManager;
|
|||
|
|
CFileLogger flog(_T("./log/Robot_%s.log.txt"), getCurrentTimeDesc());
|
|||
|
|
//CFileLogger flog(_T("Robot.log.html"));
|
|||
|
|
|
|||
|
|
//pSSManager = new CRobotManager();
|
|||
|
|
if(CRobotManager::s_pRobotManager !=NULL ) return;
|
|||
|
|
CRobotManager::s_pRobotManager = new(CRobotManager);
|
|||
|
|
|
|||
|
|
winitseed((unsigned int)_getTickCount()); //初始化随机数函数
|
|||
|
|
OutputMsg( rmTip, _T("Starting Robot, Waiting.."));
|
|||
|
|
if ( SetupRobotManagerConfig(CRobotManager::s_pRobotManager, sConfigFile) )
|
|||
|
|
{
|
|||
|
|
char* sTitleName = CRobotManager::s_pRobotManager->m_sConsoleName;
|
|||
|
|
//GetRobotMgr()->GetGlobalConfig().convertToACP(CRobotManager::s_pRobotManager->m_sConsoleName, sizeof(CRobotManager::s_pRobotManager->m_sConsoleName), sTitleName, ArrayCount(sTitleName));
|
|||
|
|
sprintf_s(sTitleName, "%s-%d", sTitleName, GetCurrentProcessId());
|
|||
|
|
SetConsoleTitle(sTitleName);
|
|||
|
|
if ( CRobotManager::s_pRobotManager->Startup() )
|
|||
|
|
{
|
|||
|
|
in_addr ia;
|
|||
|
|
OutputMsg( rmTip, _T("-------------------------------------------") );
|
|||
|
|
OutputMsg( rmTip, _T("Robot 启动成功,核心版本号是%s"), inet_ntoa(ia) );
|
|||
|
|
OutputMsg( rmTip, _T("quit - 停止测试并退出程序") );
|
|||
|
|
OutputMsg( rmTip, _T("count -查看当前的在线情况") );
|
|||
|
|
OutputMsg( rmTip, _T("dmp -输出dmp信息") );
|
|||
|
|
OutputMsg( rmTip, _T("-------------------------------------------") );
|
|||
|
|
|
|||
|
|
while ( TRUE )
|
|||
|
|
{
|
|||
|
|
_getts(sCmdBuf);
|
|||
|
|
//滤掉末尾的换行符
|
|||
|
|
nError = (int)strlen(sCmdBuf);
|
|||
|
|
while ( nError > 0 && sCmdBuf[nError-1] < 0x20 )
|
|||
|
|
{
|
|||
|
|
nError--;
|
|||
|
|
sCmdBuf[nError] = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//退出命令
|
|||
|
|
if ( _tcsncicmp(sCmdBuf, _T("\\q"), 2) == 0
|
|||
|
|
|| _tcsncicmp(sCmdBuf, _T("exit"), 4) == 0
|
|||
|
|
|| _tcsncicmp(sCmdBuf, _T("quit"), 4) == 0 )
|
|||
|
|
{
|
|||
|
|
OutputMsg( rmTip, _T("正在停止Robot...") );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
else if ( _tcsncicmp(sCmdBuf, _T("count"), 5) == 0 )
|
|||
|
|
{
|
|||
|
|
CRobotManager::s_pRobotManager->ShowServerAgentCount();
|
|||
|
|
}
|
|||
|
|
else if(_tcsncicmp(sCmdBuf, "dmp", 3) == 0)
|
|||
|
|
{
|
|||
|
|
DebugBreak();
|
|||
|
|
}
|
|||
|
|
Sleep(10);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CRobotManager::s_pRobotManager->Shutdown();
|
|||
|
|
//Sleep(3000); //等所有的线程都退出
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
OutputMsg(rmError, _T("启动失败"));
|
|||
|
|
char c;
|
|||
|
|
scanf(&c,"%c");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
OutputMsg(rmError, _T("读取配置文件失败"));
|
|||
|
|
char c;
|
|||
|
|
scanf(&c,"%c");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
delete CRobotManager::s_pRobotManager;
|
|||
|
|
CRobotManager::s_pRobotManager=NULL;
|
|||
|
|
}
|
|||
|
|
|