Exemplo n.º 1
0
        void Process()
        {
            while (IsThreadRunning)
            {
                //System.Threading.Thread.Sleep(64); //테스트 용
                try
                {
                    var packet = MsgBuffer.Receive();

                    var header = new MsgPackPacketHeadInfo();
                    header.Read(packet.Data);

                    if (PacketHandlerMap.ContainsKey(header.Id))
                    {
                        PacketHandlerMap[header.Id](packet);
                    }
                    else
                    {
                        //System.Diagnostics.Debug.WriteLine("세션 번호 {0}, PacketID {1}, 받은 데이터 크기: {2}", packet.SessionID, packet.PacketID, packet.BodyData.Length);
                    }
                }
                catch (Exception ex)
                {
                    if (IsThreadRunning)
                    {
                        MainServer.MainLogger.Error(ex.ToString());
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void WriteHeaderInfo(PACKETID packetId, byte[] packetData)
        {
            var header = new MsgPackPacketHeadInfo();

            header.TotalSize = (UInt16)packetData.Length;
            header.Id        = (UInt16)packetId;
            header.Type      = 0;
            header.Write(packetData);
        }
Exemplo n.º 3
0
        public static EFBinaryRequestInfo MakeNTFInConnectOrDisConnectClientPacket(bool isConnect, string sessionID)
        {
            var packet = new EFBinaryRequestInfo(null);

            packet.Data = new byte[MsgPackPacketHeadInfo.HeadSize];

            if (isConnect)
            {
                MsgPackPacketHeadInfo.WritePacketId(packet.Data, (UInt16)PACKETID.NTF_IN_CONNECT_CLIENT);
            }
            else
            {
                MsgPackPacketHeadInfo.WritePacketId(packet.Data, (UInt16)PACKETID.NTF_IN_DISCONNECT_CLIENT);
            }

            packet.SessionID = sessionID;
            return(packet);
        }