public void Deserialize(byte[] Data)
        {
            List<ProtocolDataType> PDTs = ProtocolPackager.UnPackRaw(Data);
            int cnt = 0;

            Init();

            while (cnt < (int)PDTs.Count)
            {
                ProtocolDataType PDT = PDTs[cnt++];

                if (PDT.NameType == 0)
                {
                    ProtocolPackager.UnpackVarint(PDT, 0, ref TotalRequestedNodes);
                }
                else if (PDT.NameType == 1)
                {
                    byte[] _data = new byte[0];
                    if (ProtocolPackager.UnpackByteVector(PDT, 1, ref _data))
                    {
                        NodeDataEntity nie = new NodeDataEntity();
                        nie.Deserialize(_data);
                        RequestedNodes.Add(nie);
                    }
                }
            }
        }
 public RootDataResponse(ListTreeNode root, LedgerCloseData ledgerCloseData)
 {
     RootHash = root.Hash;
     LeafCount = root.LeafCount;
     LedgerCloseData = ledgerCloseData;
     Children = new NodeDataEntity[16];
     for (int i = 0; i < 16; i++)
     {
         ListTreeNode LTN = root.Children[i];
         if(LTN != null) Children[i] = new NodeDataEntity(LTN);
     }
 }
        public void Deserialize(byte[] Data)
        {
            List<ProtocolDataType> PDTs = ProtocolPackager.UnPackRaw(Data);
            int cnt = 0;

            Init();

            while (cnt < (int)PDTs.Count)
            {
                ProtocolDataType PDT = PDTs[cnt++];

                if (PDT.NameType == 0)
                {
                    byte[] _data0 = new byte[0];
                    ProtocolPackager.UnpackByteVector(PDT, 0, ref _data0);
                    RootHash = new Hash(_data0);
                }
                else if (PDT.NameType == 1)
                {
                    ProtocolPackager.UnpackVarint(PDT, 1, ref LeafCount);
                }
                else if (PDT.NameType == 2)
                {
                    byte[] _data1 = new byte[0];
                    if (ProtocolPackager.UnpackByteVector(PDT, 2, ref _data1))
                    {
                        LedgerCloseData.Deserialize(_data1);
                    }
                }
                else if ((PDT.NameType >= 10) && (PDT.NameType <= 26))
                {
                    byte[] _data2 = new byte[0];
                    if(ProtocolPackager.UnpackByteVector(PDT, PDT.NameType, ref _data2))
                    {
                        NodeDataEntity nd = new NodeDataEntity();
                        nd.Deserialize(_data2);
                        Children[PDT.NameType - 10] = nd;
                    }
                }
            }
        }
 public AllLeafDataRequest(NodeDataEntity ndr)
 {
     this.TotalRequestedLeaves = ndr.LeafCount;
     this.AddressNibbles = ndr.AddressNibbles;
 }
 public void Add(NodeDataEntity entry)
 {
     RequestedNodes.Add(entry);
     TotalRequestedNodes++;
 }