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_pubsub.h
Go to the documentation of this file.
1
46
47
#ifndef SAFEAPI_IPC_PUBSUB_H
48
#define SAFEAPI_IPC_PUBSUB_H
49
50
#include "
safeapi/utils/status/sapi_status.h
"
51
#include "
safeapi/utils/types/sapi_types.h
"
52
#include "
sapi_ipc.h
"
53
54
#ifdef __cplusplus
55
extern
"C"
{
56
#endif
57
58
/* ============================================================================
59
* Publish-Subscribe Topic
60
* ========================================================================== */
61
65
typedef
struct
sapi_ipc_pubsub_topic_s *
sapi_ipc_pubsub_topic_t
;
66
70
typedef
struct
{
71
const
char
*
topic_name
;
72
size_t
message_size
;
73
size_t
max_subscribers
;
74
}
sapi_ipc_pubsub_topic_config_t
;
75
97
sapi_status_t
sapi_ipc_pubsub_topic_create
(
sapi_ipc_pubsub_topic_t
*topic_out,
98
const
sapi_ipc_pubsub_topic_config_t
*config);
99
123
sapi_status_t
sapi_ipc_pubsub_publish
(
sapi_ipc_pubsub_topic_t
topic,
124
const
void
*message,
125
size_t
message_size);
126
133
sapi_status_t
sapi_ipc_pubsub_topic_destroy
(
sapi_ipc_pubsub_topic_t
topic);
134
135
/* ============================================================================
136
* Subscriber (Receiver Side)
137
* ========================================================================== */
138
142
typedef
struct
sapi_ipc_pubsub_subscriber_s *
sapi_ipc_pubsub_subscriber_t
;
143
147
typedef
struct
{
148
const
char
*
subscriber_name
;
149
sapi_ipc_pubsub_topic_t
topic
;
150
size_t
queue_depth
;
151
}
sapi_ipc_pubsub_subscriber_config_t
;
152
176
sapi_status_t
sapi_ipc_pubsub_subscribe
(
sapi_ipc_pubsub_subscriber_t
*subscriber_out,
177
const
sapi_ipc_pubsub_subscriber_config_t
*config);
178
205
sapi_status_t
sapi_ipc_pubsub_receive
(
sapi_ipc_pubsub_subscriber_t
subscriber,
206
void
*message_out,
207
size_t
message_size,
208
sapi_duration_ms_t
timeout_ms);
209
216
sapi_status_t
sapi_ipc_pubsub_unsubscribe
(
sapi_ipc_pubsub_subscriber_t
subscriber);
217
218
#ifdef __cplusplus
219
}
220
#endif
221
222
#endif
/* SAFEAPI_IPC_PUBSUB_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_pubsub_subscribe
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.
Definition
sapi_ipc_pubsub.c:77
sapi_ipc_pubsub_topic_create
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.
Definition
sapi_ipc_pubsub.c:25
sapi_ipc_pubsub_receive
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).
Definition
sapi_ipc_pubsub.c:95
sapi_ipc_pubsub_unsubscribe
sapi_status_t sapi_ipc_pubsub_unsubscribe(sapi_ipc_pubsub_subscriber_t subscriber)
Unsubscribe from a topic.
Definition
sapi_ipc_pubsub.c:108
sapi_ipc_pubsub_subscriber_t
struct sapi_ipc_pubsub_subscriber_s * sapi_ipc_pubsub_subscriber_t
Subscriber handle for receiving from a topic.
Definition
sapi_ipc_pubsub.h:142
sapi_ipc_pubsub_topic_t
struct sapi_ipc_pubsub_topic_s * sapi_ipc_pubsub_topic_t
Publish-subscribe topic handle.
Definition
sapi_ipc_pubsub.h:65
sapi_ipc_pubsub_topic_destroy
sapi_status_t sapi_ipc_pubsub_topic_destroy(sapi_ipc_pubsub_topic_t topic)
Destroy a publish-subscribe topic.
Definition
sapi_ipc_pubsub.c:67
sapi_ipc_pubsub_publish
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.
Definition
sapi_ipc_pubsub.c:53
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_pubsub_subscriber_config_t
Configuration for a subscriber.
Definition
sapi_ipc_pubsub.h:147
sapi_ipc_pubsub_subscriber_config_t::subscriber_name
const char * subscriber_name
Definition
sapi_ipc_pubsub.h:148
sapi_ipc_pubsub_subscriber_config_t::queue_depth
size_t queue_depth
Definition
sapi_ipc_pubsub.h:150
sapi_ipc_pubsub_subscriber_config_t::topic
sapi_ipc_pubsub_topic_t topic
Definition
sapi_ipc_pubsub.h:149
sapi_ipc_pubsub_topic_config_t
Configuration for a pub-sub topic.
Definition
sapi_ipc_pubsub.h:70
sapi_ipc_pubsub_topic_config_t::max_subscribers
size_t max_subscribers
Definition
sapi_ipc_pubsub.h:73
sapi_ipc_pubsub_topic_config_t::message_size
size_t message_size
Definition
sapi_ipc_pubsub.h:72
sapi_ipc_pubsub_topic_config_t::topic_name
const char * topic_name
Definition
sapi_ipc_pubsub.h:71
include
safeapi
oal
ipc
sapi_ipc_pubsub.h
Generated by
1.18.0