X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FJoins.hh;h=6c260c086eff7161a34fcd5221240ae138f72c05;hb=b1f9349b1f3521d58cbef52ead0f2e5303a58c9e;hp=8960551b24d73f12060f4259c621acf8f33c2119;hpb=160f4413563be5515d5c1d2884b06bc9807ea6dd;p=senf.git diff --git a/PPI/Joins.hh b/PPI/Joins.hh index 8960551..6c260c0 100644 --- a/PPI/Joins.hh +++ b/PPI/Joins.hh @@ -31,6 +31,7 @@ #include "predecl.hh" #include "Connectors.hh" #include "Module.hh" +#include "MultiConnectorMixin.hh" //#include "Joins.mpp" ///////////////////////////////hh.p//////////////////////////////////////// @@ -38,17 +39,6 @@ namespace senf { namespace ppi { -#ifndef DOXYGEN - - template - connector::GenericPassiveInput & connect(Source & source, module::PassiveJoin & target); - - template - connector::GenericActiveInput & connect(Source & source, module::PriorityJoin & target, - int priority = -1); - -#endif - namespace module { /** \brief Join multiple packet streams with passive inputs @@ -71,7 +61,8 @@ namespace module { \ingroup routing_modules */ class PassiveJoin - : public Module + : public Module, + public MultiConnectorMixin > { SENF_PPI_MODULE(PassiveJoin); public: @@ -80,22 +71,12 @@ namespace module { PassiveJoin(); private: - connector::PassiveInput<> & newInput(); - -#ifndef DOXYGEN - // I didn't get template friend functions to work ... - public: -#endif - template - connector::GenericPassiveInput & connect(Source & source); - - private: + void connectorSetup(connector::PassiveInput<> & conn); void request(connector::GenericPassiveInput & input); void onThrottle(); void onUnthrottle(); - typedef boost::ptr_vector > Inputs; - Inputs inputs_; + friend class MultiConnectorMixin >; }; /** \brief Join multiple packet streams with active inputs @@ -125,7 +106,8 @@ namespace module { \ingroup routing_modules */ class PriorityJoin - : public Module + : public Module, + public MultiConnectorMixin > { SENF_PPI_MODULE(PriorityJoin); public: @@ -134,21 +116,12 @@ namespace module { PriorityJoin(); private: - connector::ActiveInput<> & newInput(int priority); - -#ifndef DOXYGEN - public: -#endif - template - connector::GenericActiveInput & connect(Source & source, int prioricty); - - private: + void connectorSetup(PriorityJoin::ConnectorType & conn, int priority=-1); void request(); void onThrottle(); void onUnthrottle(); - typedef boost::ptr_vector > Inputs; - Inputs inputs_; + friend class MultiConnectorMixin >; }; }}} @@ -156,7 +129,7 @@ namespace module { ///////////////////////////////hh.e//////////////////////////////////////// #include "Joins.cci" //#include "Joins.ct" -#include "Joins.cti" +//#include "Joins.cti" #endif