Exemple #1
0
        /// <summary>Parses a packet from a sequence of bytes.</summary>
        public static ref TPacket ParsePacket <TPacket>(Span <byte> data)
            where TPacket : struct, IPacket
        {
            var packet = PacketIdentifier.Get <TPacket>();

            packet.EnsureMatchingHeader(data, Marshal.SizeOf <TPacket>());
            return(ref MemoryMarshal.Cast <byte, TPacket>(data.Slice(packet.PayloadOffset))[0]);
 /// <summary>Registers a new handler for a packet type.</summary>
 protected void RegisterHandler <TPacket>(IPacketHandler <T> handler)
     where TPacket : IPacket
 {
     this.InsertHandlerForPacket(PacketIdentifier.Get <TPacket>(), handler);
 }