Beispiel #1
0
def SendChunkToDataserver(args):
    address, cchunk = args
    print(cchunk.ChunkId, address)

    channel = grpc.insecure_channel(address)
    stub = DataForClient_pb2_grpc.DFCStub(channel)
    metadata = DataForClient_pb2.MetaData(ChunkSize=cchunk.ChunkSize,
                                          ChunkId=cchunk.getChunkId(),
                                          inFID=cchunk.getFileID(),
                                          offset=cchunk.getOffset(),
                                          StoreDID=cchunk.getDataserverID())
    request = DataForClient_pb2.uploadChunkRequest(metadata=metadata,
                                                   chunk=cchunk.getContent())

    response = stub.uploadChunk(request)
    channel.close()
    return response.Msg
Beispiel #2
0
 def copyChunkBetweenDataServer(self, request, context):
     cid = request.CID
     address = request.copyip + ':' + str(request.copyport)
     cchunk = StoreManager.StoreManager.get(cid)
     cchunk.setCID(request.copycid)
     channel = grpc.insecure_channel(address)
     stub = DataForClient_pb2_grpc.DFCStub(channel)
     metadata = DataForClient_pb2.MetaData(
         ChunkSize=cchunk.ChunkSize,
         ChunkId=cchunk.getChunkId(),
         inFID=cchunk.getFileID(),
         offset=cchunk.getOffset(),
         StoreDID=cchunk.getDataserverID())
     package = DataForClient_pb2.copyChunkRequest(metadata=metadata,
                                                  chunk=cchunk.getContent())
     answer = stub.copyChunk(package)
     channel.close()
     if answer.Msg == 'ok':
         response = DataForMaster_pb2.ACK1(feedback=True)
     else:
         response = DataForMaster_pb2.ACK1(feedback=False)
     return response