void ProcessReadChunk() { RequestReadChunk request = RequestReadChunk.Deserialize(ProtocolParser.ReadBytes(input)); ReplyReadChunk reply = new ReplyReadChunk(); Chunk c = localRepo.ReadChunk(ChunkHash.FromHashBytes(request.ChunkHash)); reply.ChunkData = c.Data; ProtocolParser.WriteBytes(output, ReplyReadChunk.SerializeToBytes(reply)); }
public override Chunk ReadChunk(ChunkHash chunkHash) { RequestReadChunk msg = new RequestReadChunk(); msg.ChunkHash = chunkHash.bytes; SendMessage(msg); ReplyReadChunk reply = ReplyReadChunk.Deserialize(ProtocolParser.ReadBytes(input)); Chunk c = new Chunk(reply.ChunkData); //Verify Hash if (c.ChunkHash.Equals(chunkHash) == false) { throw new InvalidDataException("Hash mismatch: " + chunkHash); } return(c); }
static byte[] GetMessageBytes(IPipeMessage message) { if (message is RequestCustomHash) { return(RequestCustomHash.SerializeToBytes((RequestCustomHash)message)); } if (message is RequestMessageList) { return(RequestMessageList.SerializeToBytes((RequestMessageList)message)); } if (message is RequestReadChunk) { return(RequestReadChunk.SerializeToBytes((RequestReadChunk)message)); } if (message is RequestStoreMessage) { return(RequestStoreMessage.SerializeToBytes((RequestStoreMessage)message)); } if (message is RequestWriteChunk) { return(RequestWriteChunk.SerializeToBytes((RequestWriteChunk)message)); } throw new NotImplementedException(); }