Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 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();
 }