Open Lighting Architecture  Latest Git
Public Member Functions | List of all members
ola::ClientBroker Class Reference

Detailed Description

Handles async client operations.

Since some client operations such as RDM commands are asynchronous, we can run into problems if the client disconnects while the operation is in progress. This is because the completion callback will hold a pointer to a client which has been deleted.

The ClientBroker acts as an in-between by holding a list of active clients and proxying RDM calls. When the RDM call returns, if the client responsible for the call has been deleted, we delete the callback rather then executing it.

Public Member Functions

void AddClient (const Client *client)
 Add a client to the broker. More...
 
void RemoveClient (const Client *client)
 Remove a client from the broker. More...
 
void SendRDMRequest (const Client *client, Universe *universe, ola::rdm::RDMRequest *request, ola::rdm::RDMCallback *callback)
 Make an RDM call. More...
 
void RunRDMDiscovery (const Client *client, Universe *universe, bool full_discovery, ola::rdm::RDMDiscoveryCallback *callback)
 Make an RDM call. More...
 

Member Function Documentation

◆ AddClient()

void ola::ClientBroker::AddClient ( const Client client)

Add a client to the broker.

Parameters
clientthe Client to add. Ownership is not transferred.

◆ RemoveClient()

void ola::ClientBroker::RemoveClient ( const Client client)

Remove a client from the broker.

Parameters
clientThe Client to remove.

◆ RunRDMDiscovery()

void ola::ClientBroker::RunRDMDiscovery ( const Client client,
Universe universe,
bool  full_discovery,
ola::rdm::RDMDiscoveryCallback callback 
)

Make an RDM call.

Parameters
clientthe Client responsible for making the call.
universethe universe to send the RDM request on.
full_discoverytrue for full discovery, false for incremental.
callbackthe callback to run when the request completes. Ownership is transferred.

◆ SendRDMRequest()

void ola::ClientBroker::SendRDMRequest ( const Client client,
Universe universe,
ola::rdm::RDMRequest request,
ola::rdm::RDMCallback callback 
)

Make an RDM call.

Parameters
clientthe Client responsible for making the call.
universethe universe to send the RDM request on.
requestthe RDM request.
callbackthe callback to run when the request completes. Ownership is transferred.

The documentation for this class was generated from the following files: