Exemplo n.º 1
0
            /// <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);
            }
Exemplo n.º 2
0
            /// <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();
                }
            }