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)
예제 #4
0
    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)