@@ -12,88 +12,112 @@ extern "C"
1212
1313 static const uint32_t CCF_RUST_ABI_VERSION = 1 ;
1414
15- typedef struct ccf_rust_registry ccf_rust_registry;
16- typedef struct ccf_rust_endpoint_context ccf_rust_endpoint_context;
17-
18- typedef struct ccf_rust_slice
15+ struct ccf_rust_registry ;
16+ struct ccf_rust_endpoint_context ;
17+ struct ccf_rust_slice
1918 {
2019 const uint8_t * data;
2120 size_t len;
22- } ccf_rust_slice ;
21+ };
2322
24- typedef enum ccf_rust_result
25- {
26- CCF_RUST_OK = 0 ,
27- CCF_RUST_NOT_FOUND = 1 ,
28- CCF_RUST_INVALID_ARGUMENT = 2 ,
29- CCF_RUST_READ_ONLY = 3 ,
30- CCF_RUST_INTERNAL_ERROR = 4
31- } ccf_rust_result;
32-
33- typedef enum ccf_rust_auth
34- {
35- CCF_RUST_AUTH_NONE = 0 ,
36- CCF_RUST_AUTH_USER_CERT = 1
37- } ccf_rust_auth;
23+ #ifdef __cplusplus
24+ using ccf_rust_result = int32_t ;
25+ using ccf_rust_auth = int32_t ;
26+ using ccf_rust_endpoint_callback =
27+ ccf_rust_result (*)(void * user_data, ccf_rust_endpoint_context* ctx);
28+ using ccf_rust_drop_callback = void (*)(void * user_data);
29+ #else
30+ typedef struct ccf_rust_registry ccf_rust_registry;
31+ typedef struct ccf_rust_endpoint_context ccf_rust_endpoint_context;
32+ typedef struct ccf_rust_slice ccf_rust_slice;
33+ typedef int32_t ccf_rust_result;
34+ typedef int32_t ccf_rust_auth;
35+ typedef ccf_rust_result (*ccf_rust_endpoint_callback)(
36+ void * user_data, ccf_rust_endpoint_context* ctx);
37+ typedef void (*ccf_rust_drop_callback)(void * user_data);
38+ #endif
3839
39- typedef int (*ccf_rust_endpoint_callback)(
40- void * user_data, ccf_rust_endpoint_context* ctx);
41- typedef void (*ccf_rust_drop_callback)(void * user_data);
40+ #ifdef __cplusplus
41+ inline constexpr ccf_rust_result CCF_RUST_OK = 0 ;
42+ inline constexpr ccf_rust_result CCF_RUST_NOT_FOUND = 1 ;
43+ inline constexpr ccf_rust_result CCF_RUST_INVALID_ARGUMENT = 2 ;
44+ inline constexpr ccf_rust_result CCF_RUST_READ_ONLY = 3 ;
45+ inline constexpr ccf_rust_result CCF_RUST_INTERNAL_ERROR = 4 ;
46+
47+ inline constexpr ccf_rust_auth CCF_RUST_AUTH_NONE = 0 ;
48+ inline constexpr ccf_rust_auth CCF_RUST_AUTH_USER_CERT = 1 ;
49+ #else
50+ enum
51+ {
52+ CCF_RUST_OK = 0 ,
53+ CCF_RUST_NOT_FOUND = 1 ,
54+ CCF_RUST_INVALID_ARGUMENT = 2 ,
55+ CCF_RUST_READ_ONLY = 3 ,
56+ CCF_RUST_INTERNAL_ERROR = 4
57+ };
58+
59+ enum
60+ {
61+ CCF_RUST_AUTH_NONE = 0 ,
62+ CCF_RUST_AUTH_USER_CERT = 1
63+ };
64+ #endif
4265
4366 uint32_t ccf_rust_get_abi_version (void );
4467
45- int ccf_rust_register_endpoint (
68+ ccf_rust_result ccf_rust_register_endpoint (
4669 ccf_rust_registry* registry,
4770 ccf_rust_slice path,
4871 ccf_rust_slice method,
4972 ccf_rust_auth auth,
50- int read_only,
73+ int32_t read_only,
5174 ccf_rust_endpoint_callback callback,
5275 ccf_rust_drop_callback drop,
5376 void * user_data);
5477
55- int ccf_rust_request_body (
78+ ccf_rust_result ccf_rust_request_body (
5679 ccf_rust_endpoint_context* ctx, ccf_rust_slice* body);
57- int ccf_rust_request_query (
80+ ccf_rust_result ccf_rust_request_query (
5881 ccf_rust_endpoint_context* ctx, ccf_rust_slice* query);
59- int ccf_rust_request_path_param (
82+ ccf_rust_result ccf_rust_request_path_param (
6083 ccf_rust_endpoint_context* ctx, ccf_rust_slice name, ccf_rust_slice* value);
61- int ccf_rust_request_header (
84+ ccf_rust_result ccf_rust_request_header (
6285 ccf_rust_endpoint_context* ctx, ccf_rust_slice name, ccf_rust_slice* value);
6386
64- int ccf_rust_response_status (ccf_rust_endpoint_context* ctx, uint16_t status);
65- int ccf_rust_response_header (
87+ ccf_rust_result ccf_rust_response_status (
88+ ccf_rust_endpoint_context* ctx, uint16_t status);
89+ ccf_rust_result ccf_rust_response_header (
6690 ccf_rust_endpoint_context* ctx, ccf_rust_slice name, ccf_rust_slice value);
67- int ccf_rust_response_body (
91+ ccf_rust_result ccf_rust_response_body (
6892 ccf_rust_endpoint_context* ctx, ccf_rust_slice body);
69- int ccf_rust_response_error (
93+ ccf_rust_result ccf_rust_response_error (
7094 ccf_rust_endpoint_context* ctx,
7195 uint16_t status,
7296 ccf_rust_slice code,
7397 ccf_rust_slice message);
7498
75- int ccf_rust_kv_get (
99+ ccf_rust_result ccf_rust_kv_get (
76100 ccf_rust_endpoint_context* ctx,
77101 ccf_rust_slice map_name,
78102 ccf_rust_slice key,
79103 ccf_rust_slice* value);
80- int ccf_rust_kv_has (
104+ ccf_rust_result ccf_rust_kv_has (
81105 ccf_rust_endpoint_context* ctx,
82106 ccf_rust_slice map_name,
83107 ccf_rust_slice key,
84- int * present);
85- int ccf_rust_kv_put (
108+ int32_t * present);
109+ ccf_rust_result ccf_rust_kv_put (
86110 ccf_rust_endpoint_context* ctx,
87111 ccf_rust_slice map_name,
88112 ccf_rust_slice key,
89113 ccf_rust_slice value);
90- int ccf_rust_kv_remove (
114+ ccf_rust_result ccf_rust_kv_remove (
91115 ccf_rust_endpoint_context* ctx,
92116 ccf_rust_slice map_name,
93117 ccf_rust_slice key);
94118
95119 uint32_t ccf_rust_app_abi_version (void );
96- int ccf_rust_app_register (ccf_rust_registry* registry);
120+ ccf_rust_result ccf_rust_app_register (ccf_rust_registry* registry);
97121
98122#ifdef __cplusplus
99123}
0 commit comments