The message manager handles communications for a simple server. More...
#include <message_manager.h>
Public Member Functions | |
bool | add (industrial::message_handler::MessageHandler *handler, bool allow_replace=false) |
Adds a message handler to the manager. More... | |
industrial::comms_fault_handler::CommsFaultHandler * | getCommsFaultHandler () |
Gets communications fault handler. More... | |
unsigned int | getMaxNumHandlers () |
Gets maximumn number of handlers. More... | |
unsigned int | getNumHandlers () |
Gets number of handlers. More... | |
bool | init (industrial::smpl_msg_connection::SmplMsgConnection *connection) |
Class initializer. More... | |
bool | init (industrial::smpl_msg_connection::SmplMsgConnection *connection, industrial::comms_fault_handler::CommsFaultHandler *fault_handler) |
Class initializer. More... | |
MessageManager () | |
Constructor. More... | |
void | setCommsFaultHandler (industrial::comms_fault_handler::CommsFaultHandler *handler) |
Gets communications fault handler. More... | |
void | spin () |
Perform a indefinite execution of the message manager. More... | |
void | spinOnce () |
Perform an single execution of the message manager (a single receive and send (if required) More... | |
~MessageManager () | |
Destructor. More... | |
Private Member Functions | |
industrial::smpl_msg_connection::SmplMsgConnection * | getConnection () |
Gets connection for manager. More... | |
industrial::simple_comms_fault_handler::SimpleCommsFaultHandler & | getDefaultCommsFaultHandler () |
Gets default communications fault handler. More... | |
industrial::message_handler::MessageHandler * | getHandler (int msg_type) |
Gets message handler for specific message type. More... | |
int | getHandlerIdx (int msg_type) |
Gets index of message handler for specific message type. More... | |
industrial::ping_handler::PingHandler & | getPingHandler () |
Gets ping handler. More... | |
void | setConnection (industrial::smpl_msg_connection::SmplMsgConnection *connection) |
Sets connection manager. More... | |
void | setNumHandlers (unsigned int num_handlers) |
Sets message type that callback expects. More... | |
Private Attributes | |
industrial::comms_fault_handler::CommsFaultHandler * | comms_hndlr_ |
Reference to comms handler. More... | |
industrial::smpl_msg_connection::SmplMsgConnection * | connection_ |
Reference to reply connection (called if incoming message requires a reply) More... | |
industrial::simple_comms_fault_handler::SimpleCommsFaultHandler | def_comms_hndlr_ |
Internal default comms handler (this is used if a communications fault handler is not specified as part of the class init. More... | |
industrial::message_handler::MessageHandler * | handlers_ [MAX_NUM_HANDLERS] |
buffer of handlers More... | |
unsigned int | num_handlers_ |
Number of handlers. More... | |
industrial::ping_handler::PingHandler | ping_hndlr_ |
Internal ping handle (by default every message manager can handle pings) More... | |
Static Private Attributes | |
static const unsigned int | MAX_NUM_HANDLERS = 64 |
Maximum number of handlers. More... | |
The message manager handles communications for a simple server.
The message manager receives simple messages via it's communications connection. It then performs function callbacks based on the message type. Callbacks perform the desired operation and send a reply, if required.
The message manager can be run in two ways. spin(), similar to ROS this executes a blocking execution indefinitely or spinOnce(), where a single execution of the manager is performed. In spinOnce mode, other server operations can be made, but the server application must make certain to execute the spinOnce() function at a minimum rate so as not to loose connection data.
THIS CLASS IS NOT THREAD-SAFE
Definition at line 74 of file message_manager.h.
industrial::message_manager::MessageManager::MessageManager | ( | ) |
Constructor.
Definition at line 65 of file message_manager.cpp.
industrial::message_manager::MessageManager::~MessageManager | ( | ) |
Destructor.
Definition at line 75 of file message_manager.cpp.
bool industrial::message_manager::MessageManager::add | ( | industrial::message_handler::MessageHandler * | handler, |
bool | allow_replace = false |
||
) |
Adds a message handler to the manager.
handler | handler to add |
replace | existing handler (of same msg-type), if exists |
Definition at line 206 of file message_manager.cpp.
|
inline |
Gets communications fault handler.
Definition at line 162 of file message_manager.h.
|
inlineprivate |
Gets connection for manager.
Definition at line 273 of file message_manager.h.
|
inlineprivate |
Gets default communications fault handler.
Definition at line 242 of file message_manager.h.
|
private |
Gets message handler for specific message type.
msg_type | message type to handle |
Definition at line 249 of file message_manager.cpp.
|
private |
Gets index of message handler for specific message type.
message | type to handle |
Definition at line 259 of file message_manager.cpp.
|
inline |
Gets maximumn number of handlers.
Definition at line 151 of file message_manager.h.
|
inline |
Gets number of handlers.
Definition at line 141 of file message_manager.h.
|
inlineprivate |
bool industrial::message_manager::MessageManager::init | ( | industrial::smpl_msg_connection::SmplMsgConnection * | connection | ) |
Class initializer.
connection | simple message connection that will be managed. This connection must be properly initialized and connected before it is passed to the manager. |
Definition at line 80 of file message_manager.cpp.
bool industrial::message_manager::MessageManager::init | ( | industrial::smpl_msg_connection::SmplMsgConnection * | connection, |
industrial::comms_fault_handler::CommsFaultHandler * | fault_handler | ||
) |
Class initializer.
simple | message connection that will be managed. This connection must be properly initialized and connected before it is passed to the manager. |
connection | fault handler to be used in case of a connection fault. |
Definition at line 102 of file message_manager.cpp.
|
inline |
Gets communications fault handler.
Pointer | to message handler |
Definition at line 172 of file message_manager.h.
|
inlineprivate |
Sets connection manager.
connection | connection reference |
Definition at line 262 of file message_manager.h.
|
inlineprivate |
Sets message type that callback expects.
msg_type | message type |
Definition at line 284 of file message_manager.h.
void industrial::message_manager::MessageManager::spin | ( | ) |
Perform a indefinite execution of the message manager.
Definition at line 188 of file message_manager.cpp.
void industrial::message_manager::MessageManager::spinOnce | ( | ) |
Perform an single execution of the message manager (a single receive and send (if required)
Definition at line 136 of file message_manager.cpp.
|
private |
Reference to comms handler.
Definition at line 212 of file message_manager.h.
|
private |
Reference to reply connection (called if incoming message requires a reply)
Definition at line 196 of file message_manager.h.
|
private |
Internal default comms handler (this is used if a communications fault handler is not specified as part of the class init.
Definition at line 207 of file message_manager.h.
|
private |
buffer of handlers
Definition at line 191 of file message_manager.h.
|
staticprivate |
Maximum number of handlers.
The number of handlers is limited in order to avoid dynamic memory allocation on robot controllers.
Definition at line 186 of file message_manager.h.
|
private |
Number of handlers.
Definition at line 217 of file message_manager.h.
|
private |
Internal ping handle (by default every message manager can handle pings)
Definition at line 201 of file message_manager.h.