public void RegisterPacketHandler <TPacket>(PacketId packetId, IPacketQueueHandler <TPacket> handler) where TPacket : Packet, new() { if (!this.registeredPacketHandlerActions.ContainsKey(packetId)) { this.registeredPacketHandlerActions[packetId] = new(); } var pool = new PacketPool <TPacket>(); this.registeredPacketHandlerActions[packetId].Add((client, data) => { var packet = pool.GetPacket(); packet.Read(data); handler.EnqueuePacket(client, packet); }); handler.PacketHandled += (packet) => pool.ReturnPacket(packet); }
public void RegisterPacketHandler <T>(PacketId packetId, IPacketQueueHandler <T> queueHandler) where T : Packet, new() => this.packetReducer.RegisterPacketHandler(packetId, queueHandler);