Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Toggle main menu visibility
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
27
#include "
safeapi/utils/status/sapi_status.h
"
28
#include "
safeapi/utils/types/sapi_types.h
"
29
#include "
sapi_ipc.h
"
30
31
#ifdef __cplusplus
32
extern
"C"
{
33
#endif
34
35
/* ============================================================================
36
* Request-Reply Channel (Server Side)
37
* ========================================================================== */
38
42
typedef
struct
sapi_ipc_rr_server_s *
sapi_ipc_rr_server_t
;
43
47
typedef
struct
{
48
const
char
*
name
;
49
size_t
request_size
;
50
size_t
reply_size
;
51
size_t
queue_depth
;
52
}
sapi_ipc_rr_server_config_t
;
53
57
typedef
struct
{
58
uint32_t
request_id
;
59
uint8_t *
request_data
;
60
size_t
request_size
;
61
}
sapi_ipc_rr_request_t
;
62
82
sapi_status_t
sapi_ipc_rr_server_create
(
sapi_ipc_rr_server_t
*handle_out,
83
const
sapi_ipc_rr_server_config_t
*config);
84
105
sapi_status_t
sapi_ipc_rr_receive_request
(
sapi_ipc_rr_server_t
server,
106
sapi_ipc_rr_request_t
*request_out,
107
sapi_duration_ms_t
timeout_ms);
108
129
sapi_status_t
sapi_ipc_rr_send_reply
(
sapi_ipc_rr_server_t
server,
130
uint32_t request_id,
131
const
void
*reply_data,
132
size_t
reply_size);
133
140
sapi_status_t
sapi_ipc_rr_server_destroy
(
sapi_ipc_rr_server_t
server);
141
142
/* ============================================================================
143
* Request-Reply Client (Client Side)
144
* ========================================================================== */
145
149
typedef
struct
sapi_ipc_rr_client_s *
sapi_ipc_rr_client_t
;
150
154
typedef
struct
{
155
const
char
*
server_name
;
156
size_t
request_size
;
157
size_t
reply_size
;
158
}
sapi_ipc_rr_client_config_t
;
159
179
sapi_status_t
sapi_ipc_rr_client_create
(
sapi_ipc_rr_client_t
*handle_out,
180
const
sapi_ipc_rr_client_config_t
*config);
181
217
sapi_status_t
sapi_ipc_rr_request
(
sapi_ipc_rr_client_t
client,
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
230
sapi_status_t
sapi_ipc_rr_client_destroy
(
sapi_ipc_rr_client_t
client);
231
232
#ifdef __cplusplus
233
}
234
#endif
235
236
#endif
/* SAFEAPI_IPC_REQUEST_REPLY_H */
sapi_status_t
sapi_status_t
Common result/status codes.
Definition
sapi_status.h:27
sapi_duration_ms_t
uint32_t sapi_duration_ms_t
Definition
sapi_types.h:27
sapi_ipc.h
OS Abstraction Layer - Inter-process/inter-task communication service.
sapi_ipc_rr_receive_request
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).
Definition
sapi_ipc_request_reply.c:50
sapi_ipc_rr_client_destroy
sapi_status_t sapi_ipc_rr_client_destroy(sapi_ipc_rr_client_t client)
Destroy request-reply client connection.
Definition
sapi_ipc_request_reply.c:128
sapi_ipc_rr_client_t
struct sapi_ipc_rr_client_s * sapi_ipc_rr_client_t
Request-reply client handle.
Definition
sapi_ipc_request_reply.h:149
sapi_ipc_rr_client_create
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.
Definition
sapi_ipc_request_reply.c:87
sapi_ipc_rr_server_t
struct sapi_ipc_rr_server_s * sapi_ipc_rr_server_t
Request-Reply server channel handle.
Definition
sapi_ipc_request_reply.h:42
sapi_ipc_rr_send_reply
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.
Definition
sapi_ipc_request_reply.c:62
sapi_ipc_rr_server_destroy
sapi_status_t sapi_ipc_rr_server_destroy(sapi_ipc_rr_server_t server)
Destroy request-reply server.
Definition
sapi_ipc_request_reply.c:77
sapi_ipc_rr_server_create
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.
Definition
sapi_ipc_request_reply.c:25
sapi_ipc_rr_request
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).
Definition
sapi_ipc_request_reply.c:110
sapi_status.h
Common status/error codes returned by every Safe API Framework function. Shared across all OS Abstrac...
sapi_types.h
Common fixed-width types and the caller-owned-storage handle pattern used by every OAL service (see A...
sapi_ipc_rr_client_config_t
Configuration for request-reply client.
Definition
sapi_ipc_request_reply.h:154
sapi_ipc_rr_client_config_t::server_name
const char * server_name
Definition
sapi_ipc_request_reply.h:155
sapi_ipc_rr_client_config_t::reply_size
size_t reply_size
Definition
sapi_ipc_request_reply.h:157
sapi_ipc_rr_client_config_t::request_size
size_t request_size
Definition
sapi_ipc_request_reply.h:156
sapi_ipc_rr_request_t
Incoming request with context for sending reply.
Definition
sapi_ipc_request_reply.h:57
sapi_ipc_rr_request_t::request_size
size_t request_size
Definition
sapi_ipc_request_reply.h:60
sapi_ipc_rr_request_t::request_id
uint32_t request_id
Definition
sapi_ipc_request_reply.h:58
sapi_ipc_rr_request_t::request_data
uint8_t * request_data
Definition
sapi_ipc_request_reply.h:59
sapi_ipc_rr_server_config_t
Configuration for request-reply server.
Definition
sapi_ipc_request_reply.h:47
sapi_ipc_rr_server_config_t::queue_depth
size_t queue_depth
Definition
sapi_ipc_request_reply.h:51
sapi_ipc_rr_server_config_t::reply_size
size_t reply_size
Definition
sapi_ipc_request_reply.h:50
sapi_ipc_rr_server_config_t::request_size
size_t request_size
Definition
sapi_ipc_request_reply.h:49
sapi_ipc_rr_server_config_t::name
const char * name
Definition
sapi_ipc_request_reply.h:48
include
safeapi
oal
ipc
sapi_ipc_request_reply.h
Generated by
1.18.0