예제 #1
0
        public override void Decode(byte[] buffer, int offset, int length)
        {
            if (Action != ReadInt(buffer, offset))
            {
                ThrowInvalidActionException();
            }
            TransactionId = ReadInt(buffer, offset + 4);
            Interval      = TimeSpan.FromSeconds(ReadInt(buffer, offset + 8));
            Leechers      = ReadInt(buffer, offset + 12);
            Seeders       = ReadInt(buffer, offset + 16);

            IList <Peer> peers = Peer.FromCompact(buffer, 20);

            Peers.AddRange(peers);
        }
        public override void Decode(ReadOnlySpan <byte> buffer)
        {
            if (Action != ReadInt(ref buffer))
            {
                ThrowInvalidActionException();
            }
            TransactionId = ReadInt(ref buffer);
            Interval      = TimeSpan.FromSeconds(ReadInt(ref buffer));
            Leechers      = ReadInt(ref buffer);
            Seeders       = ReadInt(ref buffer);

            IList <PeerInfo> peers = PeerInfo.FromCompact(buffer);

            Peers.AddRange(peers);
        }