X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FRoute.hh;h=a2eb21410456f01c46a03c3a523dddf39c15b578;hb=refs%2Fheads%2Fmaster;hp=fb2930597f6d1f3d5a97950067d8c2c684aa5c22;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/PPI/Route.hh b/senf/PPI/Route.hh index fb29305..a2eb214 100644 --- a/senf/PPI/Route.hh +++ b/senf/PPI/Route.hh @@ -2,23 +2,28 @@ // // 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 -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. +// The contents of this file are subject to the Fraunhofer FOKUS Public License +// Version 1.0 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// http://senf.berlios.de/license.html // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// The Fraunhofer FOKUS Public License Version 1.0 is based on, +// but modifies the Mozilla Public License Version 1.1. +// See the full license text for the amendments. // -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the -// Free Software Foundation, Inc., -// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the License. +// +// The Original Code is Fraunhofer FOKUS code. +// +// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. +// (registered association), Hansastraße 27 c, 80686 Munich, Germany. +// All Rights Reserved. +// +// Contributor(s): +// Stefan Bund /** \file \brief Route public header */ @@ -31,7 +36,7 @@ #include "predecl.hh" //#include "Route.mpp" -///////////////////////////////hh.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace senf { namespace ppi { @@ -46,6 +51,14 @@ namespace ppi { public: virtual ~RouteBase(); + bool hasConnector(connector::Connector const & conn) const; + ///< \c true, if route has connector \a conn + bool hasEvent(EventDescriptor const & event) const; + ///< \c true, if route has event \a event + + protected: + RouteBase(module::Module & module); + #ifdef DOXYGEN Source & source() const; ///< Routing source /**< \note The real implementation is in the \c @@ -57,10 +70,10 @@ namespace ppi { class is internal and not documented. */ #endif - protected: - RouteBase(module::Module & module); - private: + virtual bool v_hasConnector(connector::Connector const & conn) const = 0; + virtual bool v_hasEvent(EventDescriptor const & event) const = 0; + module::Module * module_; }; @@ -80,7 +93,7 @@ namespace ppi { forwarded from active to passive connectors. This may be disabled by setting the authoThrottling state to \c false. - + Routing from/to an event to/from a passive connector will automatically create throttling notifications on the connector whenever the event is disabled. Routing @@ -94,12 +107,13 @@ namespace ppi { /**< This member checks only the automatic throttling state. If autoThrottling() is \c false, this member will always return \c false. */ - + protected: ForwardingRoute(module::Module & module); // Called to register this route with the connectors forwarding information base template void registerRoute(T & ob); + template void unregisterRoute(T & ob); template void notifyThrottle(T & ob); template void notifyUnthrottle(T & ob); @@ -128,7 +142,7 @@ namespace senf { namespace ppi { /** \brief Route descriptor - + Route instances are created by Module::route statements. The Route class provides an interface to manipulate the flow processing. @@ -149,7 +163,7 @@ namespace ppi { private: typedef detail::RouteImplementation Base; typedef detail::RouteImplementation Implementation; - + Route(module::Module & module, Source & source, Target & target); friend class module::Module; @@ -157,7 +171,7 @@ namespace ppi { }} -///////////////////////////////hh.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #include "Route.cci" #include "Route.ct" #include "Route.cti"