X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FConnectors.cc;h=065d36f4465f1f495f9e5e4ca57aa514ebc77648;hb=f7f08ce8a2ffd9a8004ab04a22a8ed434c0812f7;hp=156a717af5c03b3fe1669013f5b663192da84b8a;hpb=26610f603ebdd465307b9621f532c1fe19fd5571;p=senf.git diff --git a/senf/PPI/Connectors.cc b/senf/PPI/Connectors.cc index 156a717..065d36f 100644 --- a/senf/PPI/Connectors.cc +++ b/senf/PPI/Connectors.cc @@ -165,6 +165,7 @@ prefix_ void senf::ppi::connector::Connector::disconnect() // Cannot disconnected a non-connected connector SENF_ASSERT( peer_ && "senf::ppi::connector::Connector::disconnect(): Not connected" ); + Connector & peer (*peer_); peer_ = 0; peer.peer_ = 0; @@ -173,6 +174,9 @@ prefix_ void senf::ppi::connector::Connector::disconnect() enqueueInitializable(); if (! peer.initializationScheduled()) peer.enqueueInitializable(); + + v_disconnected(); + peer.v_disconnected(); } prefix_ std::type_info const & senf::ppi::connector::Connector::packetTypeID() @@ -180,6 +184,10 @@ prefix_ std::type_info const & senf::ppi::connector::Connector::packetTypeID() return typeid(void); } +prefix_ void senf::ppi::connector::Connector::v_disconnected() + const +{} + /////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::PassiveConnector @@ -260,6 +268,13 @@ prefix_ void senf::ppi::connector::ActiveConnector::registerRoute(ForwardingRout notifyRoutes_.push_back(&route); } +prefix_ void senf::ppi::connector::ActiveConnector::unregisterRoute(ForwardingRoute & route) +{ + NotifyRoutes::iterator i (std::find(notifyRoutes_.begin(), notifyRoutes_.end(), &route)); + if (i != notifyRoutes_.end()) + notifyRoutes_.erase(i); +} + /////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::InputConnector