Esempio n. 1
0
        public static TransferAck Decode(G2Header root)
        {
            TransferAck ack = new TransferAck();

            G2Header child = new G2Header(root.Data);

            while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD)
            {
                if (child.Name == Packet_Uninitialized)
                {
                    ack.Uninitialized = true;
                }

                if (child.Name == Packet_Error)
                {
                    ack.Error = true;
                }

                if (!G2Protocol.ReadPayload(child))
                {
                    continue;
                }

                switch (child.Name)
                {
                case Packet_FileID:
                    ack.FileID = BitConverter.ToUInt64(child.Data, child.PayloadPos);
                    break;

                case Packet_StartByte:
                    ack.StartByte = CompactNum.ToInt64(child.Data, child.PayloadPos, child.PayloadSize);
                    break;

                case Packet_Bitfield:
                    ack.Bitfield = Utilities.ExtractBytes(child.Data, child.PayloadPos, child.PayloadSize);
                    break;
                }
            }

            return(ack);
        }
Esempio n. 2
0
        public static TransferAck Decode(G2Header root)
        {
            TransferAck ack = new TransferAck();

            G2Header child = new G2Header(root.Data);

            while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD)
            {
                if (child.Name == Packet_Uninitialized)
                    ack.Uninitialized = true;

                if (child.Name == Packet_Error)
                    ack.Error = true;

                if (!G2Protocol.ReadPayload(child))
                    continue;

                switch (child.Name)
                {
                    case Packet_FileID:
                        ack.FileID = BitConverter.ToUInt64(child.Data, child.PayloadPos);
                        break;

                    case Packet_StartByte:
                        ack.StartByte = CompactNum.ToInt64(child.Data, child.PayloadPos, child.PayloadSize);
                        break;

                    case Packet_Bitfield:
                        ack.Bitfield = Utilities.ExtractBytes(child.Data, child.PayloadPos, child.PayloadSize);
                        break;
                }
            }

            return ack;
        }