'Reads a buffer on the client and sends it to the server.'

def Run(self, args):

    if (args.length > constants.CLIENT_MAX_BUFFER_SIZE):
        raise RuntimeError('Can    not    read    buffers    this    large.')
    data = vfs.ReadVFS(args.pathspec, args.offset, args.length, progress_callback=self.Progress)
    result = rdf_protodict.DataBlob(data=zlib.compress(data), compression=rdf_protodict.DataBlob.CompressionType.ZCOMPRESSION)
    digest = hashlib.sha256(data).digest()
    self.ChargeBytesToSession(len(data))
    self.grr_worker.SendReply(result, session_id=rdfvalue.SessionID(flow_name='TransferStore'))
    self.SendReply(rdf_client.BufferReference(offset=args.offset, length=len(data), data=digest))
