Esempio n. 1
0
        protected override void OnSendRawData(Packet pkt, out byte[] toSend)
        {
            if (EventSendData != null)
            {
                DataTransferEventArgs dte = new DataTransferEventArgs(DataTransferEventArgs.TransferType.SendRaw, pkt.Family, pkt.Action, pkt.Data);
                EventSendData(dte);
            }

            pkt.WritePos = 0;
            pkt.AddShort((short)pkt.Length);
            toSend = pkt.Get();
        }
Esempio n. 2
0
        private void _handlePacket(object state)
        {
            Packet           pkt     = (Packet)state;
            FamilyActionPair pair    = new FamilyActionPair(pkt.Family, pkt.Action);
            bool             handled = false;

            if (m_handlers.ContainsKey(pair))
            {
                handled = true;
                m_handlers[pair].InvokeHandler(pkt, IsInGame);
            }

            if (EventReceiveData != null)
            {
                DataTransferEventArgs dte = new DataTransferEventArgs(DataTransferEventArgs.TransferType.Recv, pkt.Family, pkt.Action, pkt.Data)
                {
                    PacketHandled = handled
                };
                EventReceiveData(dte);
            }
        }
Esempio n. 3
0
        protected override void OnSendRawData(Packet pkt, out byte[] toSend)
        {
            if (EventSendData != null)
            {
                DataTransferEventArgs dte = new DataTransferEventArgs(DataTransferEventArgs.TransferType.SendRaw, pkt.Family, pkt.Action, pkt.Data);
                EventSendData(dte);
            }

            pkt.WritePos = 0;
            pkt.AddShort((short)pkt.Length);
            toSend = pkt.Get();
        }
Esempio n. 4
0
        private void _handlePacket(object state)
        {
            Packet pkt = (Packet) state;
            FamilyActionPair pair = new FamilyActionPair(pkt.Family, pkt.Action);
            bool handled = false;
            if (m_handlers.ContainsKey(pair))
            {
                handled = true;
                m_handlers[pair].InvokeHandler(pkt, IsInGame);
            }

            if (EventReceiveData != null)
            {
                DataTransferEventArgs dte = new DataTransferEventArgs(DataTransferEventArgs.TransferType.Recv, pkt.Family, pkt.Action, pkt.Data)
                {
                    PacketHandled = handled
                };
                EventReceiveData(dte);
            }
        }
Esempio n. 5
-1
        protected override void OnSendData(Packet pkt, out byte[] toSend)
        {
            //for debugging: sometimes the server is getting PACKET_INTERNAL from this client
            //I'm not sure why and it happens randomly so this check will allow me to examine
            //	packet contents and the call stack to figure it out
            if (pkt.Family == PacketFamily.Internal)
                throw new ArgumentException("This is an invalid packet!");

            //encode the packet bytes (also prepends seq number: 2 bytes)
            byte[] packetBytes = pkt.Get();
            m_packetProcessor.Encode(ref packetBytes);

            //prepend the 2 bytes of length data to the packet data
            byte[] len = Packet.EncodeNumber(packetBytes.Length, 2);

            toSend = new byte[packetBytes.Length + 2];
            Array.Copy(len, 0, toSend, 0, 2);
            Array.Copy(packetBytes, 0, toSend, 2, packetBytes.Length);

            //at this point, toSend should be 4 bytes longer than the original packet data
            //this includes 2 bytes of len, 2 bytes of seq, and then packet payload

            if (EventSendData != null)
            {
                DataTransferEventArgs dte = new DataTransferEventArgs(DataTransferEventArgs.TransferType.Send, pkt.Family, pkt.Action, pkt.Data);
                EventSendData(dte);
            }
        }