Example #1
0
        public virtual void ProcessPacketStream(SocketStateObject state, PacketIdentifier packetId, DataStream packetStream)
        {
            if (Handler.Contains(packetId) || CompleteHandler.Contains(packetId))
            {
                GamePacket packet;
                if (!PacketsRegistry.TryGetPacket(packetId, out packet))
                {
                    packet = new BasePacket();
                }

                packet.Deserialize(packetStream);
                var args = Handler.HandlePacket(packetId, packet);
                if (args == null || !args.Cancel)
                {
                    if (args == null)
                    {
                        Send(state, packetId.PacketId, packetStream.Reset());
                    }
                    else
                    {
                        Send(state, packetId, packet);
                    }
                    CompleteHandler.HandlePacket(packetId, packet);
                }
            }
            else
            {
                Send(state, packetId.PacketId, packetStream);
            }
        }