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); }
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; }