Skip to content

Commit

Permalink
[#390] Add readme
Browse files Browse the repository at this point in the history
  • Loading branch information
elfenpiff committed Nov 24, 2024
1 parent 9003d8b commit 15f2f35
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 3 deletions.
36 changes: 35 additions & 1 deletion examples/cxx/event_based_communication/README.md
Original file line number Diff line number Diff line change
@@ -1 +1,35 @@
# asd
# Event-Based Communication

## Running The Example

This example demonstrates iceoryx2's event multiplexing mechanism in a more
complex setup. The iceoryx2 `Publisher` and `Subscriber` are integrated into
custom `ExamplePublisher` and `ExampleSubscriber` classes, which also
incorporate an additional iceoryx2 `Notifier` and `Listener`. This setup
enables automatic event emission whenever an `ExamplePublisher` or
`ExampleSubscriber` is created or dropped. Additionally, events are emitted
whenever a new `Sample` is sent or received.

When a `class` inherits from `FileDescriptorBased`, it can be attached to a
`WaitSet`. Both `ExamplePublisher` and `ExampleSubscriber` implement this
interface by forwarding calls to their underlying `Listener`, which already
provides an implementation of `FileDescriptorBased`.

The `WaitSet` notifies the user of the origin of an event notification. The
user can then acquire the `EventId` from the `Listener`. Based on the value of
the `EventId`, the user can identify the specific event that occurred and take
appropriate action.

### Terminal 1

```sh
./target/ffi/build/examples/cxx/event_based_communication/example_cxx_event_based_communication_publisher
```

### Terminal 2

```sh
./target/ffi/build/examples/cxx/event_based_communication/example_cxx_event_based_communication_subscriber
```

Feel free to run multiple publishers or subscribers in parallel.
4 changes: 2 additions & 2 deletions examples/cxx/event_based_communication/src/pubsub_event.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ enum class PubSubEvent : uint8_t {

namespace iox {
template <>
inline constexpr auto from<PubSubEvent, size_t>(const PubSubEvent value) noexcept -> size_t {
constexpr auto from<PubSubEvent, size_t>(const PubSubEvent value) noexcept -> size_t {
return static_cast<uint8_t>(value);
}

template <>
inline constexpr auto from<size_t, PubSubEvent>(const size_t value) noexcept -> PubSubEvent {
constexpr auto from<size_t, PubSubEvent>(const size_t value) noexcept -> PubSubEvent {
switch (value) {
case from<PubSubEvent, size_t>(PubSubEvent::PublisherConnected):
return PubSubEvent::PublisherConnected;
Expand Down

0 comments on commit 15f2f35

Please sign in to comment.