// $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
/** \file
\brief Joins public header */
-#ifndef HH_Joins_
-#define HH_Joins_ 1
+#ifndef HH_SENF_PPI_Joins_
+#define HH_SENF_PPI_Joins_ 1
// Custom includes
#include <boost/ptr_container/ptr_vector.hpp>
template <class Source>
connector::GenericPassiveInput & connect(Source & source, module::PassiveJoin & target);
-
+
template <class Source>
connector::GenericActiveInput & connect(Source & source, module::PriorityJoin & target);
/** \brief Join multiple packet streams with passive inputs
The PassiveJoin will combine any number of packet streams. You may connect any number of
- GenericActiveOutput's to the PassiveJoin instance. The combined stream is then provided on the
- GenericActiveOutput \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::GenericActiveOutput output;
+ connector::ActiveOutput<> output;
PassiveJoin();
private:
- connector::GenericPassiveInput & newInput();
+ connector::PassiveInput<> & newInput();
#ifndef DOXYGEN
// I didn't get template friend functions to work ...
void onThrottle();
void onUnthrottle();
- typedef boost::ptr_vector<connector::GenericPassiveInput > 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
- GenericPassiveInput's to the PassiveJoin instance. The combined stream is then provided on the
- GenericPassiveOutput \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::GenericPassiveOutput output;
+ connector::PassiveOutput<> output;
PriorityJoin();
private:
- connector::GenericActiveInput & newInput();
+ connector::ActiveInput<> & newInput();
#ifndef DOXYGEN
public:
void onThrottle();
void onUnthrottle();
- typedef boost::ptr_vector<connector::GenericActiveInput> Inputs;
+ typedef boost::ptr_vector<connector::ActiveInput<> > Inputs;
Inputs inputs_;
};