|
Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
|
IPC Publish-Subscribe implementation. More...
#include "safeapi/oal/ipc/sapi_ipc_pubsub.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_pubsub_topic_create (sapi_ipc_pubsub_topic_t *topic_out, const sapi_ipc_pubsub_topic_config_t *config) |
| Create a publish-subscribe topic. | |
| sapi_status_t | sapi_ipc_pubsub_publish (sapi_ipc_pubsub_topic_t topic, const void *message, size_t message_size) |
| Publish a message to all subscribers on a topic. | |
| sapi_status_t | sapi_ipc_pubsub_topic_destroy (sapi_ipc_pubsub_topic_t topic) |
| Destroy a publish-subscribe topic. | |
| sapi_status_t | sapi_ipc_pubsub_subscribe (sapi_ipc_pubsub_subscriber_t *subscriber_out, const sapi_ipc_pubsub_subscriber_config_t *config) |
| Subscribe to a topic. | |
| sapi_status_t | sapi_ipc_pubsub_receive (sapi_ipc_pubsub_subscriber_t subscriber, void *message_out, size_t message_size, sapi_duration_ms_t timeout_ms) |
| Receive a message from subscribed topic (blocking with timeout). | |
| sapi_status_t | sapi_ipc_pubsub_unsubscribe (sapi_ipc_pubsub_subscriber_t subscriber) |
| Unsubscribe from a topic. | |
IPC Publish-Subscribe implementation.
Definition in file sapi_ipc_pubsub.c.
| sapi_status_t sapi_ipc_pubsub_topic_create | ( | sapi_ipc_pubsub_topic_t * | topic_out, |
| const sapi_ipc_pubsub_topic_config_t * | config ) |
Create a publish-subscribe topic.
Local makros Local types declarations Local variables declarations Global variables declarations Local function declarations Global functions
Topics are created before any publishers or subscribers are attached.
| topic_out | Receives topic handle (not NULL) |
| config | Topic configuration (not NULL) |
Example:
Definition at line 25 of file sapi_ipc_pubsub.c.
| sapi_status_t sapi_ipc_pubsub_publish | ( | sapi_ipc_pubsub_topic_t | topic, |
| const void * | message, | ||
| size_t | message_size ) |
Publish a message to all subscribers on a topic.
Message is delivered to all registered subscribers asynchronously. If a subscriber queue is full, behavior depends on overflow strategy.
| topic | Topic handle (not NULL) |
| message | Message to publish (not NULL) |
| message_size | Size of message |
Example:
Definition at line 53 of file sapi_ipc_pubsub.c.
| sapi_status_t sapi_ipc_pubsub_topic_destroy | ( | sapi_ipc_pubsub_topic_t | topic | ) |
Destroy a publish-subscribe topic.
| topic | Topic handle (not NULL) |
Definition at line 67 of file sapi_ipc_pubsub.c.
| sapi_status_t sapi_ipc_pubsub_subscribe | ( | sapi_ipc_pubsub_subscriber_t * | subscriber_out, |
| const sapi_ipc_pubsub_subscriber_config_t * | config ) |
Subscribe to a topic.
Registers a subscriber to receive messages from a topic. Must be called during initialization, before publishing.
| subscriber_out | Receives subscriber handle (not NULL) |
| config | Subscriber configuration (not NULL) |
Example:
Definition at line 77 of file sapi_ipc_pubsub.c.
| sapi_status_t sapi_ipc_pubsub_receive | ( | sapi_ipc_pubsub_subscriber_t | subscriber, |
| void * | message_out, | ||
| size_t | message_size, | ||
| sapi_duration_ms_t | timeout_ms ) |
Receive a message from subscribed topic (blocking with timeout).
| subscriber | Subscriber handle (not NULL) |
| message_out | Destination buffer for message (not NULL) |
| message_size | Max size of message buffer |
| timeout_ms | Max wait time; 0 = poll, UINT32_MAX = infinite |
Example:
Definition at line 95 of file sapi_ipc_pubsub.c.
| sapi_status_t sapi_ipc_pubsub_unsubscribe | ( | sapi_ipc_pubsub_subscriber_t | subscriber | ) |
Unsubscribe from a topic.
| subscriber | Subscriber handle (not NULL) |
Definition at line 108 of file sapi_ipc_pubsub.c.