RDMnet
0.3.0
Implementation of ANSI E1.33 (RDMnet)
|
View other versions:
|
Defines an instance of RDMnet broker functionality.
Use the Broker::Settings struct to configure the behavior of the broker. After instantiatiation, call Startup() to start broker services on a set of network interfaces.
Starts some threads to handle messages and connections. The current breakdown (pending concurrency optimization) is:
Call Shutdown() at exit, when Broker services are no longer needed, or when a setting has changed. The Broker may send notifications through the Broker::NotifyHandler interface.
#include <rdmnet/cpp/broker.h>
Data Structures | |
struct | DnsAttributes |
Settings for the Broker's DNS Discovery functionality. More... | |
struct | Limits |
A set of limits for broker operation. More... | |
class | NotifyHandler |
A callback interface for notifications from the broker. More... | |
struct | Settings |
A group of settings for broker operation. More... | |
Public Member Functions | |
Broker () | |
Constructs a broker instance. Broker is not running until Broker::Startup() is called. | |
virtual | ~Broker () |
Destroys a broker instance. Call Broker::Shutdown() first. | |
Broker (const Broker &other)=delete | |
Brokers cannot be copied. | |
Broker & | operator= (const Broker &other)=delete |
Brokers cannot be copied. | |
Broker (Broker &&other)=default | |
Move an instance of broker functionality. | |
Broker & | operator= (Broker &&other)=default |
Move an instance of broker functionality. | |
etcpal::Error | Startup (const Settings &settings, etcpal::Logger *logger=nullptr, NotifyHandler *notify=nullptr) |
Start all broker functionality and threads. More... | |
void | Shutdown (rdmnet_disconnect_reason_t disconnect_reason=kRdmnetDisconnectShutdown) |
Shut down all broker functionality and threads. More... | |
etcpal::Error | ChangeScope (const std::string &new_scope, rdmnet_disconnect_reason_t disconnect_reason) |
Change the scope on which a broker operates. More... | |
const Settings & | settings () const |
Get the current settings the broker is using. More... | |
etcpal::Error rdmnet::Broker::ChangeScope | ( | const std::string & | new_scope, |
rdmnet_disconnect_reason_t | disconnect_reason | ||
) |
Change the scope on which a broker operates.
This function is for changing the scope after Broker::Startup() has been called. To configure the initial scope, use the Broker::Settings::scope member. Sends disconnect messages to all connected clients with the reason given before disconnecting and beginning operations on the new scope.
new_scope | The new scope on which the broker should operate. |
disconnect_reason | Disconnect reason code to send to all connected clients on the current scope. |
const rdmnet::Broker::Settings & rdmnet::Broker::settings | ( | ) | const |
Get the current settings the broker is using.
Can be called even after Shutdown. Useful if you want to shutdown & restart the broker for any reason.
void rdmnet::Broker::Shutdown | ( | rdmnet_disconnect_reason_t | disconnect_reason = kRdmnetDisconnectShutdown | ) |
Shut down all broker functionality and threads.
Sends disconnect messages to all connected clients, joins all threads and deallocates resources.
disconnect_reason | Disconnect reason code to send to all connected clients. |
etcpal::Error rdmnet::Broker::Startup | ( | const Settings & | settings, |
etcpal::Logger * | logger = nullptr , |
||
NotifyHandler * | notify = nullptr |
||
) |
Start all broker functionality and threads.
If listen_addrs is empty, this returns false. Otherwise, the broker uses the address fields to set up the listening sockets. If the listen_port is 0 and their is only one listen_addr, an ephemeral port is chosen. If there are more listen_addrs, listen_port must not be 0.
settings | Settings for the broker to use for this session. |
logger | (optional) A class instance that the broker will use to log messages. |
notify | (optional) A class instance that the broker will use to send asynchronous notifications about its state. |