public void Deserialize(byte[] payload, SerializablePacket packet) { if (payload == null) { throw new ArgumentNullException(nameof(payload)); } if (packet == null) { throw new ArgumentNullException(nameof(packet)); } using var reader = new GameBinaryReader(payload); OnDeserialize(reader, _byType[packet.GetType()], packet); packet.OnDeserialize(this); }
public void Deserialize(byte[] buffer, int index, int count, SerializablePacket packet) { if (packet == null) { throw new ArgumentNullException(nameof(packet)); } if (!_byType.TryGetValue(packet.GetType(), out var info)) { throw new UnmappedMessageException(); } using var reader = new GameBinaryReader(buffer, index, count); OnDeserialize(reader, info, packet); packet.OnDeserialize(this); }
public byte[] Serialize(SerializablePacket packet) { if (packet == null) { throw new ArgumentNullException(nameof(packet)); } if (!_byType.TryGetValue(packet.GetType(), out var info)) { throw new UnmappedMessageException(); } packet.OnSerialize(this); using var writer = new GameBinaryWriter(); OnSerialize(writer, info, packet); return(writer.ToArray()); }
protected override void OnDeserialize(GameBinaryReader reader, PacketInfo info, SerializablePacket packet) { _deserializers[info](reader, packet); }
protected override void OnSerialize(GameBinaryWriter writer, PacketInfo info, SerializablePacket packet) { _serializers[info](writer, packet); }
protected abstract void OnDeserialize(GameBinaryReader reader, PacketInfo info, SerializablePacket packet);
protected abstract void OnSerialize(GameBinaryWriter writer, PacketInfo info, SerializablePacket packet);
protected override void OnSerialize(GameBinaryWriter writer, PacketInfo info, SerializablePacket packet) { SerializeObject(writer, packet); }