X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FConnectors.hh;h=bb0724e20cd3948399952ab5725150870c4b9633;hb=73c33f663ff0f65e4656ea5a5f6f07a43a2e1722;hp=ddf907e0c6d5670b4b3dc0db192a78a9f181855a;hpb=26610f603ebdd465307b9621f532c1fe19fd5571;p=senf.git diff --git a/senf/PPI/Connectors.hh b/senf/PPI/Connectors.hh index ddf907e..bb0724e 100644 --- a/senf/PPI/Connectors.hh +++ b/senf/PPI/Connectors.hh @@ -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 input; senf::ppi::connector::ActiveOutputJack output; - MyGroup() + MyGroup() : queue (), analyzer (), input (queue.input), output (analyzer.output) { senf::ppi::connect(queue, analyzer); @@ -184,10 +184,14 @@ 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); Connector * peer_; @@ -218,6 +222,8 @@ namespace connector { : public virtual Connector { public: + ~PassiveConnector(); + template void onRequest(Handler handler);///< Register I/O event handler /**< The registered handler will be called, whenever packets @@ -261,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_; @@ -289,6 +296,8 @@ namespace connector { { typedef ppi::detail::Callback<>::type Callback; public: + ~ActiveConnector(); + template void onThrottle(Handler handler); ///< Register throttle notification handler /**< The handler register here will be called, whenever a @@ -331,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_; @@ -338,7 +348,7 @@ namespace connector { typedef std::vector NotifyRoutes; NotifyRoutes notifyRoutes_; - bool throttled_; + bool throttled_; friend class senf::ppi::ForwardingRoute; friend class PassiveConnector; @@ -379,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()() @@ -453,6 +462,9 @@ namespace connector { QueueingDiscipline interface. \param[in] disc New queueing discipline */ + void qdisc(QueueingDiscipline::None_t); + ///< Disable queueing discipline + protected: GenericPassiveInput(); @@ -558,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 @@ -585,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. @@ -607,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. @@ -626,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 @@ -648,7 +660,7 @@ namespace connector { ///////////////////////////////hh.e//////////////////////////////////////// #include "Connectors.cci" -//#include "Connectors.ct" +#include "Connectors.ct" #include "Connectors.cti" #endif