X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FConnectors.cc;h=6181eb997784f23b1fa1c8f48d066e950ea6197d;hb=61b2e2ea5cb50df90931acf3fcd840493ba762a9;hp=eca5ecc32e2548fb45735aa0f1c23b4ede9271c6;hpb=a9c9fa201ef6a90e40a7acc690e8c0c12a901736;p=senf.git diff --git a/senf/PPI/Connectors.cc b/senf/PPI/Connectors.cc index eca5ecc..6181eb9 100644 --- a/senf/PPI/Connectors.cc +++ b/senf/PPI/Connectors.cc @@ -27,10 +27,8 @@ #include "Connectors.ih" // Custom includes -#include "Route.hh" -#include "Module.hh" #include "ModuleManager.hh" -#include +#include //#include "Connectors.mpp" #define prefix_ @@ -84,6 +82,10 @@ prefix_ void senf::ppi::connector::Connector::connect(Connector & target) enqueueInitializable(); if (! peer().initializationScheduled()) peer().enqueueInitializable(); + + v_connected(); + peer_->v_connected(); + } senf::ppi::connector::Connector::TraceState senf::ppi::connector::Connector::traceState_ ( @@ -201,13 +203,44 @@ prefix_ std::type_info const & senf::ppi::connector::Connector::packetTypeID() return typeid(void); } +prefix_ void senf::ppi::connector::Connector::unregisterConnector() +{ + if (module_) + module_->unregisterConnector(*this); +} + +prefix_ void senf::ppi::connector::Connector::setModule(module::Module & module) +{ + module_ = &module; +} + prefix_ void senf::ppi::connector::Connector::v_disconnected() - const +{} + +prefix_ void senf::ppi::connector::Connector::v_connected() {} /////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::PassiveConnector +prefix_ senf::ppi::connector::PassiveConnector::~PassiveConnector() +{ + // Must be here and NOT in base so it is called before destructing the routes_ member + unregisterConnector(); +} + +prefix_ void senf::ppi::connector::PassiveConnector::v_disconnected() +{ + Connector::v_disconnected(); + peer_ = 0; +} + +prefix_ void senf::ppi::connector::PassiveConnector::v_connected() +{ + Connector::v_connected(); + peer_ = & dynamic_cast(Connector::peer()); +} + //////////////////////////////////////// // private members @@ -255,6 +288,24 @@ prefix_ void senf::ppi::connector::PassiveConnector::notifyUnthrottle() /////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::ActiveConnector +prefix_ senf::ppi::connector::ActiveConnector::~ActiveConnector() +{ + // Must be here and NOT in base so it is called before destructing the routes_ member + unregisterConnector(); +} + +prefix_ void senf::ppi::connector::ActiveConnector::v_disconnected() +{ + Connector::v_disconnected(); + peer_ = 0; +} + +prefix_ void senf::ppi::connector::ActiveConnector::v_connected() +{ + Connector::v_connected(); + peer_ = & dynamic_cast(Connector::peer()); +} + //////////////////////////////////////// // private members @@ -323,6 +374,18 @@ prefix_ senf::Packet senf::ppi::connector::InputConnector::operator()() } } +prefix_ void senf::ppi::connector::InputConnector::v_disconnected() +{ + Connector::v_disconnected(); + peer_ = 0; +} + +prefix_ void senf::ppi::connector::InputConnector::v_connected() +{ + Connector::v_connected(); + peer_ = & dynamic_cast(Connector::peer()); +} + //////////////////////////////////////// // private members @@ -336,6 +399,21 @@ prefix_ void senf::ppi::connector::InputConnector::v_dequeueEvent() {} /////////////////////////////////////////////////////////////////////////// +// senf::ppi::connector::OutputConnector + +prefix_ void senf::ppi::connector::OutputConnector::v_disconnected() +{ + Connector::v_disconnected(); + peer_ = 0; +} + +prefix_ void senf::ppi::connector::OutputConnector::v_connected() +{ + Connector::v_connected(); + peer_ = & dynamic_cast(Connector::peer()); +} + +/////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::GenericActiveInput //////////////////////////////////////// @@ -349,6 +427,20 @@ prefix_ void senf::ppi::connector::GenericActiveInput::v_requestEvent() /////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::GenericPassiveInput +prefix_ void senf::ppi::connector::GenericPassiveInput::v_disconnected() +{ + PassiveConnector::v_disconnected(); + InputConnector::v_disconnected(); + peer_ = 0; +} + +prefix_ void senf::ppi::connector::GenericPassiveInput::v_connected() +{ + PassiveConnector::v_connected(); + InputConnector::v_connected(); + peer_ = & dynamic_cast(Connector::peer()); +} + //////////////////////////////////////// // private members @@ -382,6 +474,58 @@ prefix_ void senf::ppi::connector::GenericPassiveInput::v_unthrottleEvent() } } +/////////////////////////////////////////////////////////////////////////// +// senf::ppi::connector::GenericPassiveOutput + +prefix_ void senf::ppi::connector::GenericPassiveOutput::v_disconnected() +{ + PassiveConnector::v_disconnected(); + OutputConnector::v_disconnected(); + peer_ = 0; +} + +prefix_ void senf::ppi::connector::GenericPassiveOutput::v_connected() +{ + PassiveConnector::v_connected(); + OutputConnector::v_connected(); + peer_ = & dynamic_cast(Connector::peer()); +} + +/////////////////////////////////////////////////////////////////////////// +// senf::ppi::connector::GenericActiveInput + +prefix_ void senf::ppi::connector::GenericActiveInput::v_disconnected() +{ + ActiveConnector::v_disconnected(); + InputConnector::v_disconnected(); + peer_ = 0; +} + +prefix_ void senf::ppi::connector::GenericActiveInput::v_connected() +{ + ActiveConnector::v_connected(); + InputConnector::v_connected(); + peer_ = & dynamic_cast(Connector::peer()); +} + +/////////////////////////////////////////////////////////////////////////// +// senf::ppi::connector::GenericActiveOutput + +prefix_ void senf::ppi::connector::GenericActiveOutput::v_disconnected() +{ + ActiveConnector::v_disconnected(); + OutputConnector::v_disconnected(); + peer_ = 0; +} + +prefix_ void senf::ppi::connector::GenericActiveOutput::v_connected() +{ + ActiveConnector::v_connected(); + OutputConnector::v_connected(); + peer_ = & dynamic_cast(Connector::peer()); +} + + ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_ //#include "Connectors.mpp"