Fawkes API  Fawkes Development Version
fawkes::FawkesNetworkHub Class Referenceabstract

Fawkes Network Hub. More...

#include <netcomm/fawkes/hub.h>

Inheritance diagram for fawkes::FawkesNetworkHub:

Public Member Functions

virtual ~FawkesNetworkHub ()
 Virtual empty destructor. More...
 
virtual void broadcast (FawkesNetworkMessage *msg)=0
 Method to broadcast a message to all connected clients. More...
 
virtual void broadcast (unsigned short int component_id, unsigned short int msg_id, void *payload, unsigned int payload_size)=0
 This is an overloaded member function, provided for convenience. More...
 
virtual void broadcast (unsigned short int component_id, unsigned short int msg_id)=0
 This is an overloaded member function, provided for convenience. More...
 
virtual void send (FawkesNetworkMessage *msg)=0
 Method to send a message to a specific client. More...
 
virtual void send (unsigned int to_clid, unsigned short int component_id, unsigned short int msg_id)=0
 This is an overloaded member function, provided for convenience. More...
 
virtual void send (unsigned int to_clid, unsigned short int component_id, unsigned short int msg_id, void *payload, unsigned int payload_size)=0
 This is an overloaded member function, provided for convenience. More...
 
virtual void send (unsigned int to_clid, unsigned short int component_id, unsigned short int msg_id, FawkesNetworkMessageContent *content)=0
 This is an overloaded member function, provided for convenience. More...
 
virtual void add_handler (FawkesNetworkHandler *handler)=0
 Add a message handler. More...
 
virtual void remove_handler (FawkesNetworkHandler *handler)=0
 Remove a message handler. More...
 
virtual void force_send ()=0
 Force sending of all pending messages. More...
 

Detailed Description

Fawkes Network Hub.

This interface is the main entry point for applications, plugins and threads that use the Fawkes network protocol. The hub provides means for broadcasting messages to all connected clients, for sending messages to a specific connected client and to add and remove handlers to process incoming messages.

Author
Tim Niemueller

Definition at line 33 of file hub.h.

Constructor & Destructor Documentation

◆ ~FawkesNetworkHub()

fawkes::FawkesNetworkHub::~FawkesNetworkHub ( )
virtual

Virtual empty destructor.

Definition at line 119 of file hub.cpp.

Member Function Documentation

◆ add_handler()

void fawkes::FawkesNetworkHub::add_handler ( FawkesNetworkHandler handler)
pure virtual

Add a message handler.

This message handler is called for incoming messages that have an appropriate component ID (which is supplied by the handler).

Parameters
handlerhandler to add

Implemented in fawkes::FawkesNetworkServerThread.

Referenced by fawkes::BlackBoardNetworkHandler::BlackBoardNetworkHandler(), fawkes::ConfigNetworkHandler::ConfigNetworkHandler(), ExampleNetworkThread::init(), fawkes::NetworkLogger::NetworkLogger(), and fawkes::PluginNetworkHandler::PluginNetworkHandler().

◆ broadcast() [1/3]

void fawkes::FawkesNetworkHub::broadcast ( FawkesNetworkMessage msg)
pure virtual

Method to broadcast a message to all connected clients.

This method shall be implemented thus that the message is sent to all connected clients.

Parameters
msgmessage to send.

Implemented in fawkes::FawkesNetworkServerThread.

Referenced by fawkes::BlackBoardNetHandlerInterfaceObserver::~BlackBoardNetHandlerInterfaceObserver().

◆ broadcast() [2/3]

void fawkes::FawkesNetworkHub::broadcast ( unsigned short int  component_id,
unsigned short int  msg_id,
void *  payload,
unsigned int  payload_size 
)
pure virtual

This is an overloaded member function, provided for convenience.

It differs from the above function only in what arguments it accepts. A FawkesNetworkMessage will be created transparently and broadcasted.

Parameters
component_idcomponent id
msg_idmessage id
payloadbuffer with payload
payload_sizepayload size

Implemented in fawkes::FawkesNetworkServerThread.

◆ broadcast() [3/3]

void fawkes::FawkesNetworkHub::broadcast ( unsigned short int  component_id,
unsigned short int  msg_id 
)
pure virtual

This is an overloaded member function, provided for convenience.

It differs from the above function only in what arguments it accepts. A FawkesNetworkMessage will be created transparently and broadcasted. This can be used for messages without payload.

Parameters
component_idcomponent id
msg_idmessage id

Implemented in fawkes::FawkesNetworkServerThread.

◆ force_send()

void fawkes::FawkesNetworkHub::force_send ( )
pure virtual

Force sending of all pending messages.

This will order the sending of all pending outbound messages that are currently enqueued for clients. The method will block until this is done. It is not ensured that no messages are added during that time. Make sure that the call constraints guarantee this.

Implemented in fawkes::FawkesNetworkServerThread.

◆ remove_handler()

void fawkes::FawkesNetworkHub::remove_handler ( FawkesNetworkHandler handler)
pure virtual

Remove a message handler.

The message handler is removed from the list of handlers and is no longer called for incoming data.

Parameters
handlerhandler to remove

Implemented in fawkes::FawkesNetworkServerThread.

Referenced by ExampleNetworkThread::finalize(), fawkes::BlackBoardNetworkHandler::~BlackBoardNetworkHandler(), fawkes::ConfigNetworkHandler::~ConfigNetworkHandler(), fawkes::NetworkLogger::~NetworkLogger(), and fawkes::PluginNetworkHandler::~PluginNetworkHandler().

◆ send() [1/4]

◆ send() [2/4]

void fawkes::FawkesNetworkHub::send ( unsigned int  to_clid,
unsigned short int  component_id,
unsigned short int  msg_id 
)
pure virtual

This is an overloaded member function, provided for convenience.

It differs from the above function only in what arguments it accepts. A FawkesNetworkMessage will be created transparently and send to the client with the given ID. This can be used for messages without payload.

Parameters
to_clidclient ID of recipient
component_idcomponent id
msg_idmessage ID

Implemented in fawkes::FawkesNetworkServerThread.

◆ send() [3/4]

void fawkes::FawkesNetworkHub::send ( unsigned int  to_clid,
unsigned short int  component_id,
unsigned short int  msg_id,
void *  payload,
unsigned int  payload_size 
)
pure virtual

This is an overloaded member function, provided for convenience.

It differs from the above function only in what arguments it accepts. A FawkesNetworkMessage will be created transparently and send to the client with the given ID.

Parameters
to_clidclient ID of recipient
component_idcomponent id
msg_idmessage id
payloadbuffer with payload
payload_sizepayload size

Implemented in fawkes::FawkesNetworkServerThread.

◆ send() [4/4]

void fawkes::FawkesNetworkHub::send ( unsigned int  to_clid,
unsigned short int  component_id,
unsigned short int  msg_id,
FawkesNetworkMessageContent content 
)
pure virtual

This is an overloaded member function, provided for convenience.

It differs from the above function only in what arguments it accepts. A FawkesNetworkMessage will be created transparently and send to the client with the given ID.

Parameters
to_clidclient ID of recipient
component_idcomponent id
msg_idmessage id
contentcomplex message content

Implemented in fawkes::FawkesNetworkServerThread.


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