示例#1
0
 public static void EncodeInventoryPayload(Stream stream, InventoryPayload invPayload)
 {
     using (var writer = new BinaryWriter(stream, Encoding.ASCII, leaveOpen: true))
     {
         writer.WriteList(invPayload.InventoryVectors, invVector => EncodeInventoryVector(stream, invVector));
     }
 }
示例#2
0
 public static byte[] EncodeInventoryPayload(InventoryPayload invPayload)
 {
     using (var stream = new MemoryStream())
     {
         EncodeInventoryPayload(stream, invPayload);
         return(stream.ToArray());
     }
 }
示例#3
0
        private void HandleGetData(InventoryPayload payload)
        {
            var handler = this.OnGetData;

            if (handler != null)
            {
                handler(this, payload);
            }
        }
示例#4
0
        private void OnGetData(Peer peer, InventoryPayload payload)
        {
            foreach (var invVector in payload.InventoryVectors)
            {
                switch (invVector.Type)
                {
                case InventoryVector.TYPE_MESSAGE_BLOCK:
                    //Block block;
                    //if (this.blockCache.TryGetValue(invVector.Hash, out block))
                    //{
                    //    peer.Sender.SendBlock(block).Forget();
                    //}
                    break;

                case InventoryVector.TYPE_MESSAGE_TRANSACTION:
                    //TODO
                    break;
                }
            }
        }
示例#5
0
        private void OnGetData(RemoteNode remoteNode, InventoryPayload payload)
        {
            foreach (var invVector in payload.InventoryVectors)
            {
                switch (invVector.Type)
                {
                case InventoryVector.TYPE_MESSAGE_BLOCK:
                    Block block;
                    if (this.blockCache.TryGetValue(invVector.Hash, out block))
                    {
                        //remoteNode.Sender.SendBlock(block).Forget();
                    }
                    break;

                case InventoryVector.TYPE_MESSAGE_TRANSACTION:
                    Transaction transaction;
                    if (this.transactionCache.TryGetValue(invVector.Hash, out transaction))
                    {
                        remoteNode.Sender.SendTransaction(transaction).Forget();
                    }
                    break;
                }
            }
        }
示例#6
0
 public static byte[] EncodeInventoryPayload(InventoryPayload invPayload)
 {
     using (var stream = new MemoryStream())
     using (var writer = new BinaryWriter(stream))
     {
         EncodeInventoryPayload(writer, invPayload);
         return stream.ToArray();
     }
 }
示例#7
0
 public static void EncodeInventoryPayload(BinaryWriter writer, InventoryPayload invPayload)
 {
     writer.WriteList(invPayload.InventoryVectors, invVector => EncodeInventoryVector(writer, invVector));
 }