Add support for multiple VAR+=VALUE arguments
[senf.git] / senf / PPI / Connectors.hh
index c0b0b49..bb0724e 100644 (file)
@@ -63,8 +63,8 @@ namespace connector {
         We therefore have 4 connector types each of which is parameterized by the type of packet
         traversing the connector:
         \li senf::ppi::connector::ActiveInput
-        \li senf::ppi::connector::ActiveOutput 
-        \li senf::ppi::connector::PassiveInput 
+        \li senf::ppi::connector::ActiveOutput
+        \li senf::ppi::connector::PassiveInput
         \li senf::ppi::connector::PassiveOutput.
 
         Connectors are declared as module data members and are then externally connected to other
@@ -115,7 +115,7 @@ namespace connector {
             senf::ppi::connector::ActiveInputJack<senf::EthernetPacket> input;
             senf::ppi::connector::ActiveOutputJack<senf::EthernetPacket> output;
 
-            MyGroup() 
+            MyGroup()
                 : queue (), analyzer (), input (queue.input), output (analyzer.output)
             {
                 senf::ppi::connect(queue, analyzer);
@@ -184,10 +184,12 @@ namespace connector {
 
         void trace(Packet const & p, char const * label);
         void throttleTrace(char const * label, char const * type);
-        
+
+        void unregisterConnector();
+
     private:
         virtual std::type_info const & packetTypeID();
-        
+
         virtual void v_disconnected() const;
 
         void setModule(module::Module & module);
@@ -220,6 +222,8 @@ namespace connector {
         : public virtual Connector
     {
     public:
+        ~PassiveConnector();
+
         template <class Handler>
         void onRequest(Handler handler);///< Register I/O event handler
                                         /**< The registered handler will be called, whenever packets
@@ -263,6 +267,7 @@ namespace connector {
 
         // called by ForwardingRoute to register a new route
         void registerRoute(ForwardingRoute & route);
+        void unregisterRoute(ForwardingRoute & route);
 
         typedef ppi::detail::Callback<>::type Callback;
         Callback callback_;
@@ -291,6 +296,8 @@ namespace connector {
     {
         typedef ppi::detail::Callback<>::type Callback;
     public:
+        ~ActiveConnector();
+
         template <class Handler>
         void onThrottle(Handler handler); ///< Register throttle notification handler
                                         /**< The handler register here will be called, whenever a
@@ -333,6 +340,7 @@ namespace connector {
 
         // called by ForwardingRoute to register a new route
         void registerRoute(ForwardingRoute & route);
+        void unregisterRoute(ForwardingRoute & route);
 
         Callback throttleCallback_;
         Callback unthrottleCallback_;
@@ -340,7 +348,7 @@ namespace connector {
         typedef std::vector<ForwardingRoute*> NotifyRoutes;
         NotifyRoutes notifyRoutes_;
 
-        bool throttled_;        
+        bool throttled_;
 
         friend class senf::ppi::ForwardingRoute;
         friend class PassiveConnector;
@@ -381,9 +389,8 @@ namespace connector {
                                              dequeue a packet from the packet queue. If the
                                              connector is active, the connector will request new
                                              packets from the connected module. If the packet
-                                             request cannot be fulfilled, this is considered to be a
-                                             logic error in the module implementation and an
-                                             exception is raised. */
+                                             request cannot be fulfilled an in-valid Packet is
+                                             returned. */
 
         Packet read();                  ///< Alias for operator()()
 
@@ -455,6 +462,9 @@ namespace connector {
                                              QueueingDiscipline interface.
 
                                              \param[in] disc New queueing discipline */
+        void qdisc(QueueingDiscipline::None_t);
+                                        ///< Disable queueing discipline
+
 
     protected:
         GenericPassiveInput();
@@ -560,12 +570,12 @@ namespace connector {
 #else
 
     /** \brief Connector actively reading packets
-        
+
         \tparam PacketType Type of packet to read. Defaults to senf::Packet
 
         The %ActiveInput %connector template reads data actively from a connected %module. This
-        class is completely implemented via it's base-class, GenericActiveInput, the only 
-        difference is that read packets are returned as \a PacketType instead of generic 
+        class is completely implemented via it's base-class, GenericActiveInput, the only
+        difference is that read packets are returned as \a PacketType instead of generic
         senf::Packet references.
 
         \see GenericActiveInput \n
@@ -587,7 +597,7 @@ namespace connector {
         \tparam PacketType Type of packet to read. Defaults to senf::Packet
 
         The %PassiveInput %connector template receives packets sent to it from a connected
-        %module. This class is completely implemented via it's base-class, GenericPassiveInput, 
+        %module. This class is completely implemented via it's base-class, GenericPassiveInput,
         the only difference is that read packets are returned as \a PacketType instead of generic
         senf::Packet references.
 
@@ -609,7 +619,7 @@ namespace connector {
 
         \tparam PacketType Type of packet to send. Defaults to senf::Packet
 
-        The %ActiveOutput %connector template sends data actively to a connected %module. This 
+        The %ActiveOutput %connector template sends data actively to a connected %module. This
         class is completely implemented via it's base-class, GenericActiveOutput, the only
         difference is that it only sends packets of type \a PacketType.
 
@@ -628,9 +638,9 @@ namespace connector {
 
         \tparam PacketType Type of packet to send. Defaults to senf::Packet
 
-        The %PassiveOutput %connector template provides data passively to a connected %module 
-        whenever signaled. This class is completely implemented via it's base-class, 
-        GenericPassiveOutput, the only difference is that it only sends packets of type 
+        The %PassiveOutput %connector template provides data passively to a connected %module
+        whenever signaled. This class is completely implemented via it's base-class,
+        GenericPassiveOutput, the only difference is that it only sends packets of type
         \a PacketType.
 
         \see GenericPassiveOutput \n
@@ -650,7 +660,7 @@ namespace connector {
 
 ///////////////////////////////hh.e////////////////////////////////////////
 #include "Connectors.cci"
-//#include "Connectors.ct"
+#include "Connectors.ct"
 #include "Connectors.cti"
 #endif