'------------------------------------------------------------------------------- ' Copyright (c) 2022, Arm Limited and Contributors. All rights reserved. ' ' SPDX-License-Identifier: BSD-3-Clause ' '------------------------------------------------------------------------------- @startuml class rpc_interface { +rpc_status_t {abstract}receive(call_req) } class service_provider { +void init(handlers, num_handlers) +void extend(service_provider) -rpc_status_t receive(call_req) } class block_storage_provider { +void init(block_store) +void regsiter_serializer(encoding, serializer) -rpc_status_t open_handler(call_req) -rpc_status_t close_handler(call_req) -rpc_status_t get_partition_info_handler(call_req) -rpc_status_t read_handler(call_req) -rpc_status_t write_handler(call_req) -rpc_status_t erase_handler(call_req) } class block_store { +int {abstract}open(client_id, uuid, *handle) +int {abstract}close(handle) +int {abstract}get_partition_info(uuid, *partition_info) +int {abstract}read(handle, lba, size, *buffer, *len) +int {abstract}write(handle, lba, *buffer, len) +int {abstract}erase(handle, *lba, num_blocks) } service_provider -up--|> rpc_interface block_storage_provider -up--|> service_provider block_storage_provider --> block_store block_storage_provider --> block_storage_serializer @enduml