Initialize
Initialize
함수 개요
네트워크 시스템 전체를 초기화합니다. 소켓 라이브러리 로드, 내부 버퍼 할당, 패킷 핸들러 등록 등을 수행하며, 애플리케이션 시작 시 단 한 번 호출되어야 합니다.
시그니처
cpp
bool CNetworkManager::Initialize(const SNetworkConfig& config);
파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
config |
const SNetworkConfig& |
서버 주소, 포트, 버퍼 크기 등 초기화 설정 |
반환값
true- 초기화 성공false- 소켓 라이브러리 로드 실패 또는 버퍼 할당 실패
동작 설명
WSAStartup호출로 Winsock 라이브러리를 초기화합니다.- 송신/수신 링 버퍼를
config.nBufferSize크기로 할당합니다. - 패킷 핸들러 맵을 구성하고 기본 핸들러를 등록합니다.
- 내부 상태를
EConnectionState::Disconnected로 설정합니다.
구현 예시
cpp
bool CNetworkManager::Initialize(const SNetworkConfig& config)
{
// Winsock 초기화
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
LOG_ERROR("WSAStartup failed: %d", WSAGetLastError());
return false;
}
// 버퍼 할당
m_pSendBuffer = new CRingBuffer(config.nBufferSize);
m_pRecvBuffer = new CRingBuffer(config.nBufferSize);
if (!m_pSendBuffer || !m_pRecvBuffer)
{
LOG_ERROR("Failed to allocate network buffers");
return false;
}
// 핸들러 등록
RegisterDefaultHandlers();
m_eState = EConnectionState::Disconnected;
return true;
}
주의사항
- 반드시 애플리케이션 시작 시
CEngine::Initialize()내부에서 호출되어야 합니다. - 중복 호출 시 기존 리소스를 해제하지 않으므로 메모리 누수가 발생할 수 있습니다.
config.nBufferSize는 최소 4096 바이트 이상이어야 합니다.
관련 함수
Shutdown()- 반대 과정, 리소스 해제Connect()- 초기화 이후 서버 연결 시도