// $Id$
//
-// Copyright (C) 2007
-// Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
// Stefan Bund <g0dil@berlios.de>
//
// This program is free software; you can redistribute it and/or modify
#ifndef DOXYGEN
template <class Source>
- connector::PassiveInput & connect(Source & source, module::PassiveJoin & target);
-
+ connector::GenericPassiveInput & connect(Source & source, module::PassiveJoin & target);
+
template <class Source>
- connector::ActiveInput & connect(Source & source, module::PriorityJoin & target);
+ connector::GenericActiveInput & connect(Source & source, module::PriorityJoin & target);
#endif
/** \brief Join multiple packet streams with passive inputs
The PassiveJoin will combine any number of packet streams. You may connect any number of
- ActiveOutput's to the PassiveJoin instance. The combined stream is then provided on the
- ActiveOutput \a output.
+ ActiveOutput<>'s to the PassiveJoin instance. The combined stream is then provided on the
+ ActiveOutput<> \a output.
Since PassiveJoin allows any number of incoming packet streams, the input connectors are
dynamically managed. A special senf::ppi::connect() overload is used to dynamically create
{
SENF_PPI_MODULE(PassiveJoin);
public:
- connector::ActiveOutput output;
+ connector::ActiveOutput<> output;
PassiveJoin();
private:
- connector::PassiveInput & newInput();
+ connector::PassiveInput<> & newInput();
#ifndef DOXYGEN
// I didn't get template friend functions to work ...
public:
#endif
template <class Source>
- connector::PassiveInput & connect(Source & source);
+ connector::GenericPassiveInput & connect(Source & source);
private:
- void request(connector::PassiveInput & input);
+ void request(connector::GenericPassiveInput & input);
void onThrottle();
void onUnthrottle();
- typedef boost::ptr_vector<connector::PassiveInput> Inputs;
+ typedef boost::ptr_vector<connector::PassiveInput<> > Inputs;
Inputs inputs_;
};
/** \brief 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 \a output.
+ PassiveInput<>'s to the PassiveJoin instance. The combined stream is then provided on the
+ PassiveOutput<> \a output.
When a packet request is received on Priorityjoin's \a output, The request will be serviced
from the first unthrottled input. The order, in which connectors are connected to the
\endcode
Here, \a module1 has higher priority than \a module2 which will only be queried if \a
module1 is throttled.
-
+
\ingroup routing_modules
*/
class PriorityJoin
{
SENF_PPI_MODULE(PriorityJoin);
public:
- connector::PassiveOutput output;
+ connector::PassiveOutput<> output;
PriorityJoin();
private:
- connector::ActiveInput & newInput();
+ connector::ActiveInput<> & newInput();
#ifndef DOXYGEN
public:
#endif
template <class Source>
- connector::ActiveInput & connect(Source & source);
+ connector::GenericActiveInput & connect(Source & source);
private:
void request();
void onThrottle();
void onUnthrottle();
- typedef boost::ptr_vector<connector::ActiveInput> Inputs;
+ typedef boost::ptr_vector<connector::ActiveInput<> > Inputs;
Inputs inputs_;
};