Obsidian
Probabilistic Geophysical Joint Inversion
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
router.hpp File Reference

A router that implements polling on multiple zeromq sockets, and a signal-based callback system depending on the socket and the subject of the message. Implementing GDFP-SW (GDF Server-apper Protocol) More...

#include <memory>
#include <future>
#include <boost/signals2/signal.hpp>
#include <boost/bimap.hpp>
#include "comms/messages.hpp"
#include "comms/transport.hpp"
Include dependency graph for router.hpp:
This graph shows which files directly or indirectly include this file:

Classes

struct  stateline::comms::SocketHandler
 Represents the callback signals for a socket. More...
 
class  stateline::comms::SocketRouter
 Implements polling and configurable routing between an arbitrary number of (pre-constructed) zeromq sockets. Functionality is attached through a signal interface. More...
 

Namespaces

 stateline
 
 stateline::comms
 

Typedefs

typedef
boost::signals2::signal< void(const
stateline::comms::Message &)> 
MsgSignal
 Type representing a signal that takes a message as an argument.
 
typedef
boost::signals2::signal< void()> 
VoidSignal
 Type represent a signal that takes no arguments.
 
typedef boost::bimap< SocketID,
uint > 
stateline::comms::IndexBiMap
 A type that maps between indices in an array, and SocketID objects.
 

Enumerations

enum  stateline::comms::SocketID {
  REQUESTER, MINION, WORKER, NETWORK,
  HEARTBEAT, ALPHA, BETA
}
 Enums to give each type of socket an index.
 

Functions

std::ostream & stateline::comms::operator<< (std::ostream &os, const SocketID &id)
 Print a socket ID for logging and debugging purposes. More...
 

Detailed Description

A router that implements polling on multiple zeromq sockets, and a signal-based callback system depending on the socket and the subject of the message. Implementing GDFP-SW (GDF Server-apper Protocol)

Author
Lachlan McCalman
Date
2014
License:
Affero General Public License version 3 or later