Safe API Framework
0.1.0 build 384e6ae
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Toggle main menu visibility
Loading...
Searching...
No Matches
rte_ipc_pubsub.h
Go to the documentation of this file.
1
46
47
#ifndef RTE_IPC_PUBSUB_H
48
#define RTE_IPC_PUBSUB_H
49
50
#include "
rte/utils/status/rte_status.h
"
51
#include "
rte/utils/types/rte_types.h
"
52
#include "
rte_ipc.h
"
53
54
#ifdef __cplusplus
55
extern
"C"
{
56
#endif
57
58
/* ============================================================================
59
* Publish-Subscribe Topic
60
* ========================================================================== */
61
65
typedef
struct
rte_ipc_pubsub_topic_s *
rte_ipc_pubsub_topic_t
;
66
70
typedef
struct
{
71
const
char
*
topic_name
;
72
size_t
message_size
;
73
size_t
max_subscribers
;
74
}
rte_ipc_pubsub_topic_config_t
;
75
97
rte_status_t
rte_ipc_pubsub_topic_create
(
rte_ipc_pubsub_topic_t
*topic_out,
98
const
rte_ipc_pubsub_topic_config_t
*config);
99
123
rte_status_t
rte_ipc_pubsub_publish
(
rte_ipc_pubsub_topic_t
topic,
124
const
void
*message,
125
size_t
message_size);
126
133
rte_status_t
rte_ipc_pubsub_topic_destroy
(
rte_ipc_pubsub_topic_t
topic);
134
135
/* ============================================================================
136
* Subscriber (Receiver Side)
137
* ========================================================================== */
138
142
typedef
struct
rte_ipc_pubsub_subscriber_s *
rte_ipc_pubsub_subscriber_t
;
143
147
typedef
struct
{
148
const
char
*
subscriber_name
;
149
rte_ipc_pubsub_topic_t
topic
;
150
size_t
queue_depth
;
151
}
rte_ipc_pubsub_subscriber_config_t
;
152
176
rte_status_t
rte_ipc_pubsub_subscribe
(
rte_ipc_pubsub_subscriber_t
*subscriber_out,
177
const
rte_ipc_pubsub_subscriber_config_t
*config);
178
205
rte_status_t
rte_ipc_pubsub_receive
(
rte_ipc_pubsub_subscriber_t
subscriber,
206
void
*message_out,
207
size_t
message_size,
208
rte_duration_ms_t
timeout_ms);
209
216
rte_status_t
rte_ipc_pubsub_unsubscribe
(
rte_ipc_pubsub_subscriber_t
subscriber);
217
218
#ifdef __cplusplus
219
}
220
#endif
221
222
#endif
/* RTE_IPC_PUBSUB_H */
rte_status_t
rte_status_t
Common result/status codes.
Definition
rte_status.h:27
rte_duration_ms_t
uint32_t rte_duration_ms_t
Definition
rte_types.h:27
rte_ipc.h
OS Abstraction Layer - Inter-process/inter-task communication service.
rte_ipc_pubsub_topic_destroy
rte_status_t rte_ipc_pubsub_topic_destroy(rte_ipc_pubsub_topic_t topic)
Destroy a publish-subscribe topic.
Definition
rte_ipc_pubsub.c:67
rte_ipc_pubsub_receive
rte_status_t rte_ipc_pubsub_receive(rte_ipc_pubsub_subscriber_t subscriber, void *message_out, size_t message_size, rte_duration_ms_t timeout_ms)
Receive a message from subscribed topic (blocking with timeout).
Definition
rte_ipc_pubsub.c:95
rte_ipc_pubsub_subscriber_t
struct rte_ipc_pubsub_subscriber_s * rte_ipc_pubsub_subscriber_t
Subscriber handle for receiving from a topic.
Definition
rte_ipc_pubsub.h:142
rte_ipc_pubsub_unsubscribe
rte_status_t rte_ipc_pubsub_unsubscribe(rte_ipc_pubsub_subscriber_t subscriber)
Unsubscribe from a topic.
Definition
rte_ipc_pubsub.c:108
rte_ipc_pubsub_topic_t
struct rte_ipc_pubsub_topic_s * rte_ipc_pubsub_topic_t
Publish-subscribe topic handle.
Definition
rte_ipc_pubsub.h:65
rte_ipc_pubsub_subscribe
rte_status_t rte_ipc_pubsub_subscribe(rte_ipc_pubsub_subscriber_t *subscriber_out, const rte_ipc_pubsub_subscriber_config_t *config)
Subscribe to a topic.
Definition
rte_ipc_pubsub.c:77
rte_ipc_pubsub_topic_create
rte_status_t rte_ipc_pubsub_topic_create(rte_ipc_pubsub_topic_t *topic_out, const rte_ipc_pubsub_topic_config_t *config)
Create a publish-subscribe topic.
Definition
rte_ipc_pubsub.c:25
rte_ipc_pubsub_publish
rte_status_t rte_ipc_pubsub_publish(rte_ipc_pubsub_topic_t topic, const void *message, size_t message_size)
Publish a message to all subscribers on a topic.
Definition
rte_ipc_pubsub.c:53
rte_status.h
Common status/error codes returned by every Safe API Framework function. Shared across all OS Abstrac...
rte_types.h
Common fixed-width types and the caller-owned-storage handle pattern used by every OAL service (see A...
rte_ipc_pubsub_subscriber_config_t
Configuration for a subscriber.
Definition
rte_ipc_pubsub.h:147
rte_ipc_pubsub_subscriber_config_t::topic
rte_ipc_pubsub_topic_t topic
Definition
rte_ipc_pubsub.h:149
rte_ipc_pubsub_subscriber_config_t::subscriber_name
const char * subscriber_name
Definition
rte_ipc_pubsub.h:148
rte_ipc_pubsub_subscriber_config_t::queue_depth
size_t queue_depth
Definition
rte_ipc_pubsub.h:150
rte_ipc_pubsub_topic_config_t
Configuration for a pub-sub topic.
Definition
rte_ipc_pubsub.h:70
rte_ipc_pubsub_topic_config_t::message_size
size_t message_size
Definition
rte_ipc_pubsub.h:72
rte_ipc_pubsub_topic_config_t::max_subscribers
size_t max_subscribers
Definition
rte_ipc_pubsub.h:73
rte_ipc_pubsub_topic_config_t::topic_name
const char * topic_name
Definition
rte_ipc_pubsub.h:71
include
rte
oal
ipc
rte_ipc_pubsub.h
Generated by
1.18.0