YunoNetTransport = TCPSession이 헤더 + 바디를 읽어 최종 패킷을 만든 뒤 콜백

YunoNetProtocol = PacketDispatcher가 최종 패킷을 파싱/검증하고 패킷 타입별 핸들러 호출

YunoGame/YunoServer = Transport에서 올라온 패킷을 Protocol Dispacher에 넘김

패킷 생성 = PacketBuilder가 Protocol 규약에 맞는 바이트 배열을 만들어줌

Client >> Server Flow

  1. YunoGame 프로젝트의 Game Logic에서 전달하고 싶은 데이터를 PacketBuilder::Build를 이용해서 패킷을 생성
  2. YunoClientNetwork::SendPacket()으로 전달하면 YunoClientNetwork는 네트워크 스레드에서 TCPClient::Send() 호출
  3. TCPClient는 현재 연결된 TCPSession의 Send()를 사용하여 패킷 송신
  1. TCPServer 내부의 TCPSession이 헤더+바디를 읽어 완성 패킷을 만들고 OnPacket 콜백
  2. TCPServer가 등록된 OnPacket을 통해 YunoServerNetwork로 전달
  3. YunoServerNetwork는 PacketDispatcher::Dispatch()를 호출해 Protocol레이어에 위임
  4. PacketDispatcher가 타입에 맞는 핸들러 호출

Server >> Client Flow

  1. 패킷 핸들링 후 PacketBuilder로 응답 패킷 생성