Join multiple packet streams with active inputs. More...
#include <senf/PPI/Joins.hh>
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::DirectoryNode & | sysConsoleDir () 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 &) |
Related Functions inherited from senf::ppi::module::MultiConnectorMixin< Self_, ConnectorType_, KeyType_, ContainerType_ > | |
template<class MultiConnectorSource , class Target , class A1 > | |
MultiConnectorSource::ConnectorType & | connect (MultiConnectorSource &source, A1 const &a1, Target &target) |
Connect MultiConnector source to arbitrary target. More... | |
template<class Source , class MultiConnectorTarget , class A1 > | |
MultiConnectorTarget::ConnectorType & | connect (Source &source, MultiConnectorTarget &target, A1 const &a1) |
Connect arbitrary source to MultiConnector target. More... | |
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.
Here, module1 has higher priority than module2 which will only be queried if module1 is throttled.
connector::PassiveOutput senf::ppi::module::PriorityJoin::output |