Skip to content

Commit

Permalink
iox-eclipse-iceoryx#391 sub options init
Browse files Browse the repository at this point in the history
Signed-off-by: Matthias Killat <matthias.killat@apex.ai>
  • Loading branch information
MatthiasKillat committed Mar 1, 2021
1 parent 08def7c commit c350edc
Show file tree
Hide file tree
Showing 9 changed files with 52 additions and 32 deletions.
6 changes: 5 additions & 1 deletion iceoryx_binding_c/include/iceoryx_binding_c/subscriber.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ typedef struct
const char* nodeName;
} iox_sub_options_t;

/// @brief initialize subscriber options to default values
/// @param[in] options pointer to options to be initialized
void iox_sub_options_init(iox_sub_options_t* const options);

/// @brief initialize subscriber handle
/// @param[in] self pointer to preallocated memory of size = sizeof(iox_sub_storage_t)
/// @param[in] service serviceString
Expand All @@ -49,7 +53,7 @@ iox_sub_t iox_sub_init(iox_sub_storage_t* self,
const char* const service,
const char* const instance,
const char* const event,
const iox_sub_options_t options);
const iox_sub_options_t* const options);

/// @brief deinitialize a subscriber handle
/// @param[in] self the handle which should be removed
Expand Down
20 changes: 16 additions & 4 deletions iceoryx_binding_c/source/c_subscriber.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,18 +36,30 @@ extern "C" {
#include "iceoryx_binding_c/subscriber.h"
}

void iox_sub_options_init(iox_sub_options_t* options)
{
SubscriberOptions subscriberOptions;
options->queueCapacity = subscriberOptions.queueCapacity;
options->historyRequest = subscriberOptions.historyRequest;
options->nodeName = nullptr;
}

iox_sub_t iox_sub_init(iox_sub_storage_t* self,
const char* const service,
const char* const instance,
const char* const event,
const iox_sub_options_t options)
const iox_sub_options_t* const options)
{
new (self) cpp2c_Subscriber();
iox_sub_t me = reinterpret_cast<iox_sub_t>(self);
SubscriberOptions subscriberOptions;
subscriberOptions.queueCapacity = options.queueCapacity;
subscriberOptions.historyRequest = options.historyRequest;
subscriberOptions.nodeName = NodeName_t(TruncateToCapacity, options.nodeName);
subscriberOptions.queueCapacity = options->queueCapacity;
subscriberOptions.historyRequest = options->historyRequest;
if (options->nodeName != nullptr)
{
subscriberOptions.nodeName = NodeName_t(TruncateToCapacity, options->nodeName);
}

me->m_portData =
PoshRuntime::getInstance().getMiddlewareSubscriber(ServiceDescription{IdString_t(TruncateToCapacity, service),
IdString_t(TruncateToCapacity, instance),
Expand Down
3 changes: 2 additions & 1 deletion iceoryx_examples/icedelivery_in_c/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,13 @@ Let's take a look at the `receiving` function which comes with the
memory and `subscriber` is actually a pointer to that location.
```c
iox_sub_options_t options;
iox_sub_options_init(&options);
options.historyRequest = 10U;
options.queueCapacity = 5U;
options.nodeName = "iox-c-subscriber-node";

iox_sub_storage_t subscriberStorage;
iox_sub_t subscriber = iox_sub_init(&subscriberStorage, "Radar", "FrontLeft", "Object", options);
iox_sub_t subscriber = iox_sub_init(&subscriberStorage, "Radar", "FrontLeft", "Object", &options);
```

3. We subscribe to the service.
Expand Down
3 changes: 2 additions & 1 deletion iceoryx_examples/icedelivery_in_c/ice_c_subscriber.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,14 @@ void receiving()
// publisher has send. The history ensures that we at least get the last 10
// samples send by the publisher when we subscribe.
iox_sub_options_t options;
iox_sub_options_init(&options);
options.historyRequest = 10U;
options.queueCapacity = 5U;
options.nodeName = "iox-c-subscriber-node";
iox_sub_storage_t subscriberStorage;

iox_sub_t subscriber =
iox_sub_init(&subscriberStorage, "Radar", "FrontLeft", "Object", options);
iox_sub_init(&subscriberStorage, "Radar", "FrontLeft", "Object", &options);
iox_sub_subscribe(subscriber);

while (!killswitch)
Expand Down
3 changes: 2 additions & 1 deletion iceoryx_examples/iceperf/iceoryx_c.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,11 @@ IceoryxC::IceoryxC(const iox::capro::IdString_t& publisherName, const iox::capro
m_publisher = iox_pub_init(&m_publisherStorage, "Comedians", publisherName.c_str(), "Duo", &publisherOptions);

iox_sub_options_t subscriberOptions;
iox_sub_options_init(&subscriberOptions);
subscriberOptions.queueCapacity = 10U;
subscriberOptions.historyRequest = 0U;
subscriberOptions.nodeName = "Slapstick";
m_subscriber = iox_sub_init(&m_subscriberStorage, "Comedians", subscriberName.c_str(), "Duo", subscriberOptions);
m_subscriber = iox_sub_init(&m_subscriberStorage, "Comedians", subscriberName.c_str(), "Duo", &subscriberOptions);
}

IceoryxC::~IceoryxC()
Expand Down
24 changes: 12 additions & 12 deletions iceoryx_examples/waitset_in_c/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,13 @@ the `subscriberCallback` and an event id `1U`.
iox_sub_storage_t subscriberStorage[NUMBER_OF_SUBSCRIBERS];

iox_sub_options_t options;
iox_sub_options_init(&options);
options.historyRequest = 1U;
options.queueCapacity = 256U;
options.nodeName = "iox-c-ex-waitSet-gateway-node";
for (uint64_t i = 0U; i < NUMBER_OF_SUBSCRIBERS; ++i)
{
iox_sub_t subscriber = iox_sub_init(&(subscriberStorage[i]), "Radar", "FrontLeft", "Counter", options);
iox_sub_t subscriber = iox_sub_init(&(subscriberStorage[i]), "Radar", "FrontLeft", "Counter", &options);

iox_sub_subscribe(subscriber);
iox_ws_attach_subscriber_event(waitSet, subscriber, SubscriberEvent_HAS_DATA, 1U, subscriberCallback);
Expand Down Expand Up @@ -143,12 +144,13 @@ iox_sub_storage_t subscriberStorage[NUMBER_OF_SUBSCRIBERS];
iox_sub_t subscriber[NUMBER_OF_SUBSCRIBERS];

iox_sub_options_t options;
iox_sub_options_init(&options);
options.historyRequest = 1U;
options.queueCapacity = 256U;
options.nodeName = "iox-c-ex-waitset-grouping-node";
for (uint64_t i = 0U; i < NUMBER_OF_SUBSCRIBERS; ++i)
{
subscriber[i] = iox_sub_init(&(subscriberStorage[i]), "Radar", "FrontLeft", "Counter", options);
subscriber[i] = iox_sub_init(&(subscriberStorage[i]), "Radar", "FrontLeft", "Counter", &options);

iox_sub_subscribe(subscriber[i]);
}
Expand Down Expand Up @@ -254,17 +256,15 @@ iox_ws_attach_user_trigger_event(waitSet, shutdownTrigger, 0U, NULL);
Now we create two subscriber, subscribe them to our topic and attach them to
the waitset without a callback and with the same trigger id.
```c
iox_sub_options_t options1, options2;
options1.historyRequest = 1U;
options1.queueCapacity = 256U;
options1.nodeName = "iox-c-ex-waitset-individual-node1";
iox_sub_options_t options;
iox_sub_options_init(&options);
options.historyRequest = 1U;
options.queueCapacity = 256U;
options.nodeName = "iox-c-ex-waitset-individual-node1";

options2.historyRequest = 1U;
options2.queueCapacity = 256U;
options2.nodeName = "iox-c-ex-waitset-individual-node2";

subscriber[0] = iox_sub_init(&(subscriberStorage[0]), "Radar", "FrontLeft", "Counter", options1);
subscriber[1] = iox_sub_init(&(subscriberStorage[1]), "Radar", "FrontLeft", "Counter", options2);
subscriber[0] = iox_sub_init(&(subscriberStorage[0]), "Radar", "FrontLeft", "Counter", &options);
options.nodeName = "iox-c-ex-waitset-individual-node2";
subscriber[1] = iox_sub_init(&(subscriberStorage[1]), "Radar", "FrontLeft", "Counter", &options);

iox_sub_subscribe(subscriber[0]);
iox_sub_subscribe(subscriber[1]);
Expand Down
3 changes: 2 additions & 1 deletion iceoryx_examples/waitset_in_c/ice_c_waitset_gateway.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,14 @@ int main()
// create subscriber and subscribe them to our service

iox_sub_options_t options;
iox_sub_options_init(&options);
options.historyRequest = 1U;
options.queueCapacity = 256U;
options.nodeName = "iox-c-ex-waitSet-gateway-node";
for (uint64_t i = 0U; i < NUMBER_OF_SUBSCRIBERS; ++i)
{
iox_sub_t subscriber = iox_sub_init(
&(subscriberStorage[i]), "Radar", "FrontLeft", "Counter", options);
&(subscriberStorage[i]), "Radar", "FrontLeft", "Counter", &options);

iox_sub_subscribe(subscriber);
iox_ws_attach_subscriber_event(waitSet, subscriber, SubscriberEvent_HAS_DATA, 1U, subscriberCallback);
Expand Down
3 changes: 2 additions & 1 deletion iceoryx_examples/waitset_in_c/ice_c_waitset_grouping.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,14 @@ int main()

// create subscriber and subscribe them to our service
iox_sub_options_t options;
iox_sub_options_init(&options);
options.historyRequest = 1U;
options.queueCapacity = 256U;
options.nodeName = "iox-c-ex-waitset-grouping-node";
for (uint64_t i = 0U; i < NUMBER_OF_SUBSCRIBERS; ++i)
{
subscriber[i] = iox_sub_init(
&(subscriberStorage[i]), "Radar", "FrontLeft", "Counter", options);
&(subscriberStorage[i]), "Radar", "FrontLeft", "Counter", &options);

iox_sub_subscribe(subscriber[i]);
}
Expand Down
19 changes: 9 additions & 10 deletions iceoryx_examples/waitset_in_c/ice_c_waitset_individual.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,19 +61,18 @@ int main()
iox_sub_t subscriber[NUMBER_OF_SUBSCRIBERS];

// create two subscribers, subscribe to the service and attach them to the waitset
iox_sub_options_t options1, options2;
options1.historyRequest = 1U;
options1.queueCapacity = 256U;
options1.nodeName = "iox-c-ex-waitset-individual-node1";

options2.historyRequest = 1U;
options2.queueCapacity = 256U;
options2.nodeName = "iox-c-ex-waitset-individual-node2";
iox_sub_options_t options;
iox_sub_options_init(&options);
options.historyRequest = 1U;
options.queueCapacity = 256U;
options.nodeName = "iox-c-ex-waitset-individual-node1";

subscriber[0] = iox_sub_init(
&(subscriberStorage[0]), "Radar", "FrontLeft", "Counter", options1);
&(subscriberStorage[0]), "Radar", "FrontLeft", "Counter", &options);

options.nodeName = "iox-c-ex-waitset-individual-node2";
subscriber[1] = iox_sub_init(
&(subscriberStorage[1]), "Radar", "FrontLeft", "Counter", options2);
&(subscriberStorage[1]), "Radar", "FrontLeft", "Counter", &options);

iox_sub_subscribe(subscriber[0]);
iox_sub_subscribe(subscriber[1]);
Expand Down

0 comments on commit c350edc

Please sign in to comment.