X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FConnectors.hh;h=852e5e61473b885f4bfe5eb306f03bdb316db50c;hb=93d9568d448749dc187e7622b733a4a3caa319df;hp=cd6e1e1064f6380d206d85ccb49b9460a5be8ea7;hpb=9cb871b939efe93e35dd96808d25089399acfc46;p=senf.git diff --git a/senf/PPI/Connectors.hh b/senf/PPI/Connectors.hh index cd6e1e1..852e5e6 100644 --- a/senf/PPI/Connectors.hh +++ b/senf/PPI/Connectors.hh @@ -39,7 +39,7 @@ #include "ModuleManager.hh" //#include "Connectors.mpp" -///////////////////////////////hh.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace senf { namespace ppi { @@ -187,11 +187,12 @@ namespace connector { void unregisterConnector(); + virtual void v_disconnected(); + virtual void v_connected(); + private: virtual std::type_info const & packetTypeID(); - virtual void v_disconnected() const; - void setModule(module::Module & module); Connector * peer_; @@ -251,6 +252,9 @@ namespace connector { void emit(); + virtual void v_disconnected(); + virtual void v_connected(); + private: virtual void v_init(); @@ -269,6 +273,8 @@ namespace connector { void registerRoute(ForwardingRoute & route); void unregisterRoute(ForwardingRoute & route); + ActiveConnector * peer_; + typedef ppi::detail::Callback<>::type Callback; Callback callback_; @@ -331,6 +337,9 @@ namespace connector { protected: ActiveConnector(); + virtual void v_disconnected(); + virtual void v_connected(); + private: virtual void v_init(); @@ -342,6 +351,8 @@ namespace connector { void registerRoute(ForwardingRoute & route); void unregisterRoute(ForwardingRoute & route); + PassiveConnector * peer_; + Callback throttleCallback_; Callback unthrottleCallback_; @@ -389,9 +400,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()() @@ -407,6 +417,9 @@ namespace connector { protected: InputConnector(); + virtual void v_disconnected(); + virtual void v_connected(); + private: void enqueue(Packet const & p); @@ -414,6 +427,7 @@ namespace connector { virtual void v_enqueueEvent(); virtual void v_dequeueEvent(); + OutputConnector * peer_; Queue queue_; friend class OutputConnector; @@ -437,6 +451,12 @@ namespace connector { protected: OutputConnector(); + + virtual void v_disconnected(); + virtual void v_connected(); + + private: + InputConnector * peer_; }; /** \brief Combination of PassiveConnector and InputConnector @@ -463,15 +483,21 @@ namespace connector { QueueingDiscipline interface. \param[in] disc New queueing discipline */ + void qdisc(QueueingDiscipline::None_t); + ///< Disable queueing discipline protected: GenericPassiveInput(); + virtual void v_disconnected(); + virtual void v_connected(); + private: void v_enqueueEvent(); void v_dequeueEvent(); void v_unthrottleEvent(); + GenericActiveOutput * peer_; boost::scoped_ptr qdisc_; }; @@ -493,6 +519,11 @@ namespace connector { protected: GenericPassiveOutput(); + virtual void v_disconnected(); + virtual void v_connected(); + + private: + GenericActiveInput * peer_; }; /** \brief Combination of ActiveConnector and InputConnector @@ -511,8 +542,13 @@ namespace connector { protected: GenericActiveInput(); + virtual void v_disconnected(); + virtual void v_connected(); + private: void v_requestEvent(); + + GenericPassiveOutput * peer_; }; /** \brief Combination of ActiveConnector and OutputConnector @@ -531,8 +567,14 @@ namespace connector { protected: GenericActiveOutput(); + virtual void v_disconnected(); + virtual void v_connected(); + + private: + GenericPassiveInput * peer_; }; + #ifndef DOXYGEN # define TypedConnector_Input read @@ -628,8 +670,8 @@ namespace connector { class ActiveOutput : public GenericActiveOutput { public: - operator()(PacketType packet); ///< Send out a packet - void write(PacketType packet); ///< Alias for operator() + void operator()(PacketType packet); ///< Send out a packet + void write(PacketType packet); ///< Alias for operator() }; /** \brief Connector passively providing packets @@ -648,17 +690,17 @@ namespace connector { class PassiveOutput : public GenericPassiveOutput { public: - operator()(PacketType packet); ///< Send out a packet - void write(PacketType packet); ///< Alias for operator() + void operator()(PacketType packet); ///< Send out a packet + void write(PacketType packet); ///< Alias for operator() }; #endif }}} -///////////////////////////////hh.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #include "Connectors.cci" -//#include "Connectors.ct" +#include "Connectors.ct" #include "Connectors.cti" #endif