// $Id$
//
-// Copyright (C) 2007
-// Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
+// 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
\brief Connectors inline non-template implementation */
// Custom includes
+#include "../Utils/TypeInfo.hh"
#include "../Utils/senfassert.hh"
#define prefix_ inline
peer_->peer_ = 0;
}
-prefix_ void senf::ppi::connector::Connector::connect(Connector & target)
-{
- SENF_ASSERT( ! peer_ && ! target.peer_ );
- peer_ = & target;
- target.peer_ = this;
-}
-
////////////////////////////////////////
// private members
///////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::PassiveConnector
+prefix_ senf::ppi::connector::ActiveConnector & senf::ppi::connector::PassiveConnector::peer()
+ const
+{
+ return dynamic_cast<ActiveConnector&>(Connector::peer());
+}
+
prefix_ bool senf::ppi::connector::PassiveConnector::throttled()
const
{
return nativeThrottled_ || remoteThrottled_;
}
+////////////////////////////////////////
+// private members
+
+prefix_ void senf::ppi::connector::PassiveConnector::emitThrottle()
+{
+ peer().notifyThrottle();
+}
+
+prefix_ void senf::ppi::connector::PassiveConnector::emitUnthrottle()
+{
+ peer().notifyUnthrottle();
+ v_unthrottleEvent();
+}
+
+prefix_ void senf::ppi::connector::PassiveConnector::notifyThrottle()
+{
+ if (!throttled()) {
+ remoteThrottled_ = true;
+ emitThrottle();
+ }
+ else
+ remoteThrottled_ = true;
+}
+
+prefix_ void senf::ppi::connector::PassiveConnector::v_unthrottleEvent()
+{}
+
+prefix_ void senf::ppi::connector::PassiveConnector::registerRoute(ForwardingRoute & route)
+{
+ routes_.push_back(&route);
+}
+
+// public members
+
prefix_ bool senf::ppi::connector::PassiveConnector::nativeThrottled()
const
{
}
-prefix_ senf::ppi::connector::ActiveConnector & senf::ppi::connector::PassiveConnector::peer()
- const
-{
- return dynamic_cast<ActiveConnector&>(Connector::peer());
-}
-
////////////////////////////////////////
// protected members
callback_();
}
-////////////////////////////////////////
-// private members
-
-prefix_ void senf::ppi::connector::PassiveConnector::notifyThrottle()
-{
- if (!throttled()) {
- remoteThrottled_ = true;
- emitThrottle();
- }
- else
- remoteThrottled_ = true;
-}
-
-prefix_ void senf::ppi::connector::PassiveConnector::emitThrottle()
-{
- peer().notifyThrottle();
-}
-
-prefix_ void senf::ppi::connector::PassiveConnector::emitUnthrottle()
-{
- peer().notifyUnthrottle();
- v_unthrottleEvent();
-}
-
-prefix_ void senf::ppi::connector::PassiveConnector::v_unthrottleEvent()
-{}
-
-prefix_ void senf::ppi::connector::PassiveConnector::registerRoute(ForwardingRoute & route)
-{
- routes_.push_back(&route);
-}
-
///////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::ActiveConnector
///////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::OutputConnector
+prefix_ senf::ppi::connector::InputConnector & senf::ppi::connector::OutputConnector::peer()
+ const
+{
+ return dynamic_cast<InputConnector&>(Connector::peer());
+}
+
prefix_ void senf::ppi::connector::OutputConnector::operator()(Packet p)
{
peer().enqueue(p);
operator()(p);
}
-prefix_ senf::ppi::connector::InputConnector & senf::ppi::connector::OutputConnector::peer()
- const
-{
- return dynamic_cast<InputConnector&>(Connector::peer());
-}
-
////////////////////////////////////////
// protected members