X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FRoute.ih;h=31a4e5b31f8e7785126ace7fc9106633c7b965e2;hb=81f84badf27b66dbadec9890646ca1193e998505;hp=149b9e9e2170181731a30ee3efcd220d22d83490;hpb=7465ea4f6d3d54622bd783106cf8b60d5f133343;p=senf.git diff --git a/PPI/Route.ih b/PPI/Route.ih index 149b9e9..31a4e5b 100644 --- a/PPI/Route.ih +++ b/PPI/Route.ih @@ -1,8 +1,8 @@ // $Id$ // -// Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) +// 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 @@ -23,8 +23,8 @@ /** \file \brief Route internal header */ -#ifndef IH_Route_ -#define IH_Route_ 1 +#ifndef IH_SENF_PPI_Route_ +#define IH_SENF_PPI_Route_ 1 // Custom includes #include @@ -35,6 +35,8 @@ ///////////////////////////////ih.p//////////////////////////////////////// +#ifndef DOXYGEN + namespace senf { namespace ppi { namespace detail { @@ -45,6 +47,8 @@ namespace detail { struct RoutingTraitsImplementation { BOOST_STATIC_ASSERT((boost::is_base_of::value)); + + static bool const event = false; static bool const notifySource = boost::is_base_of< connector::ActiveConnector, Connector>::value; @@ -64,6 +68,8 @@ namespace detail { template struct RoutingTraitsImplementation { + static bool const event = true; + static bool const notifySource = false; static bool const notifyTarget = true; @@ -72,7 +78,7 @@ namespace detail { typedef EventDescriptor type; }; - + // The RoutingTraits give routing related information about the argument type: // - Wether the type is a notifySource or notifyTarget // - Wether the type is dataSource or dataTarget @@ -97,8 +103,8 @@ namespace detail { typedef Source source_type; typedef Target target_type; - Source & source(); - Target & target(); + Source & source() const; + Target & target() const; protected: BaseRouteImplementation(module::Module & module, Source & source, Target & target); @@ -131,18 +137,18 @@ namespace detail { ForwardingRouteImplementation(module::Module & module, Source & source, Target & target); private: - // register the Route in the notifySource only if the second argument is a 'true' type - template void registerRoute(T & ob, boost::mpl::bool_ const &); - template void registerRoute(T & ob, boost::mpl::bool_ const &); - // send a throttle/unthrottle notification only if the second argument is a 'true' type template void notifyThrottle(T & ob, boost::mpl::bool_ const &); template void notifyThrottle(T & ob, boost::mpl::bool_ const &); template void notifyUnthrottle(T & ob, boost::mpl::bool_ const &); template void notifyUnthrottle(T & ob, boost::mpl::bool_ const &); + template bool throttled(T & ob, boost::mpl::bool_ const &) const; + template bool throttled(T & ob, boost::mpl::bool_ const &) const; + virtual void v_notifyThrottle(); virtual void v_notifyUnthrottle(); + virtual bool v_throttled() const; }; // This helper class finds the base-class suitable for a specific route. Routes are classified @@ -199,6 +205,8 @@ namespace detail { }}} +#endif + ///////////////////////////////ih.e//////////////////////////////////////// #endif