senf::ppi::module::PriorityJoin Class Reference

Join multiple packet streams with active inputs. More...

#include <senf/PPI/Joins.hh>

Inheritance diagram for senf::ppi::module::PriorityJoin:

Public Member Functions

 PriorityJoin ()
 
- Public Member Functions inherited from senf::ppi::module::Module
virtual ~Module ()
 

Public Attributes

connector::PassiveOutput output
 

Additional Inherited Members

- Public Types inherited from senf::ppi::module::MultiConnectorMixin< Self_, ConnectorType_, KeyType_, ContainerType_ >
typedef ConnectorType_ ConnectorType
 Type of MultiConnector connector. More...
 
- Protected Types inherited from senf::ppi::module::MultiConnectorMixin< Self_, ConnectorType_, KeyType_, ContainerType_ >
typedef ContainerType_ ContainerType
 Type of connector container. More...
 
- Protected Member Functions inherited from senf::ppi::module::Module
 Module ()
 
Route< connector::InputConnector, connector::OutputConnector > & route (connector::InputConnector &input, connector::OutputConnector &output)
 Define flow information. More...
 
Route< connector::InputConnector, EventDescriptor > & route (connector::InputConnector &input, EventDescriptor &output)
 Define flow information. More...
 
Route< EventDescriptor, connector::OutputConnector > & route (EventDescriptor &input, connector::OutputConnector &output)
 Define flow information. More...
 
void noroute (connector::Connector &connector)
 Define terminal connectors. More...
 
template<class Target >
void registerEvent (EventDescriptor &descriptor, Target target)
 Register an external event. More...
 
ClockService::clock_type const & time () const
 Time-stamp of the currently processing event. More...
 
ClockService::clock_type const & now () const
 Current time of the currently processing event. More...
 
virtual void v_init ()
 Called after module setup. More...
 
console::DirectoryNodesysConsoleDir () const
 
void destroy ()
 
- Protected Member Functions inherited from senf::ppi::module::MultiConnectorMixin< Self_, ConnectorType_, KeyType_, ContainerType_ >
ContainerType_ & connectors ()
 Get connector container. More...
 
ContainerType_ const & connectors () const
 Get connectors container (const) More...
 
void connectorDestroy (ConnectorType const &)
 

Detailed Description

Join multiple packet streams with active inputs.

The PriorityJoin will combine any number of packet streams. You may connect any number of PassiveInput<>'s to the PassiveJoin instance. The combined stream is then provided on the PassiveOutput<> output.

When a packet request is received on Priorityjoin's output, The request will be serviced from the first unthrottled input. The order, in which connectors are connected to the PriorityJoin's input is important: The earlier connected peer has the higher priority and will be serviced first.

Since PriorityJoin allows any number of incoming packet streams, the input connectors are dynamically managed. A special senf::ppi::connect() overload is used to dynamically create the needed input connectors. This hides this extra functionality from the user.

ppi::connect(module1,join); // Connect first module to join's input
ppi::connect(module2.some_output,join); // Connect another module to join's input
ppi::connect(join,module3); // Forward combined stream to module3

Here, module1 has higher priority than module2 which will only be queried if module1 is throttled.

Definition at line 98 of file Joins.hh.

Constructor & Destructor Documentation

◆ PriorityJoin()

senf::ppi::module::PriorityJoin::PriorityJoin ( )

Definition at line 33 of file Joins.cc.

Member Data Documentation

◆ output

connector::PassiveOutput senf::ppi::module::PriorityJoin::output

Definition at line 102 of file Joins.hh.


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