Initialize

함수 개요

네트워크 시스템 전체를 초기화합니다. 소켓 라이브러리 로드, 내부 버퍼 할당, 패킷 핸들러 등록 등을 수행하며, 애플리케이션 시작 시 단 한 번 호출되어야 합니다.

시그니처

cpp
bool CNetworkManager::Initialize(const SNetworkConfig& config);

파라미터

파라미터 타입 설명
config const SNetworkConfig& 서버 주소, 포트, 버퍼 크기 등 초기화 설정

반환값

  • true - 초기화 성공
  • false - 소켓 라이브러리 로드 실패 또는 버퍼 할당 실패

동작 설명

  1. WSAStartup 호출로 Winsock 라이브러리를 초기화합니다.
  2. 송신/수신 링 버퍼를 config.nBufferSize 크기로 할당합니다.
  3. 패킷 핸들러 맵을 구성하고 기본 핸들러를 등록합니다.
  4. 내부 상태를 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() - 초기화 이후 서버 연결 시도