Esempio n. 1
0
        internal BlockResponse RequestBlocksAsync(uint startBlock, uint quantity, uint?requestId = null)
        {
            BlockRequest br = new BlockRequest
            {
                StartBlock  = startBlock,
                BlockNumber = quantity,
                Operation   = NetOperationType.Blocks
            };

            if (requestId != null)
            {
                br.RequestId = requestId.Value;
            }

            using (MemoryStream ms = new MemoryStream())
            {
                br.SaveToStream(ms);
                ms.Position = 0;
                SendRaw(ms);
            }

            WaitForData(10000);
            using (var rs = new MemoryStream())
            {
                var rp = ReadResponseSync(rs);
                switch (rp.Operation)
                {
                case NetOperationType.Blocks:
                    return(new BlockResponse(rs, rp));

                default:
                    throw new InvalidDataException();
                }
            }
        }
Esempio n. 2
0
        internal void RequestBlockChain(uint startBlock, uint quantity, uint?requestId = null, NetOperationType netOperationType = NetOperationType.Blocks)
        {
            BlockRequest br = new BlockRequest
            {
                StartBlock  = startBlock,
                BlockNumber = quantity,
                Operation   = netOperationType
            };

            if (requestId != null)
            {
                br.RequestId = requestId.Value;
            }
            using (MemoryStream ms = new MemoryStream())
            {
                br.SaveToStream(ms);
                ms.Position = 0;
                SendRaw(ms);
            }
        }