protected Keccak[] DeserializeHashes(IByteBuffer byteBuffer) { NettyRlpStream nettyRlpStream = new NettyRlpStream(byteBuffer); Keccak[] hashes = nettyRlpStream.DecodeArray(itemContext => itemContext.DecodeKeccak()); return(hashes); }
public void Serialize(IByteBuffer byteBuffer, GetBlockHeadersMessage message) { int contentLength = message.StartingBlockHash == null?Rlp.LengthOf(message.StartingBlockNumber) : Rlp.LengthOf(message.StartingBlockHash); contentLength += Rlp.LengthOf(message.MaxHeaders); contentLength += Rlp.LengthOf(message.Skip); contentLength += Rlp.LengthOf(message.Reverse); int totalLength = Rlp.GetSequenceRlpLength(contentLength); RlpStream rlpStream = new NettyRlpStream(byteBuffer); byteBuffer.EnsureWritable(totalLength, true); rlpStream.StartSequence(contentLength); if (message.StartingBlockHash == null) { rlpStream.Encode(message.StartingBlockNumber); } else { rlpStream.Encode(message.StartingBlockHash); } rlpStream.Encode(message.MaxHeaders); rlpStream.Encode(message.Skip); rlpStream.Encode(message.Reverse); }
public void Serialize(IByteBuffer byteBuffer, NewBlockHashesMessage message) { NettyRlpStream nettyRlpStream = new NettyRlpStream(byteBuffer); int contentLength = 0; for (int i = 0; i < message.BlockHashes.Length; i++) { int miniContentLength = Rlp.LengthOf(message.BlockHashes[i].Item1); miniContentLength += Rlp.LengthOf(message.BlockHashes[i].Item2); contentLength += Rlp.GetSequenceRlpLength(miniContentLength); } int totalLength = Rlp.LengthOfSequence(contentLength); byteBuffer.EnsureWritable(totalLength, true); nettyRlpStream.StartSequence(contentLength); for (int i = 0; i < message.BlockHashes.Length; i++) { int miniContentLength = Rlp.LengthOf(message.BlockHashes[i].Item1); miniContentLength += Rlp.LengthOf(message.BlockHashes[i].Item2); nettyRlpStream.StartSequence(miniContentLength); nettyRlpStream.Encode(message.BlockHashes[i].Item1); nettyRlpStream.Encode(message.BlockHashes[i].Item2); } }
public void Serialize(IByteBuffer byteBuffer, NewBlockMessage message) { int contentLength = _blockDecoder.GetLength(message.Block, RlpBehaviors.None) + Rlp.LengthOf(message.TotalDifficulty); RlpStream rlpStream = new NettyRlpStream(byteBuffer); int totalLength = Rlp.LengthOfSequence(contentLength); byteBuffer.EnsureWritable(totalLength, true); rlpStream.StartSequence(contentLength); rlpStream.Encode(message.Block); rlpStream.Encode(message.TotalDifficulty); }
public void Serialize(IByteBuffer byteBuffer, T message) { int length = GetLength(message, out int contentLength); byteBuffer.EnsureWritable(length, true); RlpStream rlpStream = new NettyRlpStream(byteBuffer); rlpStream.StartSequence(contentLength); for (int i = 0; i < message.Hashes.Count; i++) { rlpStream.Encode(message.Hashes[i]); } }
public void Serialize(IByteBuffer byteBuffer, StatusMessage message) { NettyRlpStream rlpStream = new NettyRlpStream(byteBuffer); int contentLength = Rlp.LengthOf(message.ProtocolVersion) + Rlp.LengthOf(message.ChainId) + Rlp.LengthOf(message.TotalDifficulty) + Rlp.LengthOf(message.BestHash) + Rlp.LengthOf(message.GenesisHash); int totalLength = Rlp.LengthOfSequence(contentLength); byteBuffer.EnsureWritable(totalLength); rlpStream.StartSequence(contentLength); rlpStream.Encode(message.ProtocolVersion); rlpStream.Encode(message.ChainId); rlpStream.Encode(message.TotalDifficulty); rlpStream.Encode(message.BestHash); rlpStream.Encode(message.GenesisHash); }
public void Serialize(IByteBuffer byteBuffer, GetBlockBodiesMessage message) { NettyRlpStream nettyRlpStream = new NettyRlpStream(byteBuffer); int contentLength = 0; for (int i = 0; i < message.BlockHashes.Count; i++) { contentLength += Rlp.LengthOf(message.BlockHashes[i]); } int totalLength = Rlp.LengthOfSequence(contentLength); byteBuffer.EnsureWritable(totalLength, true); nettyRlpStream.StartSequence(contentLength); for (int i = 0; i < message.BlockHashes.Count; i++) { nettyRlpStream.Encode(message.BlockHashes[i]); } }
public void Serialize(IByteBuffer byteBuffer, TransactionsMessage message) { NettyRlpStream nettyRlpStream = new NettyRlpStream(byteBuffer); int contentLength = 0; for (int i = 0; i < message.Transactions.Length; i++) { contentLength += _decoder.GetLength(message.Transactions[i], RlpBehaviors.None); } int totalLength = Rlp.LengthOfSequence(contentLength); byteBuffer.EnsureWritable(totalLength, true); nettyRlpStream.StartSequence(contentLength); for (int i = 0; i < message.Transactions.Length; i++) { nettyRlpStream.Encode(message.Transactions[i]); } }
public void Serialize(IByteBuffer byteBuffer, BlockHeadersMessage message) { int contentLength = 0; for (int i = 0; i < message.BlockHeaders.Length; i++) { contentLength += _headerDecoder.GetLength(message.BlockHeaders[i], RlpBehaviors.None); } int length = Rlp.LengthOfSequence(contentLength); byteBuffer.EnsureWritable(length, true); RlpStream rlpStream = new NettyRlpStream(byteBuffer); rlpStream.StartSequence(contentLength); for (int i = 0; i < message.BlockHeaders.Length; i++) { rlpStream.Encode(message.BlockHeaders[i]); } }
public GetBlockHeadersMessage Deserialize(IByteBuffer byteBuffer) { NettyRlpStream rlpStream = new NettyRlpStream(byteBuffer); return(Deserialize(rlpStream)); }
public NewBlockMessage Deserialize(IByteBuffer byteBuffer) { RlpStream rlpStream = new NettyRlpStream(byteBuffer); return(Deserialize(rlpStream)); }
public TransactionsMessage Deserialize(IByteBuffer byteBuffer) { NettyRlpStream rlpStream = new NettyRlpStream(byteBuffer); return(Deserialize(rlpStream)); }
protected Keccak[] DeserializeHashes(IByteBuffer byteBuffer) { NettyRlpStream nettyRlpStream = new NettyRlpStream(byteBuffer); return(DeserializeHashes(nettyRlpStream)); }
public BlockBodiesMessage Deserialize(IByteBuffer byteBuffer) { NettyRlpStream rlpStream = new NettyRlpStream(byteBuffer); return(Deserialize(rlpStream)); }