From 858d1052f2be00834b7632c1bc8fa9cbb7763a24 Mon Sep 17 00:00:00 2001 From: Piotr Sikora Date: Thu, 12 Feb 2026 10:09:38 -0500 Subject: [PATCH 1/3] Add support for multiple key-value stores. Signed-off-by: Piotr Sikora --- abi-versions/vNEXT/README.md | 43 ++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/abi-versions/vNEXT/README.md b/abi-versions/vNEXT/README.md index 1a0f9be..f59b584 100644 --- a/abi-versions/vNEXT/README.md +++ b/abi-versions/vNEXT/README.md @@ -1471,6 +1471,33 @@ gRPC status message can be retrieved using [`proxy_get_status`]. ### Functions exposed by the host +#### `proxy_open_kvstore` + +* params: + - `i32 (const char*) kvstore_name_data` + - `i32 (size_t) kvstore_name_size` + - `i32 (bool) create_if_not_exist` + - `i32 (uint32_t*) return_kvstore_id` +* returns: + - `i32 (`[`proxy_status_t`]`) status` + +Opens named key-value store (`kvstore_name_data`, `kvstore_name_size`). + +If `create_if_not_exist` is `true` and there is no shared key-value store with +that name, then a new store will be created. + +Key's value can be set using `proxy_set_shared_data` and retrieved using +`proxy_get_shared_data` from the key-value store using returned unique key-value +store identifier (`return_kvstore_id`). + +Returned `status` value is: +- `OK` on success. +- `NOT_FOUND` when `create_if_not_exist` is `false` and no shared key-value + store with the given name exists. +- `INVALID_MEMORY_ACCESS` when `kvstore_name_data`, `kvstore_name_size` + and/or `return_kvstore_id` point to invalid memory address. + + #### `proxy_set_shared_data` * params: @@ -1526,6 +1553,20 @@ Returned `status` value is: point to invalid memory address. +#### `proxy_delete_kvstore` + +* params: + - `i32 (uint32_t) kvstore_id` +* returns: + - `i32 (`[`proxy_status_t`]`) status` + +Deletes previously created shared key-value store (`kvstore_id`). + +Returned `status` value is: +- `OK` on success. +- `UNKNOWN_RESOURCE_ID` for unknown `kvstore_id`. + + ## Shared Queues > **Note** @@ -2183,8 +2224,10 @@ changes to unrelated connections/requests. [`proxy_on_grpc_receive`]: #proxy_on_grpc_receive [`proxy_on_grpc_receive_trailing_metadata`]: #proxy_on_grpc_receive_trailing_metadata [`proxy_on_grpc_close`]: #proxy_on_grpc_close +[`proxy_open_kvstore`]: #proxy_open_kvstore [`proxy_set_shared_data`]: #proxy_set_shared_data [`proxy_get_shared_data`]: #proxy_get_shared_data +[`proxy_delete_kvstore`]: #proxy_delete_kvstore [`proxy_register_shared_queue`]: #proxy_register_shared_queue [`proxy_resolve_shared_queue`]: #proxy_resolve_shared_queue [`proxy_enqueue_shared_queue`]: #proxy_enqueue_shared_queue From 83bd2218b5893fe0e0dbf34709a27d1aba64a081 Mon Sep 17 00:00:00 2001 From: Piotr Sikora Date: Tue, 11 Aug 2026 05:34:46 -0400 Subject: [PATCH 2/3] review: style. Signed-off-by: Piotr Sikora --- abi-versions/vNEXT/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abi-versions/vNEXT/README.md b/abi-versions/vNEXT/README.md index f59b584..81fe0d5 100644 --- a/abi-versions/vNEXT/README.md +++ b/abi-versions/vNEXT/README.md @@ -1484,7 +1484,7 @@ gRPC status message can be retrieved using [`proxy_get_status`]. Opens named key-value store (`kvstore_name_data`, `kvstore_name_size`). If `create_if_not_exist` is `true` and there is no shared key-value store with -that name, then a new store will be created. +the given name, then a new store will be created. Key's value can be set using `proxy_set_shared_data` and retrieved using `proxy_get_shared_data` from the key-value store using returned unique key-value From 0354f5820a10cefd8bf2742160da6d6d7078d12a Mon Sep 17 00:00:00 2001 From: Piotr Sikora Date: Tue, 11 Aug 2026 05:37:04 -0400 Subject: [PATCH 3/3] review: add `CREATED`. Signed-off-by: Piotr Sikora --- abi-versions/vNEXT/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/abi-versions/vNEXT/README.md b/abi-versions/vNEXT/README.md index 81fe0d5..7ca8a3f 100644 --- a/abi-versions/vNEXT/README.md +++ b/abi-versions/vNEXT/README.md @@ -1491,7 +1491,8 @@ Key's value can be set using `proxy_set_shared_data` and retrieved using store identifier (`return_kvstore_id`). Returned `status` value is: -- `OK` on success. +- `OK` on success when opening existing key-value store. +- `CREATED` on success when a key-value store with the given name was created. - `NOT_FOUND` when `create_if_not_exist` is `false` and no shared key-value store with the given name exists. - `INVALID_MEMORY_ACCESS` when `kvstore_name_data`, `kvstore_name_size` @@ -2089,6 +2090,7 @@ changes to unrelated connections/requests. - `INTERNAL_FAILURE` = `10` - `UNIMPLEMENTED` = `12` - `UNKNOWN_RESOURCE_ID` = `13` +- `CREATED` = `14` #### `proxy_action_t`