Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
industrial::message_manager::MessageManager Class Reference

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::CommsFaultHandlergetCommsFaultHandler ()
 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::SmplMsgConnectiongetConnection ()
 Gets connection for manager. More...
 
industrial::simple_comms_fault_handler::SimpleCommsFaultHandlergetDefaultCommsFaultHandler ()
 Gets default communications fault handler. More...
 
industrial::message_handler::MessageHandlergetHandler (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::PingHandlergetPingHandler ()
 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::CommsFaultHandlercomms_hndlr_
 Reference to comms handler. More...
 
industrial::smpl_msg_connection::SmplMsgConnectionconnection_
 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::MessageHandlerhandlers_ [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...
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ MessageManager()

industrial::message_manager::MessageManager::MessageManager ( )

Constructor.

Definition at line 65 of file message_manager.cpp.

◆ ~MessageManager()

industrial::message_manager::MessageManager::~MessageManager ( )

Destructor.

Definition at line 75 of file message_manager.cpp.

Member Function Documentation

◆ add()

bool industrial::message_manager::MessageManager::add ( industrial::message_handler::MessageHandler handler,
bool  allow_replace = false 
)

Adds a message handler to the manager.

Parameters
handlerhandler to add
replaceexisting handler (of same msg-type), if exists
Returns
true if successful, otherwise false (max # of handlers reached)

Definition at line 206 of file message_manager.cpp.

◆ getCommsFaultHandler()

industrial::comms_fault_handler::CommsFaultHandler* industrial::message_manager::MessageManager::getCommsFaultHandler ( )
inline

Gets communications fault handler.

Returns
reference to message handler or NULL if one doesn't exist

Definition at line 162 of file message_manager.h.

◆ getConnection()

industrial::smpl_msg_connection::SmplMsgConnection* industrial::message_manager::MessageManager::getConnection ( )
inlineprivate

Gets connection for manager.

Returns
connection reference

Definition at line 273 of file message_manager.h.

◆ getDefaultCommsFaultHandler()

industrial::simple_comms_fault_handler::SimpleCommsFaultHandler& industrial::message_manager::MessageManager::getDefaultCommsFaultHandler ( )
inlineprivate

Gets default communications fault handler.

Returns
reference to message handler or NULL if one doesn't exist

Definition at line 242 of file message_manager.h.

◆ getHandler()

MessageHandler * industrial::message_manager::MessageManager::getHandler ( int  msg_type)
private

Gets message handler for specific message type.

Parameters
msg_typemessage type to handle
Returns
reference to message handler or NULL if one doesn't exist

Definition at line 249 of file message_manager.cpp.

◆ getHandlerIdx()

int industrial::message_manager::MessageManager::getHandlerIdx ( int  msg_type)
private

Gets index of message handler for specific message type.

Parameters
messagetype to handle
Returns
index of matching handler or -1 if one doesn't exist

Definition at line 259 of file message_manager.cpp.

◆ getMaxNumHandlers()

unsigned int industrial::message_manager::MessageManager::getMaxNumHandlers ( )
inline

Gets maximumn number of handlers.

Returns
connection reference

Definition at line 151 of file message_manager.h.

◆ getNumHandlers()

unsigned int industrial::message_manager::MessageManager::getNumHandlers ( )
inline

Gets number of handlers.

Returns
connection reference

Definition at line 141 of file message_manager.h.

◆ getPingHandler()

industrial::ping_handler::PingHandler& industrial::message_manager::MessageManager::getPingHandler ( )
inlineprivate

Gets ping handler.

Returns
connection reference

Definition at line 251 of file message_manager.h.

◆ init() [1/2]

bool industrial::message_manager::MessageManager::init ( industrial::smpl_msg_connection::SmplMsgConnection connection)

Class initializer.

Parameters
connectionsimple message connection that will be managed. This connection must be properly initialized and connected before it is passed to the manager.
Returns
true on success, false otherwise

Definition at line 80 of file message_manager.cpp.

◆ init() [2/2]

bool industrial::message_manager::MessageManager::init ( industrial::smpl_msg_connection::SmplMsgConnection connection,
industrial::comms_fault_handler::CommsFaultHandler fault_handler 
)

Class initializer.

Parameters
simplemessage connection that will be managed. This connection must be properly initialized and connected before it is passed to the manager.
connectionfault handler to be used in case of a connection fault.
Returns
true on success, false otherwise

Definition at line 102 of file message_manager.cpp.

◆ setCommsFaultHandler()

void industrial::message_manager::MessageManager::setCommsFaultHandler ( industrial::comms_fault_handler::CommsFaultHandler handler)
inline

Gets communications fault handler.

Parameters
Pointerto message handler

Definition at line 172 of file message_manager.h.

◆ setConnection()

void industrial::message_manager::MessageManager::setConnection ( industrial::smpl_msg_connection::SmplMsgConnection connection)
inlineprivate

Sets connection manager.

Parameters
connectionconnection reference

Definition at line 262 of file message_manager.h.

◆ setNumHandlers()

void industrial::message_manager::MessageManager::setNumHandlers ( unsigned int  num_handlers)
inlineprivate

Sets message type that callback expects.

Parameters
msg_typemessage type

Definition at line 284 of file message_manager.h.

◆ spin()

void industrial::message_manager::MessageManager::spin ( )

Perform a indefinite execution of the message manager.

Definition at line 188 of file message_manager.cpp.

◆ spinOnce()

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.

Member Data Documentation

◆ comms_hndlr_

industrial::comms_fault_handler::CommsFaultHandler* industrial::message_manager::MessageManager::comms_hndlr_
private

Reference to comms handler.

Definition at line 212 of file message_manager.h.

◆ connection_

industrial::smpl_msg_connection::SmplMsgConnection* industrial::message_manager::MessageManager::connection_
private

Reference to reply connection (called if incoming message requires a reply)

Definition at line 196 of file message_manager.h.

◆ def_comms_hndlr_

industrial::simple_comms_fault_handler::SimpleCommsFaultHandler industrial::message_manager::MessageManager::def_comms_hndlr_
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.

◆ handlers_

industrial::message_handler::MessageHandler* industrial::message_manager::MessageManager::handlers_[MAX_NUM_HANDLERS]
private

buffer of handlers

Definition at line 191 of file message_manager.h.

◆ MAX_NUM_HANDLERS

const unsigned int industrial::message_manager::MessageManager::MAX_NUM_HANDLERS = 64
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.

◆ num_handlers_

unsigned int industrial::message_manager::MessageManager::num_handlers_
private

Number of handlers.

Definition at line 217 of file message_manager.h.

◆ ping_hndlr_

industrial::ping_handler::PingHandler industrial::message_manager::MessageManager::ping_hndlr_
private

Internal ping handle (by default every message manager can handle pings)

Definition at line 201 of file message_manager.h.


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


simple_message
Author(s): Shaun Edwards
autogenerated on Wed Mar 2 2022 00:24:53