Skip to content

Commit

Permalink
[#390] Fix clippy warnings and write example readme
Browse files Browse the repository at this point in the history
  • Loading branch information
elfenpiff committed Nov 20, 2024
1 parent b78f28d commit ddf7f76
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 6 deletions.
12 changes: 6 additions & 6 deletions examples/rust/_examples_common/pubsub_event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ pub enum PubSubEvent {
Undefined,
}

impl Into<EventId> for PubSubEvent {
fn into(self) -> EventId {
EventId::new(self as usize)
impl From<PubSubEvent> for EventId {
fn from(value: PubSubEvent) -> Self {
EventId::new(value as usize)
}
}

impl Into<PubSubEvent> for EventId {
fn into(self) -> PubSubEvent {
match self.as_value() {
impl From<EventId> for PubSubEvent {
fn from(value: EventId) -> Self {
match value.as_value() {
0 => PubSubEvent::PublisherConnected,
1 => PubSubEvent::PublisherDisconnected,
2 => PubSubEvent::SubscriberConnected,
Expand Down
32 changes: 32 additions & 0 deletions examples/rust/event_based_communication/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,35 @@
# 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 `struct` implements `SynchronousMultiplexing`, 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 `SynchronousMultiplexing`.

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
cargo run --example event_based_comm_publisher
```

### Terminal 2

```sh
cargo run --example event_based_comm_subscriber
```

Feel free to run multiple publishers or subscribers in parallel.

0 comments on commit ddf7f76

Please sign in to comment.