Socket: Add missing InetSocketProtocol baseclass to relevant socket protocols
[senf.git] / PPI / PassiveQueue.hh
index ba28888..2412c4a 100644 (file)
@@ -1,6 +1,8 @@
-// Copyright (C) 2007 
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+// $Id$
+//
+// 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
@@ -25,6 +27,9 @@
 #define HH_PassiveQueue_ 1
 
 // Custom includes
+#include "Connectors.hh"
+#include "Module.hh"
+#include "predecl.hh"
 
 //#include "PassiveQueue.mpp"
 ///////////////////////////////hh.p////////////////////////////////////////
 namespace senf {
 namespace ppi {
 namespace module {
-    
+
     /** \brief Adaptor to connect active a pair of active connectors.
 
         This adaptor queue is used to connect two active connectors to each other. The queue
         receives data in it's passive input and places them in it's queue. Whenever data is
-        requested from the passive output, a packet is dequeued. 
+        requested from the passive output, a packet is dequeued.
 
         The PassiveQueue will automatically throttle in both directions. Throttling on the input
-        connector is the standard throttling as implemented in connector::PassiveInput. Additional,
-        forward throttling notifications are sent out whenever the queue is empty.
+        connector is the standard throttling as implemented in
+        connector::PassiveInput<>. Additional forward throttling notifications are sent out
+        whenever the queue is empty.
+
+        \ingroup adapter_modules
      */
-    class PassiveQueue 
+    class PassiveQueue
+        : public module::Module
     {
+        SENF_PPI_MODULE(PassiveQueue);
     public:
-        connector::PassiveInput input;
-        connector::PassiveOutput output;
-        
+        connector::PassiveInput<> input;
+        connector::PassiveOutput<> output;
+
         PassiveQueue();
 
-        void qdisc(QueueingDiscipline const & disc); ///< Change the queueing discipline
-        /**< This call changs the queueing discipline of the queue. This call is just forwarded to
-             the \a input connector.
-             
-             \see connector::PassiveInput::qdisc() */
+        template <class QDiscipline>
+        void qdisc(QDiscipline const & disc); ///< Change the queueing discipline
+                                        /**< This call changes the queueing discipline of the
+                                             queue. This call is just forwarded to the \a input
+                                             connector.
+
+                                             \see connector::GenericPassiveInput::qdisc() */
+
+    private:
+        virtual void v_init();
+
+        void onInput();
+        void onOutput();
     };
 
 }}}
 
 ///////////////////////////////hh.e////////////////////////////////////////
-//#include "PassiveQueue.cci"
+#include "PassiveQueue.cci"
 //#include "PassiveQueue.ct"
-//#include "PassiveQueue.cti"
+#include "PassiveQueue.cti"
 #endif
 
 \f
@@ -74,4 +92,5 @@ namespace module {
 // indent-tabs-mode: nil
 // ispell-local-dictionary: "american"
 // compile-command: "scons -u test"
+// comment-column: 40
 // End: