public virtual void ProcessPacketStream(SocketStateObject state, uint packetId, DataStream packetStream) { Log.ConditionalDebug("Packet: {0} (0x{0:X2})", packetId); if (Handler.Contains(packetId)) { object packet = PacketsRegistry.Deserialize(packetId, packetStream); if (packet != null) { Handler.HandlePacket(packetId, packet); } } }
public void Register(string packetId, FieldBase declaration) { var flags = PacketsRegistry.GetPacketFlags(packetId); var id = PacketsRegistry.ParsePacketId(packetId); var count = 0; foreach (var flag in flags) { count++; PacketsDeclaration[GetKey(flag, id)] = declaration; } if (count == 0) { PacketsDeclaration[GetKey('i', id)] = declaration; PacketsDeclaration[GetKey('o', id)] = declaration; } }
public virtual void Send(uint packetId, object packet) { var cancel = SendHandler.HandlePacket(packetId, packet)?.Cancel ?? false; if (cancel) { return; } var ds = new DataStream { IsLittleEndian = false }; var ok = PacketsRegistry.Serialize(packetId, ds, packet); if (ok) { Send(packetId, ds); SendCompleteHandler.HandlePacket(packetId, packet); } else { Log.Error("Try to send unknown packet {0}", packetId); } }