Exemplo n.º 1
0
void CMyService::Run()
{
	char szFilePath[_MAX_PATH] = {NULL};
	::GetModuleFileName(NULL, szFilePath, sizeof(szFilePath));

	strcpy_s(szFilePath+strlen(szFilePath)-3,4,"log");

	HANDLE hLogFile = CreateFile(szFilePath,GENERIC_WRITE | GENERIC_READ,FILE_SHARE_WRITE|FILE_SHARE_READ,NULL,OPEN_ALWAYS,0,NULL);

	strcpy_s(szFilePath+strlen(szFilePath)-3,4,"ini");

	CServer server;
	CIni ini;
	ini.SetPathName(szFilePath);

	char szImagePath[MAX_PATH] = {NULL};
	char szRecordPath[MAX_PATH] = {NULL};
	char szPackagePath[MAX_PATH] = {NULL};
	char szCustomLogPath[MAX_PATH] = {NULL};
	char szIpAddress[256] = {NULL};
	int nPort = 7788;

	ini.GetString(_T("PathSetting"),_T("ImagePath"),szImagePath,MAX_PATH);
	ini.GetString(_T("PathSetting"),_T("RecordPath"),szRecordPath,MAX_PATH);
	ini.GetString(_T("PathSetting"),_T("PackagePath"),szPackagePath,MAX_PATH);
	ini.GetString(_T("PathSetting"),_T("UserLogPath"),szCustomLogPath,MAX_PATH);

	if (!PathFileExistsA(szImagePath))
	{
		SHCreateDirectoryExA(NULL,szImagePath,NULL);
	}

	if (!PathFileExistsA(szRecordPath))
	{
		SHCreateDirectoryExA(NULL,szRecordPath,NULL);
	}

	if (!PathFileExistsA(szPackagePath))
	{
		SHCreateDirectoryExA(NULL,szPackagePath,NULL);
	}

	if (!PathFileExistsA(szCustomLogPath))
	{
		SHCreateDirectoryExA(NULL,szCustomLogPath,NULL);
	}

	server.SetPath(hLogFile,szImagePath,szRecordPath);
	server.SetOtherPath(szPackagePath,szCustomLogPath);

	system("cls");
	printf("%s Version %d.%02d\n",m_szServiceName, m_iMajorVersion, m_iMinorVersion);
	server.WriteLogFile(FALSE,"\r\n%s Version %d.%02d",m_szServiceName, m_iMajorVersion, m_iMinorVersion);

	ini.GetString(_T("ServerSetting"),_T("ServerIP"),szIpAddress,256);
	nPort = ini.GetInt(_T("ServerSetting"),_T("ListenPort"),7788);

	BOOL bRet = server.Start(szIpAddress,nPort);

	while (!bRet && m_bIsRunning)
	{
		printf("Start server(%s:%d) failed ! Please check the ip address and the listen port is right.\n"
			,szIpAddress,nPort);

		printf("Wait 60s to retry......\n");

		server.WriteLogFile(TRUE,"Start server(%s:%d) failed ! Please check the ip address and the listen port is right."
			,szIpAddress,nPort);
		server.WriteLogFile(TRUE,"Wait 60s to retry......");

		Sleep(60000);

		ini.GetString(_T("ServerSetting"),_T("ServerIP"),szIpAddress,256);
		nPort = ini.GetInt(_T("ServerSetting"),_T("ListenPort"),7788);

		bRet = server.Start(szIpAddress,nPort);
	}

	printf("Start server(%s:%d) success...\n",szIpAddress,nPort);
	server.WriteLogFile(TRUE,"Start server(%s:%d) success...",szIpAddress,nPort);

	while (m_bIsRunning)
	{
		Sleep(1000);
	}

	server.Shutdown();

	printf("The server(%s:%d) closed.\n",szIpAddress,nPort);
	server.WriteLogFile(TRUE,"The server(%s:%d) closed.",szIpAddress,nPort);

	CloseHandle(hLogFile);
	
}