Files
2022-10-26 12:25:11 +08:00

88 lines
3.8 KiB
C++

// 종합솔루션.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//
#include "stdafx.h"
#include <PacketHandler/PacketHandler.h>
//////////////////////////////////////////////////////////////////////////
static void ReadIOCPDescFromFile(const char szSectionName[], IOHANDLER_DESC & desc, char * ini);
static void GetIOHANDLER_DESC_INFO(sConfigureNetwork* pINFO);
//------------------------------------------------------------------------------------------------
// 클라이언트 콜백
//------------------------------------------------------------------------------------------------
static NetworkObject* CreateClientSideAcceptedObject();
static void DestroyClientSideAcceptedObject(NetworkObject* pNetworkObject);
static void DestroyClientSideConnectedObject(NetworkObject* pNetworkObject);
DECLARE_BASE_WISE_STEP_FUNCTION()
{
sConfigureNetwork* pINFO = Manipulater::GetNetworkArguments();
IOHANDLER_DESC& rDESC = pINFO->InfoIOHANDLER_DESC;
GetIOHANDLER_DESC_INFO(pINFO);
IOCPServer* pIOCPServer = new IOCPServer();
pIOCPServer->Init(&rDESC, 1);
Manipulater::IOCPServerREF() = pIOCPServer;
PacketHandler::RegisterHandler();
PACKET_CONTROL::SetShowPacketStream(TRUE);
};
REGISTER_STEP_HANDLER_BASE(eWISE_ROUTINES_INIT_NETWORK);
//------------------------------------------------------------------------------------------------
// 클라이언트 콜백
//------------------------------------------------------------------------------------------------
static NetworkObject* CreateClientSideAcceptedObject()
{
ASSERT(!"여기에 들어오는 것은 뭐양?");
return NULL;
}
static void DestroyClientSideAcceptedObject(NetworkObject* pNetworkObject)
{
ASSERT(!"여기에 들어오는 것은 뭐양?");
}
static void DestroyClientSideConnectedObject(NetworkObject* pNetworkObject)
{
}
//////////////////////////////////////////////////////////////////////////
static void GetIOHANDLER_DESC_INFO(sConfigureNetwork* pINFO)
{
IOHANDLER_DESC& rDESC = pINFO->InfoIOHANDLER_DESC;
__READ_CONFIG_STRING_IP(pINFO->strLocalIP.GetBUFFER(), "SERVER_IOHANDLER", "IP", NULL, Manipulater::CONFIG_NETWORK_FILENAME);
pINFO->strLocalIP.MakeSafeString();
__READ_CONFIG_NUMBER(pINFO->wLocalListenPort, "SERVER_IOHANDLER", "PORT", 0, Manipulater::CONFIG_NETWORK_FILENAME);
__READ_CONFIG_STRING_IP(pINFO->strLoginFrontIP.GetBUFFER(), "LOGIN_FRONT_INFO", "IP", NULL, Manipulater::CONFIG_NETWORK_FILENAME);
pINFO->strLoginFrontIP.MakeSafeString();
__READ_CONFIG_NUMBER(pINFO->wLoginFrontPort, "LOGIN_FRONT_INFO", "PORT", 0, Manipulater::CONFIG_NETWORK_FILENAME);
rDESC.dwIoHandlerKey = CLIENT_IOHANDLER;
ReadIOCPDescFromFile("CLIENT_IOHANDLER", rDESC, (CHAR*)Manipulater::CONFIG_NETWORK_FILENAME);
rDESC.fnCreateAcceptedObject = CreateClientSideAcceptedObject;
rDESC.fnDestroyAcceptedObject = DestroyClientSideAcceptedObject;
rDESC.fnDestroyConnectedObject = DestroyClientSideConnectedObject;
}
static void ReadIOCPDescFromFile(const CHAR szSectionName[], IOHANDLER_DESC& rDESC, CHAR* configfile)
{
__READ_CONFIG_NUMBER(rDESC.dwMaxAcceptSession, szSectionName, "MAX_ACCEPT_SESSION", 0, configfile);
__READ_CONFIG_NUMBER(rDESC.dwMaxConnectSession, szSectionName, "MAX_CONNECT_SESSION", 0, configfile);
__READ_CONFIG_NUMBER(rDESC.dwSendBufferSize, szSectionName, "SEND_BUFFER_SIZE", 0, configfile);
__READ_CONFIG_NUMBER(rDESC.dwRecvBufferSize, szSectionName, "RECV_BUFFER_SIZE", 0, configfile);
__READ_CONFIG_NUMBER(rDESC.dwMaxPacketSize, szSectionName, "MAX_PACKET_SIZE", 0, configfile);
__READ_CONFIG_NUMBER(rDESC.dwTimeOut, szSectionName, "TIME_OUT", 0, configfile);
__READ_CONFIG_NUMBER(rDESC.dwNumberOfAcceptThreads, szSectionName, "NUMBER_OF_ACCEPT_THREADS", 0, configfile);
__READ_CONFIG_NUMBER(rDESC.dwNumberOfConnectThreads, szSectionName, "NUMBER_OF_CONNECT_THREADS", 0, configfile);
__READ_CONFIG_NUMBER(rDESC.dwNumberOfIoThreads, szSectionName, "NUMBER_OF_IO_THREADS", 0, configfile);
}