Files
Sun1602/Tools/SunUpdateManager/SunUpdateAgent/SunUpdateAgent.h
T
2022-10-26 12:25:11 +08:00

104 lines
2.7 KiB
C++

#pragma once
#include <Singleton.h>
#include <string>
#ifdef __20101123__UPDATE_AGENT_AUTO_RESTART
#include "Schedule.h"
#endif
class IOCPServer;
class ServerSession;
class NetworkObject;
class UpdateServerSession;
unsigned __stdcall CheckGameServer( VOID* pParam );
BOOL CALLBACK EnumProc(HWND hWnd, LPARAM lParam);
struct CallbackInfo
{
DWORD m_dwPID;
HWND m_hWnd;
};
class SunUpdateAgent : public Singleton<SunUpdateAgent>
{
public:
SunUpdateAgent();
~SunUpdateAgent();
public:
enum { CLIENT_IOHANDLER = 0, SERVER_IOHANDLER = 1, };
BOOL Init();
VOID Run();
BOOL Update();
VOID Release();
BOOL StartCheckGameServer();
private:
VOID StartClientSideListen();
BOOL IsShutDown(){ return m_bIsShutDown; }
BOOL ProcessConsole();
VOID UpdateFPS();
VOID DisplayAgentInfo();
#ifdef __20101123__UPDATE_AGENT_AUTO_RESTART
void UpdateForAutoRestart();
void AutoStop();
void AutoStart();
void StopServer(BYTE server_type);
void StartServer(BYTE server_type);
#endif
//Server
public:
DWORD ConnectToServer( NetworkObject* pNetworkObjet, const TCHAR* pszIP, WORD wPort );
//UpdateServer
VOID SetUpdateServerIPAddr( const TCHAR* pszIP, WORD wPort );
BOOL SendToUpdateServer( VOID * pMsg, WORD wSize );
BOOL ConnectToUpdateServer();
VOID DisconnectUpdateServer();
BOOL IsConnectUpdateServer();
#ifdef _NA_006662_20130423_SVNPATCH
void CheckPatchProcess();
#endif //_NA_006662_20130423_SVNPATCH
//Function
public:
DWORD GetAgentKey(){ return m_dwAgentKey; }
VOID SetAgentKey( DWORD dwAgentKey ){ m_dwAgentKey = dwAgentKey; }
VOID SetCheckThread( BOOL bRun ){ m_bRunCheckThread = bRun; }
#ifdef _NA_006662_20130423_SVNPATCH
VOID SetPatchingSVNmode(BOOL _isstart) {patching_svnmode_ = _isstart;}
BOOL GetPatchingSVNmode() {return patching_svnmode_;}
VOID SetPatchingUserKey(const DWORD& key) { patching_userkey_ = key;}
DWORD GetPatchingUserKey() {return patching_userkey_;}
VOID SendPatchResultToServer_SVN();
#endif //_NA_006662_20130423_SVNPATCH
private:
IOCPServer* m_pIOCPServer;
BOOL m_bIsShutDown;
std::string m_strInSideIP;
WORD m_wInnerPort;
std::string m_strOutSideIP;
WORD m_wOutSidePort;
DWORD m_dwAgentKey;
DWORD m_dwFPS;
#ifdef _NA_006662_20130423_SVNPATCH
BOOL patching_svnmode_; //스크립트를 SVN모드로 패치한다.
DWORD patching_userkey_; //현재 패치작업을 하고 있는 유저키
#endif //_NA_006662_20130423_SVNPATCH
UpdateServerSession* m_pUpdateServerSession;
HANDLE m_hCheckThread;
#ifdef __20101123__UPDATE_AGENT_AUTO_RESTART
ScheduleToken m_AutoStopSchedule;
ScheduleToken m_AutoStartSchedule;
#endif
public:
BOOL m_bRunCheckThread;
};