X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FConnectors.cc;h=e11e5e23307733c50042d1524458d40c59dfab36;hb=d8c2d9d478b8808e5b76e4688aea4f840b6a1df7;hp=ff299011dd27204f93c653014fd46b59dcf4a813;hpb=a1a6c76a214ad1935032826713cabaf9ac57bf07;p=senf.git diff --git a/PPI/Connectors.cc b/PPI/Connectors.cc index ff29901..e11e5e2 100644 --- a/PPI/Connectors.cc +++ b/PPI/Connectors.cc @@ -28,12 +28,37 @@ // Custom includes #include "Route.hh" +#include "Module.hh" //#include "Connectors.mpp" #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// +// senf::ppi::connector::Connector + +prefix_ void senf::ppi::connector::Connector::connect(Connector & target) +{ + SENF_ASSERT( module_ && ! peer_ && target.module_ && ! target.peer_ ); + if (! (packetTypeID() == typeid(void) || + target.packetTypeID() == typeid(void) || + packetTypeID() == target.packetTypeID()) ) + throw IncompatibleConnectorsException() + << ": " << prettyName(packetTypeID()) + << " [in module " << prettyName(typeid(*module_)) << "] " + << ", " << prettyName(target.packetTypeID()) + << " [in module " << prettyName(typeid(*target.module_)) << "]"; + + peer_ = & target; + target.peer_ = this; +} + +prefix_ std::type_info const & senf::ppi::connector::Connector::packetTypeID() +{ + return typeid(void); +} + +/////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::PassiveConnector ////////////////////////////////////////