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(); }
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); } }
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(); }
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); } }
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); } }