def upload_chunk_stream(self, request_iterator, context): print("WHOLE MESH DICT =", globals.whole_mesh_dict) hash_id = "" chunk_size = 0 number_of_chunks = 0 is_replica = "True" for key, value in context.invocation_metadata(): if key == "key-hash-id": hash_id = value elif key == "key-chunk-size": chunk_size = int(value) elif key == "key-number-of-chunks": number_of_chunks = int(value) elif key == "key-is-replica": is_replica = str(value) assert hash_id != "" assert chunk_size != 0 assert number_of_chunks != 0 assert is_replica != "" success = self.memory_manager.put_data(request_iterator, hash_id, chunk_size, number_of_chunks, False) if is_replica != "False": replMetadata = { 'key-hash-id': hash_id, 'key-chunk-size': str(chunk_size), 'key-number-of-chunks': str(number_of_chunks), 'key-is-replica': is_replica } message_stream_of_chunk_bytes = self.memory_manager.get_data(hash_id) Thread(target=self.replicate_data, args=(message_stream_of_chunk_bytes, replMetadata)).start() return storage_pb2.ResponseBoolean(success=success)
def is_hash_id_in_memory(self, request, context): """ :param request: storage_pb2.HashIdRequest(hash_id=hash_id) :param context: None :return: boolean as storage_pb2.ResponseBoolean """ hash_exists = self.memory_manager.hash_id_exists(request.hash_id) return storage_pb2.ResponseBoolean(success=hash_exists)
def upload_single_chunk(self, request_chunk, context): """ :param request_chunk: single storage_pb2.ChunkRequest :param context: must include 'key-hash-id' and 'key-chunk-size' in metadata :return: boolean as storage_pb2.ResponseBoolean """ hash_id = "" chunk_size = 0 for key, value in context.invocation_metadata(): if key == "key-hash-id": hash_id = value elif key == "key-chunk-size": chunk_size = int(value) assert hash_id != "" assert chunk_size != 0 success = self.memory_manager.put_data(request_chunk, hash_id, chunk_size, 1, True) return storage_pb2.ResponseBoolean(success=success)
def upload_chunk_stream(self, request_iterator, context): hash_id = "" chunk_size = 0 number_of_chunks = 0 for key, value in context.invocation_metadata(): if key == "key-hash-id": hash_id = value elif key == "key-chunk-size": chunk_size = int(value) elif key == "key-number-of-chunks": number_of_chunks = int(value) assert hash_id != "" assert chunk_size != 0 assert number_of_chunks != 0 success = self.memory_manager.put_data(request_iterator, hash_id, chunk_size, number_of_chunks, False) return storage_pb2.ResponseBoolean(success=success)