Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Loading...
Searching...
No Matches
sapi_ipc_request_reply.h
Go to the documentation of this file.
1
23
24#ifndef SAFEAPI_IPC_REQUEST_REPLY_H
25#define SAFEAPI_IPC_REQUEST_REPLY_H
26
29#include "sapi_ipc.h"
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
35/* ============================================================================
36 * Request-Reply Channel (Server Side)
37 * ========================================================================== */
38
42typedef struct sapi_ipc_rr_server_s *sapi_ipc_rr_server_t;
43
47typedef struct {
48 const char *name;
49 size_t request_size;
50 size_t reply_size;
51 size_t queue_depth;
53
57typedef struct {
58 uint32_t request_id;
59 uint8_t *request_data;
60 size_t request_size;
62
83 const sapi_ipc_rr_server_config_t *config);
84
106 sapi_ipc_rr_request_t *request_out,
107 sapi_duration_ms_t timeout_ms);
108
130 uint32_t request_id,
131 const void *reply_data,
132 size_t reply_size);
133
141
142/* ============================================================================
143 * Request-Reply Client (Client Side)
144 * ========================================================================== */
145
149typedef struct sapi_ipc_rr_client_s *sapi_ipc_rr_client_t;
150
154typedef struct {
155 const char *server_name;
157 size_t reply_size;
159
180 const sapi_ipc_rr_client_config_t *config);
181
218 const void *request_data,
219 size_t request_size,
220 void *reply_out,
221 size_t reply_size,
222 sapi_duration_ms_t timeout_ms);
223
231
232#ifdef __cplusplus
233}
234#endif
235
236#endif /* SAFEAPI_IPC_REQUEST_REPLY_H */
sapi_status_t
Common result/status codes.
Definition sapi_status.h:27
uint32_t sapi_duration_ms_t
Definition sapi_types.h:27
OS Abstraction Layer - Inter-process/inter-task communication service.
sapi_status_t sapi_ipc_rr_receive_request(sapi_ipc_rr_server_t server, sapi_ipc_rr_request_t *request_out, sapi_duration_ms_t timeout_ms)
Receive a request (blocking with timeout).
sapi_status_t sapi_ipc_rr_client_destroy(sapi_ipc_rr_client_t client)
Destroy request-reply client connection.
struct sapi_ipc_rr_client_s * sapi_ipc_rr_client_t
Request-reply client handle.
sapi_status_t sapi_ipc_rr_client_create(sapi_ipc_rr_client_t *handle_out, const sapi_ipc_rr_client_config_t *config)
Create a request-reply client connection.
struct sapi_ipc_rr_server_s * sapi_ipc_rr_server_t
Request-Reply server channel handle.
sapi_status_t sapi_ipc_rr_send_reply(sapi_ipc_rr_server_t server, uint32_t request_id, const void *reply_data, size_t reply_size)
Send reply to a request.
sapi_status_t sapi_ipc_rr_server_destroy(sapi_ipc_rr_server_t server)
Destroy request-reply server.
sapi_status_t sapi_ipc_rr_server_create(sapi_ipc_rr_server_t *handle_out, const sapi_ipc_rr_server_config_t *config)
Create a request-reply server channel.
sapi_status_t sapi_ipc_rr_request(sapi_ipc_rr_client_t client, const void *request_data, size_t request_size, void *reply_out, size_t reply_size, sapi_duration_ms_t timeout_ms)
Send request and wait for reply (blocking with timeout).
Common status/error codes returned by every Safe API Framework function. Shared across all OS Abstrac...
Common fixed-width types and the caller-owned-storage handle pattern used by every OAL service (see A...
Configuration for request-reply client.
Incoming request with context for sending reply.
Configuration for request-reply server.