Restructure repository to include all source folders

Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-29 20:17:20 +09:00
parent 5d3cd64a25
commit dd97ddec92
11602 changed files with 1446576 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
#include "stdafx.h"
#include "Resource.h"
#include "ManageServer.h"
#include <Log/ServerLog.h>
#include <Utility/ServerAppFramework/MsgProc/MsgProc.h>
#include <Utility/ServerAppFramework/ConsoleWindow/ConsoleWindow.h>
class CProcessCOMMAND : public CMsgProc
{
public:
CProcessCOMMAND(CConsoleWindow& ConsoleWindow) : m_ConsoleWindow(ConsoleWindow) { }
virtual ~CProcessCOMMAND() { }
virtual LRESULT operator () (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
char* szCommand = 0;
switch (LOWORD(wParam))
{
case ID_MENU_OPENCONSOLE: m_ConsoleWindow.Initialize("ManageServer"); break;
case ID_MENU_CLOSECONSOLE: m_ConsoleWindow.Destroy(); break;
case ID_MENU_RELOADSETUP: szCommand = "reload"; break;
case ID_MENU_CONNECTTOSTATSERVER: CManageServer::GetInstance().ConnectToStatServer(); break;
case ID_MENU_FLUSH: szCommand = "flush";
}
if(LOWORD(wParam) == IDM_EXIT)
{
DETLOG0(g_Log, "Terminate Manage Server System Tray.");
PostMessage(hWnd, WM_QUIT, 0, 0);
}
return 0;
}
private:
CConsoleWindow& m_ConsoleWindow;
};
bool CManageServer::InitializeMsgProc()
{
int nErrorCount = 0;
CMsgProcessMgr* lpMsgProcessMgr = GetMsgProcessMgr();
if(0 != lpMsgProcessMgr)
{
if(GetConsoleWindow())
{
nErrorCount += lpMsgProcessMgr->Register(WM_COMMAND,
new CProcessCOMMAND(*GetConsoleWindow())) ? 0 : 1;
}
}
return (0 == nErrorCount);
}

View File

@@ -0,0 +1,348 @@
#include "stdafx.h"
#include "resource.h"
#include "ManageServer.h"
#include <shellapi.h>
#include <Thread/Lock.h> // CNamedMutex
#include <Log/ServerLog.h>
#include <Utility/Debug/ExceptionReport.h> // g_CExceptionReport
#include <Utility/Time/Pulse/Pulse.h>
#include <Network/Session/CreatePolicy.h>
#include <Network/Session/Session.h>
#include <Network/IOCP/IOCPNet.h>
#include <Network/Dispatch/SingleDispatchStorage.h>
#include <Network/Dispatch/ManageServer/ManageServerDispatch.h>
#include <Network/Dispatch/ManageServer/ManageToolServerDispatch.h>
#include <Network/Dispatch/ManageServer/StatServerMultiDispatch.h>
#include <Utility/ServerAppFramework/MsgProc/MsgProc.h>
#include <Network/Packet/ManagePacketCmd.h>
#include <Network/Packet/WrapPacket.h>
#include <Network/Dispatch/SendManagePacket.h>
#include <Pattern/CommandQueue.h>
#include <DB/ManageServerDB.h>
#include <Utility/Setup/ServerSetup.h>
#include <UserManage/UserStatistics.h>
#include <Setup/RylServerGroupSetup.h>
#include <Stream/Buffer/Buffer.h>
#include <UserManage/ToolUserManageTable.h>
int WINAPI ExceptionUserFunc(char* szBuffer, int nBufferLen)
{
g_Log.Flush();
g_SessionLog.Flush();
return _snprintf(szBuffer, nBufferLen, "Exception Occured. Flush all buffers.");
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
CNamedMutex Mutex("ManageServer", TRUE);
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
ERRLOG0(g_Log, "ManageServer already server operating now. please shutdown and restart");
return 0;
}
unsigned long dwExceptionFeatures = CExceptionReport::CATCH_EXCEPTION |
CExceptionReport::USE_MINIDUMP | CExceptionReport::USE_REPORT;
CExceptionReport::GetInstance().Enable(dwExceptionFeatures);
CExceptionReport::GetInstance().SetUserFunc(ExceptionUserFunc);
CManageServer& ManageServer = CManageServer::GetInstance();
if(ManageServer.Initialize(hInstance, "ManageServer", lpCmdLine,
IDI_MANAGESERVER, IDC_MANAGESERVER))
{
ManageServer.ProcessMessage();
}
return 0;
}
class CManageServerProcessThread : public CProcessThread
{
public:
enum Const
{
PROCESS_TPP = 200, ///< 200ms(0.2초) 에 1틱.
TPP_PER_SEC = 1000 / PROCESS_TPP,
CONNECT_CHECK = 2 * TPP_PER_SEC, ///< 2초마다 연결 체크
PRINT_CONSOLE = 2 * TPP_PER_SEC, ///< 2초마다 콘솔창 갱신
STATSERVER_CONNECT = 30 * TPP_PER_SEC, ///< 30초마다 통계서버 연결
HANGAME_USERNUM = 300 * TPP_PER_SEC, ///< 10분(600초)마다 한게임으로 메시지 보냄.
STATSERVER_USERNUM = 600 * TPP_PER_SEC ///< 10분마다 통계서버로 패킷 전송.
};
CManageServerProcessThread(CManageServer& ManageServer)
: CProcessThread(ManageServer, PROCESS_TPP),
m_ManageServer(ManageServer)
{
}
private:
virtual void Cleanup(CPulse& Pulse)
{
}
virtual void InternalRun(CPulse& Pulse)
{
unsigned long dwCurrentPulse = Pulse.GetCurrentPulse();
if(0 == (dwCurrentPulse % CONNECT_CHECK))
{
}
if(0 == (dwCurrentPulse % PRINT_CONSOLE))
{
m_ManageServer.UpdateConsole();
}
if(0 == (dwCurrentPulse % HANGAME_USERNUM))
{
CUserStatistics::GetInstance().SendStatisticsToHanGame();
}
if(0 == (dwCurrentPulse % STATSERVER_USERNUM))
{
CUserStatistics::GetInstance().SendStatisticsToStatServer();
}
if(0 == (dwCurrentPulse % STATSERVER_CONNECT))
{
m_ManageServer.ConnectToStatServer();
}
}
CManageServer& m_ManageServer;
};
CManageServer& CManageServer::GetInstance()
{
static CManageServer manageServer;
return manageServer;
}
CManageServer::CManageServer()
: m_lpServerSessionPolicy(SessionPolicy::CreateTCPPolicy<CManageServerDispatch>()),
m_lpToolSessionPolicy(SessionPolicy::CreateTCPPolicy<CManageToolServerDispatch>()),
m_lpStatServerSessionPolicy(SessionPolicy::CreateTCPPolicy<CStatServerMultiDispatch>()),
m_lpCommandQueueThread(0)
{
/*
m_lpMyBuffer = CREATE_BUFFER(
m_lpToolSessionPolicy->GetBufferFactory(), sizeof(ServerManage::StatServerStatus));
*/
}
CManageServer::~CManageServer()
{
//SAFE_RELEASE_BUFFER(m_lpMyBuffer);
if(0 != m_lpServerSessionPolicy)
{
m_lpServerSessionPolicy->Release();
m_lpServerSessionPolicy = 0;
}
if(0 != m_lpToolSessionPolicy)
{
m_lpToolSessionPolicy->Release();
m_lpToolSessionPolicy = 0;
}
}
bool CManageServer::ApplicationSpecificInit(const TCHAR* szCmdLine)
{
const TCHAR* szErrorMessage = 0;
if(!CManageServerDB::GetInstance().Initialize())
{
// 관리 DB로드 및 초기화 실패
szErrorMessage = _T("ManageServerDB initialize failed");
}
else if(!GetIOCPNet()->AddListener(m_lpToolSessionPolicy, 0,
CServerSetup::ManageServerManageToolListen))
{
szErrorMessage = _T("ToolSessionListener add failed");
}
else if(!GetIOCPNet()->AddListener(m_lpServerSessionPolicy, 0,
CServerSetup::ManageServerManageClientListen))
{
szErrorMessage = _T("ManageServerListener add failed");
}
else if(!AddProcessThread(new CManageServerProcessThread(*this)))
{
szErrorMessage = _T("AddProcessThread failed(ManageServerProcessThread)");
}
else if(0 == (m_lpCommandQueueThread = new CCommandQueueThread))
{
szErrorMessage = _T("CCommandQueueThread create failed");
}
else if(!m_lpCommandQueueThread->IsValid())
{
szErrorMessage = _T("CCommandQueueThread is Invalid");
}
else if(!AddProcessThread(m_lpCommandQueueThread))
{
szErrorMessage = _T("AddProcessThread failed(CCommandQueueThread)");
}
else if(!InitializeMsgProc())
{
szErrorMessage = _T("Initialize message proc failed");
}
else if(!InitializeCommand())
{
szErrorMessage = _T("Initialize command failed");
}
if(!ConnectToStatServer())
{
ERRLOG0(g_Log, "StatServer connection failed");
}
if(0 != szErrorMessage)
{
ERRLOG2(g_Log, "this:0x%p/%s", this, szErrorMessage);
return false;
}
return true;
}
void CManageServer::UpdateConsole()
{
const int MAX_INFO = 4096;
const int MAX_BUFFER = 512;
char szInfo[MAX_INFO];
char szGlobalStatServerIP[MAX_BUFFER], szLocalStatServerIP[MAX_BUFFER];
GetPrivateProfileString("STATSERVER_INFO", "STAT_SERVER_1ST_IP", 0,
szGlobalStatServerIP, MAX_BUFFER, CRylServerGroupSetup::GetInstance().GetSetupFileName());
GetPrivateProfileString("STATSERVER_INFO", "STAT_SERVER_2ND_IP", 0,
szLocalStatServerIP, MAX_BUFFER, CRylServerGroupSetup::GetInstance().GetSetupFileName());
GET_MULTI_DISPATCH(lpGlobalStatDispatch, inet_addr(szGlobalStatServerIP),
CStatServerMultiDispatch, CStatServerMultiDispatch::GetDispatchTable());
GET_MULTI_DISPATCH(lpLocalStatDispatch, inet_addr(szLocalStatServerIP),
CStatServerMultiDispatch, CStatServerMultiDispatch::GetDispatchTable());
char szStatServerState[MAX_BUFFER];
_snprintf(szStatServerState, MAX_BUFFER,
"StatServer(1ST) : %s (%s:%d)\r\nStatServer(2ND) : %s (%s:%d)",
(NULL != lpGlobalStatDispatch) ? "Connected " : "Disconnected",
szGlobalStatServerIP, CServerSetup::StatServerManageServerListen,
(NULL != lpLocalStatDispatch) ? "Connected " : "Disconnected",
szLocalStatServerIP, CServerSetup::StatServerManageServerListen);
int nLength = _snprintf(szInfo, MAX_INFO - 1,
"[ROW Manager Server]\r\n\r\nTotal Player Num : %d\r\n\r\n%s",
CUserStatistics::GetInstance().GetTotalUserNum(), szStatServerState);
if(0 < nLength && nLength < MAX_INFO)
{
szInfo[nLength] = 0;
PrintInfo(szInfo);
}
// ManageTool로 통계서버 연결 정보 전송.
const int nSize = sizeof(PktBase) + (sizeof(bool) * 2);
char szBuffer[nSize];
ServerManage::StatServerStatus* lpStatServerStatus =
reinterpret_cast<ServerManage::StatServerStatus*>(szBuffer);
lpStatServerStatus->m_bGlobalStatServerOK = (NULL != lpGlobalStatDispatch) ? true : false;
lpStatServerStatus->m_bLocalStatServerOK = (NULL != lpLocalStatDispatch) ? true : false;
if (PacketWrap::WrapHeader(szBuffer, nSize, ServerManage::CMD::StatServerStatus, 0, 0))
{
CToolUserManager::GetInstance().SendToAllLoginUser(
szBuffer, nSize, ServerManage::CMD::StatServerStatus);
}
}
bool CManageServer::ConnectToStatServer()
{
const char* szSetupFileName = CRylServerGroupSetup::GetInstance().GetSetupFileName();
unsigned int dwSendToGlobalStatServer =
GetPrivateProfileInt("STATSERVER_INFO", "SEND_STAT_SERVER_1ST", 0, szSetupFileName);
unsigned int dwSendToLocalStatServer =
GetPrivateProfileInt("STATSERVER_INFO", "SEND_STAT_SERVER_2ND", 0, szSetupFileName);
if((0 == dwSendToGlobalStatServer) && (0 == dwSendToLocalStatServer))
{
return false;
}
CIOCPNet* lpIOCP = GetIOCPNet();
if(0 != lpIOCP && 0 != m_lpStatServerSessionPolicy)
{
const int MAX_BUFFER = 256;
char szGlobalStatServerIP[MAX_BUFFER], szLocalStatServerIP[MAX_BUFFER];
GetPrivateProfileString("STATSERVER_INFO", "STAT_SERVER_1ST_IP", 0,
szGlobalStatServerIP, MAX_BUFFER, szSetupFileName);
GetPrivateProfileString("STATSERVER_INFO", "STAT_SERVER_2ND_IP", 0,
szLocalStatServerIP, MAX_BUFFER, szSetupFileName);
if(0 == strcmp(szGlobalStatServerIP, szLocalStatServerIP))
{
ERRLOG2(g_Log, "StatServer Setup Error : 1ST_IP %s, 2ND_IP %s",
szGlobalStatServerIP, szLocalStatServerIP);
return false;
}
// 한국 글로벌 통계서버 연결
GET_MULTI_DISPATCH(lpGlobalStatDispatch, inet_addr(szGlobalStatServerIP),
CStatServerMultiDispatch, CStatServerMultiDispatch::GetDispatchTable());
if((NULL == lpGlobalStatDispatch) && (1 == dwSendToGlobalStatServer))
{
if(!lpIOCP->Connect(m_lpStatServerSessionPolicy,
szGlobalStatServerIP, CServerSetup::StatServerManageServerListen))
{
ERRLOG2(g_Log, "Failed to connect StatServer_1st - IP(Port): %s(%d)",
szGlobalStatServerIP, CServerSetup::StatServerManageServerListen);
}
}
// 각 국가별 로컬 통계서버 연결
GET_MULTI_DISPATCH(lpLocalStatDispatch, inet_addr(szLocalStatServerIP),
CStatServerMultiDispatch, CStatServerMultiDispatch::GetDispatchTable());
if((NULL == lpLocalStatDispatch) && (1 == dwSendToLocalStatServer))
{
if(!lpIOCP->Connect(m_lpStatServerSessionPolicy,
szLocalStatServerIP, CServerSetup::StatServerManageServerListen))
{
ERRLOG2(g_Log, "Failed to connect StatServer_2nd - IP(Port): %s(%d)",
szLocalStatServerIP, CServerSetup::StatServerManageServerListen);
}
}
}
return true;
}

View File

@@ -0,0 +1,41 @@
#ifndef _RYL_GM_NETWORK_MANAGE_SERVER_H_
#define _RYL_GM_NETWORK_MANAGE_SERVER_H_
#include <Utility/ServerAppFramework/ServerWindowFramework.h>
// forward decl.
class CBuffer;
class CSessionPolicy;
class CCommandQueueThread;
class CManageServer : public CServerWindowFramework
{
public:
static CManageServer& GetInstance();
void UpdateConsole();
bool ConnectToStatServer();
private:
CManageServer();
virtual ~CManageServer();
virtual bool ApplicationSpecificInit(const TCHAR* szCmdLine);
bool InitializeMsgProc();
bool InitializeCommand();
CSessionPolicy* m_lpServerSessionPolicy;
CSessionPolicy* m_lpToolSessionPolicy;
CSessionPolicy* m_lpStatServerSessionPolicy;
CCommandQueueThread* m_lpCommandQueueThread;
//CBuffer* m_lpMyBuffer;
};
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -0,0 +1,144 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Çѱ¹¾î resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
#ifdef _WIN32
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
#pragma code_page(949)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_MANAGESERVER ICON "ManageServer.ico"
IDI_SMALL ICON "small.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDC_MANAGESERVER MENU
BEGIN
POPUP "Menu"
BEGIN
POPUP "Console(&C)"
BEGIN
MENUITEM "Open Console(&O)", ID_MENU_OPENCONSOLE
MENUITEM "Close Console(&C)", ID_MENU_CLOSECONSOLE
END
MENUITEM SEPARATOR
MENUITEM "Connect To StatServer(&S)", ID_MENU_CONNECTTOSTATSERVER
MENUITEM SEPARATOR
MENUITEM "Flush(&F)", ID_MENU_FLUSH
MENUITEM "Reload Setup(&R)", ID_MENU_RELOADSETUP
MENUITEM SEPARATOR
MENUITEM "Exit(&E)", IDM_EXIT
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDC_MANAGESERVER ACCELERATORS
BEGIN
"?", IDM_ABOUT, ASCII, ALT
"/", IDM_ABOUT, ASCII, ALT
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOGEX 22, 17, 196, 45
STYLE DS_SETFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "ManagerServer Info."
FONT 9, "System", 0, 0, 0x0
BEGIN
ICON IDI_MANAGESERVER,IDC_MYICON,14,11,16,16
LTEXT "ManageServer ¹öÀü 1.0",IDC_STATIC,49,10,79,8,
SS_NOPREFIX
LTEXT "Copyright (C) 2004",IDC_STATIC,49,20,61,8
DEFPUSHBUTTON "OK",IDOK,147,9,44,11,WS_GROUP
END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""windows.h""\r\n"
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE
BEGIN
IDS_APP_TITLE "ManageServer"
IDC_MANAGESERVER "MANAGESERVER"
END
#endif // Çѱ¹¾î resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="ks_c_5601-1987"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="ManageServer"
ProjectGUID="{3D232350-0138-4B1C-88F1-D26747CB01EA}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../Executable/$(ConfigurationName)"
IntermediateDirectory="../Intermediate/$(ProjectName)/$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="./;../;../../RylServerProject/BaseLibrary;../../RylServerProject/RylServerLibrary;../ManageLibrary"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="FALSE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/ManageServer.exe"
LinkIncremental="2"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/ManageServer.pdb"
SubSystem="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../Executable/$(ConfigurationName)"
IntermediateDirectory="../Intermediate/$(ProjectName)/$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="./;../;../../RylServerProject/BaseLibrary;../../RylServerProject/RylServerLibrary;../ManageLibrary"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="FALSE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/ManageServer.exe"
LinkIncremental="1"
GenerateDebugInformation="TRUE"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="소스 파일"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
<File
RelativePath=".\ManageMsgProcess.cpp">
</File>
<File
RelativePath=".\ManageServer.cpp">
</File>
<File
RelativePath=".\ManageServerCommand.cpp">
</File>
<File
RelativePath=".\stdafx.cpp">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="헤더 파일"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
<File
RelativePath=".\ManageServer.h">
</File>
<File
RelativePath=".\Resource.h">
</File>
<File
RelativePath=".\stdafx.h">
</File>
</Filter>
<Filter
Name="리소스 파일"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
<File
RelativePath=".\ManageServer.ico">
</File>
<File
RelativePath=".\ManageServer.rc">
</File>
<File
RelativePath=".\small.ico">
</File>
</Filter>
<File
RelativePath=".\ReadMe.txt">
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,51 @@
#include "stdafx.h"
#include "ManageServer.h"
#include <Log/ServerLog.h>
#include <Utility/ServerAppFrameWork/ConsoleWindow/ConsoleCMDFactory.h>
#include <ServerManage/ManageClientManager.h>
#include <UserManage/UserStatistics.h>
class CCMDPrintLog : public CConsoleCMDSingleton<CCMDPrintLog>
{
protected:
virtual bool DoProcess()
{
SERLOG0(g_Log, "Flush log.");
SERLOG0(g_SessionLog, "Flush log");
return true;
}
};
class CCMDReloadSetup : public CConsoleCMDSingleton<CCMDReloadSetup>
{
protected:
virtual bool DoProcess()
{
CManageClientManager::GetInstance().ReloadRunInfo();
CUserStatistics::GetInstance().Load();
return true;
}
};
bool CManageServer::InitializeCommand()
{
#define INIT_COMMAND_FAILED(detail) TEXT("Command create failed - "##detail)
#define ADD_COMMAND(cmdstring, cmdobject, errmsg_val) \
if(0 == (errmsg_val) && !GetCommandFactory()->AddCommand(cmdstring, new cmdobject)) { \
(errmsg_val) = INIT_COMMAND_FAILED(cmdstring); }
const TCHAR* szErrorMessage = 0;
ADD_COMMAND("flush", CCMDPrintLog, szErrorMessage);
ADD_COMMAND("reload", CCMDReloadSetup, szErrorMessage);
if(0 != szErrorMessage)
{
ERRLOG0(g_Log, szErrorMessage);
return false;
};
return true;
}

View File

@@ -0,0 +1,53 @@
========================================================================
Win32 응용 프로그램 : ManageServer 프로젝트 개요
========================================================================
응용 프로그램 마법사에서 이 ManageServer 응용 프로그램을 만들었습니다.
이 파일에는 ManageServer 응용 프로그램을 구성하는 각각의 파일에
들어 있는 요약 설명이 포함되어 있습니다.
ManageServer.vcproj
응용 프로그램 마법사를 사용하여 생성한 VC++ 프로젝트의 기본 프로젝트 파일입니다.
해당 파일을 생성한 Visual C++의 버전 정보를 비롯하여
응용 프로그램 마법사에서 선택한 플랫폼, 구성 및
프로젝트 기능에 대한 정보가 들어 있습니다.
ManageServer.cpp
기본 응용 프로그램 소스 파일입니다.
/////////////////////////////////////////////////////////////////////////////
응용 프로그램 마법사에서 다음 리소스를 만들었습니다.
ManageServer.rc
프로그램에서 사용하는 모든
Microsoft Windows 리소스의 목록입니다. RES 하위 디렉터리에 저장된
아이콘, 비트맵, 및 커서 등이 여기에 포함됩니다. 이 파일은
Microsoft Visual C++에서 직접 편집할 수 있습니다.
Resource.h
새 리소스 ID를 정의하는 표준 헤더 파일입니다.
Microsoft Visual C++에서 이 파일을 읽고 업데이트합니다.
ManageServer.ico
아이콘 파일이며, 응용 프로그램의 아이콘(32x32)으로 사용됩니다.
해당 아이콘은 기본 리소스 파일인 ManageServer.rc에 의해 포함됩니다.
small.ico
아이콘 파일이며, 응용 프로그램 아이콘의 더 작은 버전(16x16)이
들어 있습니다. 해당 아이콘은 기본 리소스 파일인
ManageServer.rc에 의해 포함됩니다.
/////////////////////////////////////////////////////////////////////////////
기타 표준 파일:
StdAfx.h 및 StdAfx.cpp는
ManageServer.pch라는 이름의 PCH(미리 컴파일된 헤더) 파일과
StdAfx.obj라는 이름의 미리 컴파일된 형식 파일을 빌드하는 데 사용됩니다.
/////////////////////////////////////////////////////////////////////////////
기타 참고:
응용 프로그램 마법사에서 사용하는 "TODO:" 주석은 사용자가 추가하거나 사용자 지정해야 하는
소스 코드 부분을 나타냅니다.
/////////////////////////////////////////////////////////////////////////////

View File

@@ -0,0 +1,33 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by ManageServer.rc
//
#define IDC_MYICON 2
#define IDD_MANAGESERVER_DIALOG 102
#define IDS_APP_TITLE 103
#define IDD_ABOUTBOX 103
#define IDM_ABOUT 104
#define IDM_EXIT 105
#define IDI_MANAGESERVER 107
#define IDI_SMALL 108
#define IDC_MANAGESERVER 109
#define IDR_MAINFRAME 128
#define ID_MENU_OPENCONSOLE 32771
#define ID_MENU_CLOSECONSOLE 32772
#define ID_MENU_RELOADSETUP 32773
#define ID_MENU_CONSOLE 32774
#define ID_MENU_CONNECTTOSTATSERVER 32776
#define ID_MENU_FLUSH 32777
#define IDC_STATIC -1
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_COMMAND_VALUE 32778
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 110
#endif
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,8 @@
// stdafx.cpp : 표준 포함 파일만 들어 있는 소스 파일입니다.
// ManageServer.pch는 미리 컴파일된 헤더가 됩니다.
// stdafx.obj에는 미리 컴파일된 형식 정보가 포함됩니다.
#include "stdafx.h"
// TODO: 필요한 추가 헤더는
// 이 파일이 아닌 STDAFX.H에서 참조합니다.

View File

@@ -0,0 +1,18 @@
// stdafx.h : 자주 사용하지만 자주 변경되지는 않는
// 표준 시스템 포함 파일 및 프로젝트 관련 포함 파일이
// 들어 있는 포함 파일입니다.
//
#pragma once
#define WIN32_LEAN_AND_MEAN // 거의 사용되지 않는 내용은 Windows 헤더에서 제외합니다.
// Windows 헤더 파일입니다.
#include <windows.h>
// C의 런타임 헤더 파일입니다.
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
// TODO: 프로그램에 필요한 추가 헤더는 여기에서 참조합니다.