/// <summary>
        /// 받은 데이터를 처리한다.(주로 서버에서 사용)
        /// </summary>
        /// <param name="packetManager">패킷 매니저</param>
        /// <param name="packetHandlerManager">패킷 핸들러 매니저</param>
        /// <param name="receiveBuffer">데이터가 저장되어 있는 버퍼</param>
        /// <param name="receiveBufferLength">데이터가 저장되어 있는 버퍼의 길이(데이터의 길이)</param>
        /// <returns>성공 유무</returns>
        public override bool Receive(
            IPacketManager packetManager,
            cPacketHandlerManager packetHandlerManager,
            ArraySegment <Byte> receiveBuffer,
            int receiveBufferSize)
        {
            cLogger.Information("encode a received data\r\n");
            string data = Encoding.UTF8.GetString(receiveBuffer.Array, 0, receiveBufferSize);

            data = data.Replace("\0", "");
            data = data.Replace("\\", "");

            cLogger.Information("unmarshal a received data\r\n");
            IPacket packet = Marshaller.Unmarshal(data, packetManager); //AccountID 세팅을 해야 한다 하고라?

            if (null == packet)
            {
                cLogger.Error(
                    "packet is not allocated (account_id: {0}, peer_id: {1}, data: {2}\r\n",
                    PeerId,
                    data);

                return(false);
            }

            cLogger.Information("execute a packet handler\r\n");
            packetHandlerManager.Execute(this, packet);
            cLogger.Information("completed that a received data is executed\r\n");
            return(true);
        }
 /// <summary>
 /// 받은 데이터를 처리한다.(주로 서버에서 사용)
 /// </summary>
 /// <param name="packetManager">패킷 매니저</param>
 /// <param name="packetHandlerManager">패킷 핸들러 매니저</param>
 /// <param name="receiveBuffer">데이터가 저장되어 있는 버퍼</param>
 /// <param name="receiveBufferLength">데이터가 저장되어 있는 버퍼의 길이(데이터의 길이)</param>
 /// <returns>성공 유무</returns>
 public override bool Receive(
     IPacketManager packetManager,
     cPacketHandlerManager packetHandlerManager,
     ArraySegment <Byte> receiveBuffer,
     int receiveBufferLength)
 {
     return(false);
 }
Exemple #3
0
        /// <summary>
        /// 패킷을 추출한다.
        /// </summary>
        /// <param name="packetManager">패킷 매니저</param>
        /// <param name="packetHandlerManager">패킷 핸들러 매니저</param>
        /// <param name="data">추출할 데이터</param>
        /// <returns>성공 유무</returns>
        public bool ExtractPacket(IPacketManager packetManager, cPacketHandlerManager packetHandlerManager, string data)
        {
            //딸랑 packet 가 하는짓은 어떤 패킷 핸들러의 ResultCode 의 값이 success 인지 디시리얼된 값을 가져오는 짓이다.
            IPacket packet = Marshaller.Unmarshal(data, packetManager);

            if (null == packet)
            {
                return(false);
            }
            //그럼 다시 이걸 핸들 메니저의 실행으로 가면
            packetHandlerManager.Execute(this, packet);
            return(true);
        }
 /// <summary>
 /// 버퍼에 저장되어 있는 내용을 처리한다.(주로 클라이언트에서 사용)
 /// </summary>
 /// <param name="packetManager">패킷 매니저</param>
 /// <param name="packetHandlerManager">패킷 핸들러 매니저</param>
 /// <returns>성공 유무</returns>
 public override void Receive(IPacketManager packetManager, cPacketHandlerManager packetHandlerManager)
 {
     lock (ReceivedDataQueueLock)
     {
         for (int loop1 = 0; ReceivedDataQueue.Count > loop1; ++loop1)
         {
             cHTTPData httpData = ReceivedDataQueue.Dequeue();
             if (false == ExtractPacket(packetManager, packetHandlerManager, httpData.Data))
             {
                 //cLogger.Warning("cannot extract packet (data: {0})\r\n", httpData.Data);
                 continue;
             }
         }
     }
 }
Exemple #5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //Peer = new cChatPeer(new cJSONMarshaller(), "ws://localhost:61455/WebSocketDataNoEnc/WebPacketReceiver/Game");
                //Peer = new cChatPeer(new cJSONMarshaller(), "ws://localhost:61455/api/WebPacketReceiver/Chat");
                //Peer = new cChatPeer(new cJSONMarshaller(), "ws://localhost:54427/WebSocketChatNoEnc/WebPacketReceiver");
                Peer = new cChatPeer(new cJSONMarshaller(), "ws://localhost:54427/WebSocketChatNoEnc/PacketReceiver");

                PacketManager = new cPacketManager();
                PacketManager.Add(new cPKTChatLogin());
                PacketManager.Add(new cPKTChatLoginResult());
                PacketManager.Add(new cPKTChatRoomChange());
                PacketManager.Add(new cPKTChatRoomChangeResult());
                PacketManager.Add(new cPKTSay());
                PacketManager.Add(new cPKTSayResult());
                PacketManager.Add(new cPKTSayNotify());
                PacketManager.Add(new cPKTGameLogin());
                PacketManager.Add(new cPKTGameLoginResult());
                PacketManager.Add(new cPKTIdentify());
                PacketManager.Add(new cPKTIdentifyResult());
                PacketManager.Add(new cPKTAccountLoad());
                PacketManager.Add(new cPKTAccountLoadResult());
                PacketManager.Add(new cPKTInit());
                PacketManager.Add(new cPKTInitResult());

                PacketHandlerManager = new cPacketHandlerManager();
                PacketHandlerManager.Add(ePacketId.cPKTChatLoginResult, new cPKTChatLoginResultHandler());
                PacketHandlerManager.Add(ePacketId.cPKTChatRoomChangeResult, new cPKTChatRoomChangeResultHandler());
                PacketHandlerManager.Add(ePacketId.cPKTSayResult, new cPKTSayResultHandler());
                PacketHandlerManager.Add(ePacketId.cPKTSayNotify, new cPKTSayNotifyHandler());

                ReceivedDataQueueTimer          = new System.Timers.Timer(100);
                ReceivedDataQueueTimer.Elapsed += new ElapsedEventHandler(OnReceivedDataQueueTimer);
                ReceivedDataQueueTimer.Enabled  = true;
                ReceivedDataQueueTimer.Start();

                SocketChatLogin_Click();
            }
        }
 /// <summary>
 /// 버퍼에 저장되어 있는 내용을 처리한다.(주로 클라이언트에서 사용)
 /// </summary>
 /// <param name="packetHandlerManager">패킷 핸들러 매니저</param>
 /// <returns>성공 유무</returns>
 public override void Receive(IPacketManager packetManager, cPacketHandlerManager packetHandlerManager)
 {
 }
Exemple #7
0
 /// <summary>
 /// 버퍼에 저장되어 있는 내용을 처리한다.(주로 클라이언트에서 사용)
 /// </summary>
 /// <param name="packetManager">패킷 매니저</param>
 /// <param name="packetHandlerManager">패킷 핸들러 매니저</param>
 /// <returns>성공 유무</returns>
 public abstract void Receive(IPacketManager packetManager, cPacketHandlerManager packetHandlerManager);
Exemple #8
0
 /// <summary>
 /// 받은 데이터를 처리한다.(주로 서버에서 사용)
 /// </summary>
 /// <param name="packetManager">패킷 매니저</param>
 /// <param name="packetHandlerManager">패킷 핸들러 매니저</param>
 /// <param name="receiveBuffer">데이터가 저장되어 있는 버퍼</param>
 /// <param name="receiveBufferLength">데이터가 저장되어 있는 버퍼의 길이(데이터의 길이)</param>
 /// <returns>성공 유무</returns>
 public abstract bool Receive(
     IPacketManager packetManager,
     cPacketHandlerManager packetHandlerManager,
     ArraySegment <Byte> receiveBuffer,
     int receiveBufferLength);