/// <summary> /// 헤더 수신 /// </summary> /// <returns></returns> public Header Receive() { byte[] head = new byte[Header.HeaderLength]; _socket.Receive(head, Header.HeaderLength, SocketFlags.None); Header header = JsonManager.BytesToObject <Header>(head); return(header); }
/// <summary> /// 작업큐로부터 꺼내 작업 수행 /// </summary> private void Service() { if (_serviceQueue.Count == 0) { return; } OriginPacket originPacket; lock (_locker) { originPacket = _serviceQueue.Dequeue(); } Header header = originPacket.Header; byte[] data = originPacket.Data; Service service = null; Packet packet; switch (header.MsgType) { case Protocol.Register: packet = JsonManager.BytesToObject <ReceivingRegisterPacket>(data); service = new RegisterService(packet); break; case Protocol.Login: packet = JsonManager.BytesToObject <ReceivingLoginPacket>(data); service = new LoginService(packet); break; case Protocol.Lobby: packet = JsonManager.BytesToObject <ReceivingLobbyPacket>(data); service = new LobbyService(packet); break; case Protocol.LobbyChat: packet = JsonManager.BytesToObject <ReceivingChatPacket>(data); service = new LobbyChatService(packet); break; case Protocol.CreateRoom: packet = JsonManager.BytesToObject <ReceivingCreateRoomPacket>(data); service = new CreateRoomService(packet); break; case Protocol.EnterRoom: packet = JsonManager.BytesToObject <ReceivingEnterRoomPacket>(data); service = new EnterRoomService(packet); break; } if (service != null) { service.Execute(); } }