X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FJoins.hh;h=8960551b24d73f12060f4259c621acf8f33c2119;hb=f2f5d59e83863f3b513950173baee1b6da2aee3c;hp=f7c1c3e68e2a8b0e1bc8bf91603544445490969d;hpb=416cdd1c85cdf2669785e93a71426a3206166758;p=senf.git diff --git a/PPI/Joins.hh b/PPI/Joins.hh index f7c1c3e..8960551 100644 --- a/PPI/Joins.hh +++ b/PPI/Joins.hh @@ -1,8 +1,8 @@ // $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 // // This program is free software; you can redistribute it and/or modify @@ -23,8 +23,8 @@ /** \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 @@ -42,9 +42,10 @@ namespace ppi { template connector::GenericPassiveInput & connect(Source & source, module::PassiveJoin & target); - + template - connector::GenericActiveInput & connect(Source & source, module::PriorityJoin & target); + connector::GenericActiveInput & connect(Source & source, module::PriorityJoin & target, + int priority = -1); #endif @@ -53,8 +54,8 @@ namespace module { /** \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 @@ -74,12 +75,12 @@ namespace module { { 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 ... @@ -93,15 +94,15 @@ namespace module { void onThrottle(); void onUnthrottle(); - typedef boost::ptr_vector Inputs; + typedef boost::ptr_vector > 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 @@ -120,7 +121,7 @@ namespace module { \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 @@ -128,25 +129,25 @@ namespace module { { SENF_PPI_MODULE(PriorityJoin); public: - connector::GenericPassiveOutput output; + connector::PassiveOutput<> output; PriorityJoin(); private: - connector::GenericActiveInput & newInput(); + connector::ActiveInput<> & newInput(int priority); #ifndef DOXYGEN public: #endif template - connector::GenericActiveInput & connect(Source & source); + connector::GenericActiveInput & connect(Source & source, int prioricty); private: void request(); void onThrottle(); void onUnthrottle(); - typedef boost::ptr_vector Inputs; + typedef boost::ptr_vector > Inputs; Inputs inputs_; };