From 354cc867780ab8f082d4c6f4410ddd87ede5bc3e Mon Sep 17 00:00:00 2001 From: g0dil <g0dil@wiback.org> Date: Wed, 12 Mar 2008 14:01:24 +0000 Subject: [PATCH] PPI: Move generic packet typeid check into connector base-class --- PPI/Connectors.cc | 5 +++++ PPI/Connectors.hh | 21 +++++++++------------ PPI/Route.ih | 4 ++++ Packets/ParseHelpers.hh | 2 +- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/PPI/Connectors.cc b/PPI/Connectors.cc index 5c4ceff4e..e11e5e233 100644 --- a/PPI/Connectors.cc +++ b/PPI/Connectors.cc @@ -53,6 +53,11 @@ prefix_ void senf::ppi::connector::Connector::connect(Connector & target) target.peer_ = this; } +prefix_ std::type_info const & senf::ppi::connector::Connector::packetTypeID() +{ + return typeid(void); +} + /////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::PassiveConnector diff --git a/PPI/Connectors.hh b/PPI/Connectors.hh index be55849db..60b1f719d 100644 --- a/PPI/Connectors.hh +++ b/PPI/Connectors.hh @@ -123,7 +123,7 @@ namespace connector { void connect(Connector & target); private: - virtual std::type_info const & packetTypeID() = 0; + virtual std::type_info const & packetTypeID(); void setModule(module::Module & module); @@ -456,27 +456,24 @@ namespace connector { # define TypedConnector_Input read # define TypedConnector_Output write -# define TypedConnector(pType, dir) \ +# define TypedConnector(pType, dir) \ template <class PacketType> \ - class pType ## dir \ - : public Generic ## pType ## dir, \ - private detail::Typed ## dir ## Mixin<pType ## dir <PacketType>, PacketType> \ + class pType ## dir \ + : public Generic ## pType ## dir, \ + private detail::Typed ## dir ## Mixin<pType ## dir <PacketType>, PacketType> \ { \ - typedef detail::Typed ## dir ## Mixin<pType ## dir <PacketType>, PacketType> mixin; \ + typedef detail::Typed ## dir ## Mixin<pType ## dir <PacketType>, PacketType> mixin; \ public: \ using mixin::operator(); \ using mixin::TypedConnector_ ## dir ; \ private: \ virtual std::type_info const & packetTypeID() \ { return typeid(typename PacketType::type); } \ - friend class detail::Typed ## dir ## Mixin<pType ## dir <PacketType>, PacketType>; \ + friend class detail::Typed ## dir ## Mixin<pType ## dir <PacketType>, PacketType>; \ }; \ template <> \ - class pType ## dir <Packet> : public Generic ## pType ## dir \ - { \ - private: \ - virtual std::type_info const & packetTypeID() { return typeid(void); } \ - } + class pType ## dir <Packet> : public Generic ## pType ## dir \ + {} TypedConnector( Passive, Input ); TypedConnector( Passive, Output ); diff --git a/PPI/Route.ih b/PPI/Route.ih index 01836c9d6..76125e3ba 100644 --- a/PPI/Route.ih +++ b/PPI/Route.ih @@ -47,6 +47,8 @@ namespace detail { struct RoutingTraitsImplementation { BOOST_STATIC_ASSERT((boost::is_base_of<connector::Connector, Connector>::value)); + + static bool const event = false; static bool const notifySource = boost::is_base_of< connector::ActiveConnector, Connector>::value; @@ -66,6 +68,8 @@ namespace detail { template <class Event> struct RoutingTraitsImplementation<Event,true> { + static bool const event = true; + static bool const notifySource = false; static bool const notifyTarget = true; diff --git a/Packets/ParseHelpers.hh b/Packets/ParseHelpers.hh index f79e95680..a8d5fbda1 100644 --- a/Packets/ParseHelpers.hh +++ b/Packets/ParseHelpers.hh @@ -278,7 +278,7 @@ \ingroup packetparser */ -///\ingroup packetparsermacros +///\addtogroup packetparsermacros ///\{ ///\name Control information -- GitLab