|
Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
|
IPC Request-Reply implementation. More...
#include "safeapi/oal/ipc/sapi_ipc_request_reply.h"#include "safeapi/utils/lifecycle/sapi_lifecycle.h"#include "safeapi/log.h"Go to the source code of this file.
Functions | |
| 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_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_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_client_create (sapi_ipc_rr_client_t *handle_out, const sapi_ipc_rr_client_config_t *config) |
| Create a request-reply client connection. | |
| 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). | |
| sapi_status_t | sapi_ipc_rr_client_destroy (sapi_ipc_rr_client_t client) |
| Destroy request-reply client connection. | |
IPC Request-Reply implementation.
Definition in file sapi_ipc_request_reply.c.
| 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.
Local makros Local types declarations Local variables declarations Global variables declarations Local function declarations Global functions
| handle_out | Receives server handle (not NULL) |
| config | Server configuration (not NULL) |
Example:
Definition at line 25 of file sapi_ipc_request_reply.c.
| 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).
| server | Server handle (not NULL) |
| request_out | Receives request and context (not NULL) |
| timeout_ms | Max wait time; 0 = poll, UINT32_MAX = infinite |
Example:
Definition at line 50 of file sapi_ipc_request_reply.c.
| 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.
| server | Server handle (not NULL) |
| request_id | ID from the request being replied to |
| reply_data | Reply payload (not NULL) |
| reply_size | Size of reply (must match configured size) |
Example:
Definition at line 62 of file sapi_ipc_request_reply.c.
| sapi_status_t sapi_ipc_rr_server_destroy | ( | sapi_ipc_rr_server_t | server | ) |
Destroy request-reply server.
| server | Server handle (not NULL) |
Definition at line 77 of file sapi_ipc_request_reply.c.
| 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.
| handle_out | Receives client handle (not NULL) |
| config | Client configuration (not NULL) |
Example:
Definition at line 87 of file sapi_ipc_request_reply.c.
| 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).
This is the main client operation: send request, block waiting for reply.
| client | Client handle (not NULL) |
| request_data | Request to send (not NULL) |
| request_size | Size of request |
| reply_out | Destination buffer for reply (not NULL) |
| reply_size | Max size of reply buffer |
| timeout_ms | Max wait time for reply; 0 = poll, UINT32_MAX = infinite |
Example:
Definition at line 110 of file sapi_ipc_request_reply.c.
| sapi_status_t sapi_ipc_rr_client_destroy | ( | sapi_ipc_rr_client_t | client | ) |
Destroy request-reply client connection.
| client | Client handle (not NULL) |
Definition at line 128 of file sapi_ipc_request_reply.c.