Event Handling Interface
#include <dolbyio/comms/event_handling.h>
The event handler connection interface is used for handling subscriptions to events which can be emitted by the SDK. The user will utilize either
sdk::add_event_handler
or conference::add_event_handler
to subscribe to an events.
In order to subscribe to an event the user will provide a callback of type
event_handler
to be invoked by the SDK when th event occurrs.The user will receive a
event_handler_connection
for each event they subscribe to. This connection is to be used to disconnect a event listener.When subscription is finished the user will be returned an
event_handler_id
which is a unique pointer to anevent_handler_connection
.
-
template<typename EventType>
using dolbyio::comms::event_handler = std::function<void(const EventType&)> The function object that handles subscribing to events and returns a void operator.
- Template Parameters:
EventType – The selected event.
-
using dolbyio::comms::event_handler_id = std::unique_ptr<event_handler_connection>
Defines a type of the unique pointer to dolbyio::comms::event_handler_connection.
-
class event_handler_connection
The interface that exposes a connection to the handler. The interface is created for each subscribed event.
Public Functions
-
virtual ~event_handler_connection()
The destructor of the handler connection that does not disconnect the handler.
-
virtual async_result<void> disconnect() = 0
Disconnects a handler to unsubscribe from the subscribed event.
// Wait for the operation to complete wait(handler->disconnect()); // Continue in the `then` call handler->disconnect() .then([]() { // the handler is disconnected }) .on_error([](auto&& e) { // handle the disconnect error });
- Attention
This function is asynchronous and the operation is executed on the event loop of the SDK. You can either block the calling thread until the operation completes or chain consecutive operations that depend on the completion of this method using the async_result::then call. The async_result chain operations need to be terminated with an async_result::on_error.
- Returns:
The result object producing the operation status asynchronously.
-
virtual ~event_handler_connection()