X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FConnectors.cc;h=e11e5e23307733c50042d1524458d40c59dfab36;hb=61bbb1c1ec66b1a41951fc971d0325095e17e7a9;hp=8c46477ef7f9aa8a4a75ebb0701312a24593e1c4;hpb=416cdd1c85cdf2669785e93a71426a3206166758;p=senf.git diff --git a/PPI/Connectors.cc b/PPI/Connectors.cc index 8c46477..e11e5e2 100644 --- a/PPI/Connectors.cc +++ b/PPI/Connectors.cc @@ -1,8 +1,8 @@ // $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 // // This program is free software; you can redistribute it and/or modify @@ -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 ////////////////////////////////////////