![]() |
Open Lighting Architecture 0.10.9
|
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. | |
| void | RemoveClient (const Client *client) |
| Remove a client from the broker. | |
| void | SendRDMRequest (const Client *client, Universe *universe, ola::rdm::RDMRequest *request, ola::rdm::RDMCallback *callback) |
| Make an RDM call. | |
| void | RunRDMDiscovery (const Client *client, Universe *universe, bool full_discovery, ola::rdm::RDMDiscoveryCallback *callback) |
| Make an RDM call. | |
| void ola::ClientBroker::AddClient | ( | const Client * | client | ) |
| void ola::ClientBroker::RemoveClient | ( | const Client * | client | ) |
| void ola::ClientBroker::RunRDMDiscovery | ( | const Client * | client, |
| Universe * | universe, | ||
| bool | full_discovery, | ||
| ola::rdm::RDMDiscoveryCallback * | callback ) |
| void ola::ClientBroker::SendRDMRequest | ( | const Client * | client, |
| Universe * | universe, | ||
| ola::rdm::RDMRequest * | request, | ||
| ola::rdm::RDMCallback * | callback ) |