Fix documentation build under maverick (doxygen 1.7.1)
[senf.git] / senf / PPI / Connectors.cci
index 2abd3b1..af21cf9 100644 (file)
 // Custom includes
 #include <senf/Utils/TypeInfo.hh>
 #include <senf/Utils/senfassert.hh>
+#include "Module.hh"
 
 #define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 
-///////////////////////////////////////////////////////////////////////////
+#ifdef SENF_PPI_NOTRACE
+#   define SENF_PPI_THROTTLE_TRACE(label, type)
+#   define SENF_PPI_TRACE(packet, label)
+#else
+#   define SENF_PPI_THROTTLE_TRACE(label, type) throttleTrace(label, type)
+#   define SENF_PPI_TRACE(packet, label) trace(packet, label)
+#endif
+
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::ppi::connector::Connector
 
 prefix_ senf::ppi::connector::Connector & senf::ppi::connector::Connector::peer()
     const
 {
     // The connector is not connected
-    SENF_ASSERT(peer_ && "senf::ppi::connect() call missing");
+    SENF_ASSERT(peer_, "senf::ppi::connect() call missing");
     return *peer_;
 }
 
@@ -46,7 +55,7 @@ prefix_ senf::ppi::module::Module & senf::ppi::connector::Connector::module()
 {
     // The connector is not registered in the module -> probably a route() or noroute() statement is
     // missing.
-    SENF_ASSERT(module_ && "Connector not registered: Missing route() or noroute()");
+    SENF_ASSERT(module_, "Connector not registered: Missing route() or noroute()");
     return *module_;
 }
 
@@ -60,45 +69,27 @@ prefix_ senf::ppi::connector::Connector::TraceState senf::ppi::connector::Connec
     return traceState_;
 }
 
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // protected members
 
 prefix_ senf::ppi::connector::Connector::Connector()
     : peer_(), module_()
 {}
 
-prefix_ senf::ppi::connector::Connector::~Connector()
-{
-    if (connected()) {
-        Connector & peer (*peer_);
-        peer_->peer_ = 0;
-        if (! peer.initializationScheduled())
-            peer.enqueueInitializable();
-        peer.v_disconnected();
-    }
-}
-
 prefix_ bool senf::ppi::connector::Connector::connected()
     const
 {
     return peer_;
 }
 
-////////////////////////////////////////
-// private members
-
-prefix_ void senf::ppi::connector::Connector::setModule(module::Module & module)
-{
-    module_ = &module;
-}
-
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::ppi::connector::PassiveConnector
 
 prefix_ senf::ppi::connector::ActiveConnector & senf::ppi::connector::PassiveConnector::peer()
     const
 {
-    return dynamic_cast<ActiveConnector&>(Connector::peer());
+    SENF_ASSERT(peer_, "senf::ppi::connect() call missing");
+    return *peer_;
 }
 
 prefix_ bool senf::ppi::connector::PassiveConnector::throttled()
@@ -107,19 +98,19 @@ prefix_ bool senf::ppi::connector::PassiveConnector::throttled()
     return nativeThrottled_ || remoteThrottled_;
 }
 
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // private members
 
 prefix_ void senf::ppi::connector::PassiveConnector::emitThrottle()
 {
-    throttleTrace("OUT", "throttle");
+    SENF_PPI_THROTTLE_TRACE("OUT", "throttle");
     if (connected())
         peer().notifyThrottle();
 }
 
 prefix_ void senf::ppi::connector::PassiveConnector::emitUnthrottle()
 {
-    throttleTrace("OUT", "unthrottle");
+    SENF_PPI_THROTTLE_TRACE("OUT", "unthrottle");
     if (connected()) {
         peer().notifyUnthrottle();
         v_unthrottleEvent();
@@ -136,12 +127,7 @@ prefix_ void senf::ppi::connector::PassiveConnector::notifyThrottle()
         remoteThrottled_ = true;
 }
 
-prefix_ void senf::ppi::connector::PassiveConnector::registerRoute(ForwardingRoute & route)
-{
-    routes_.push_back(&route);
-}
-
-// public members 
+// public members
 
 prefix_ bool senf::ppi::connector::PassiveConnector::nativeThrottled()
     const
@@ -168,7 +154,7 @@ prefix_ void senf::ppi::connector::PassiveConnector::unthrottle()
 
 }
 
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // protected members
 
 prefix_ senf::ppi::connector::PassiveConnector::PassiveConnector()
@@ -178,20 +164,22 @@ prefix_ senf::ppi::connector::PassiveConnector::PassiveConnector()
 prefix_ void senf::ppi::connector::PassiveConnector::emit()
 {
     // No event callback has been registered (onRequest() call missing)
-    SENF_ASSERT(callback_ && "senf::ppi::connector::PassiveConnector: missing onRequest()");
-    if (!throttled())
+    SENF_ASSERT(callback_, "senf::ppi::connector::PassiveConnector: missing onRequest()");
+    if (!throttled()) {
         callback_();
-    else
-        throttleTrace("IN ", "queueing packet");
+    } else {
+        SENF_PPI_THROTTLE_TRACE("IN ", "queueing packet");
+    }
 }
 
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::ppi::connector::ActiveConnector
 
 prefix_ senf::ppi::connector::PassiveConnector & senf::ppi::connector::ActiveConnector::peer()
     const
 {
-    return dynamic_cast<PassiveConnector&>(Connector::peer());
+    SENF_ASSERT(peer_, "senf::ppi::connect() call missing");
+    return *peer_;
 }
 
 prefix_ void senf::ppi::connector::ActiveConnector::onThrottle()
@@ -210,14 +198,14 @@ prefix_ bool senf::ppi::connector::ActiveConnector::throttled()
     return ! connected() || peer().throttled();
 }
 
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // protected members
 
 prefix_ senf::ppi::connector::ActiveConnector::ActiveConnector()
     : throttleCallback_(), unthrottleCallback_(), notifyRoutes_(), throttled_(false)
 {}
 
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::ppi::connector::InputConnector
 
 prefix_ senf::Packet senf::ppi::connector::InputConnector::read()
@@ -228,7 +216,8 @@ prefix_ senf::Packet senf::ppi::connector::InputConnector::read()
 prefix_ senf::ppi::connector::OutputConnector & senf::ppi::connector::InputConnector::peer()
     const
 {
-    return dynamic_cast<OutputConnector &>(Connector::peer());
+    SENF_ASSERT(peer_, "senf::ppi::connect() call missing");
+    return *peer_;
 }
 
 prefix_ senf::ppi::connector::InputConnector::queue_iterator
@@ -249,7 +238,7 @@ prefix_ senf::Packet senf::ppi::connector::InputConnector::peek()
     const
 {
     // Cannot peek() head of empty queue
-    SENF_ASSERT( ! queue_.empty() && 
+    SENF_ASSERT( ! queue_.empty(),
                  "senf::ppi::connector::InputConnector: cannot call peek() on empty queue" );
     return queue_.back();
 }
@@ -267,13 +256,13 @@ prefix_ bool senf::ppi::connector::InputConnector::empty()
     return queue_.empty();
 }
 
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // protected members
 
 prefix_ senf::ppi::connector::InputConnector::InputConnector()
 {}
 
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // private members
 
 prefix_ void senf::ppi::connector::InputConnector::enqueue(Packet const & p)
@@ -282,18 +271,19 @@ prefix_ void senf::ppi::connector::InputConnector::enqueue(Packet const & p)
     v_enqueueEvent();
 }
 
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::ppi::connector::OutputConnector
 
 prefix_ senf::ppi::connector::InputConnector & senf::ppi::connector::OutputConnector::peer()
     const
 {
-    return dynamic_cast<InputConnector&>(Connector::peer());
+    SENF_ASSERT(peer_, "senf::ppi::connect() call missing");
+    return *peer_;
 }
 
 prefix_ void senf::ppi::connector::OutputConnector::operator()(Packet const & p)
 {
-    trace(p, "OUT");
+    SENF_PPI_TRACE(p, "OUT");
     if (connected())
         peer().enqueue(p);
 }
@@ -303,13 +293,13 @@ prefix_ void senf::ppi::connector::OutputConnector::write(Packet const & p)
     operator()(p);
 }
 
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // protected members
 
 prefix_ senf::ppi::connector::OutputConnector::OutputConnector()
 {}
 
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::ppi::connector::GenericPassiveInput
 
 prefix_ senf::ppi::connector::GenericPassiveInput::GenericPassiveInput()
@@ -319,7 +309,8 @@ prefix_ senf::ppi::connector::GenericPassiveInput::GenericPassiveInput()
 prefix_ senf::ppi::connector::GenericActiveOutput & senf::ppi::connector::GenericPassiveInput::peer()
     const
 {
-    return dynamic_cast<GenericActiveOutput&>(Connector::peer());
+    SENF_ASSERT(peer_, "senf::ppi::connect() call missing");
+    return *peer_;
 }
 
 prefix_ bool senf::ppi::connector::GenericPassiveInput::boolean_test()
@@ -328,13 +319,14 @@ prefix_ bool senf::ppi::connector::GenericPassiveInput::boolean_test()
     return ! empty();
 }
 
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::ppi::connector::GenericPassiveOutput
 
 prefix_ senf::ppi::connector::GenericActiveInput & senf::ppi::connector::GenericPassiveOutput::peer()
     const
 {
-    return dynamic_cast<GenericActiveInput&>(Connector::peer());
+    SENF_ASSERT(peer_, "senf::ppi::connect() call missing");
+    return *peer_;
 }
 
 prefix_ bool senf::ppi::connector::GenericPassiveOutput::boolean_test()
@@ -351,13 +343,14 @@ prefix_ void senf::ppi::connector::GenericPassiveOutput::connect(GenericActiveIn
 prefix_ senf::ppi::connector::GenericPassiveOutput::GenericPassiveOutput()
 {}
 
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::ppi::connector::GenericActiveInput
 
 prefix_ senf::ppi::connector::GenericPassiveOutput & senf::ppi::connector::GenericActiveInput::peer()
     const
 {
-    return dynamic_cast<GenericPassiveOutput&>(Connector::peer());
+    SENF_ASSERT(peer_, "senf::ppi::connect() call missing");
+    return *peer_;
 }
 
 prefix_ bool senf::ppi::connector::GenericActiveInput::boolean_test()
@@ -375,13 +368,14 @@ prefix_ void senf::ppi::connector::GenericActiveInput::request()
 prefix_ senf::ppi::connector::GenericActiveInput::GenericActiveInput()
 {}
 
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::ppi::connector::GenericActiveOutput
 
 prefix_ senf::ppi::connector::GenericPassiveInput & senf::ppi::connector::GenericActiveOutput::peer()
     const
 {
-    return dynamic_cast<GenericPassiveInput&>(Connector::peer());
+    SENF_ASSERT(peer_, "senf::ppi::connect() call missing");
+    return *peer_;
 }
 
 prefix_ bool senf::ppi::connector::GenericActiveOutput::boolean_test()
@@ -398,7 +392,7 @@ prefix_ void senf::ppi::connector::GenericActiveOutput::connect(GenericPassiveIn
 prefix_ senf::ppi::connector::GenericActiveOutput::GenericActiveOutput()
 {}
 
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 #undef prefix_
 
 \f