diff --git a/PPI/MonitorModule.cc b/PPI/MonitorModule.ct similarity index 73% rename from PPI/MonitorModule.cc rename to PPI/MonitorModule.ct index 2a5420a3ca165e024cb96d74738c529afff3804d..1945293d9156f2ff6f3b744d4d319971f5c74cbe 100644 --- a/PPI/MonitorModule.cc +++ b/PPI/MonitorModule.ct @@ -21,40 +21,40 @@ // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file - \brief MonitorModule non-inline non-template implementation */ + \brief MonitorModule non-inline template implementation */ -#include "MonitorModule.hh" //#include "MonitorModule.ih" // Custom includes -//#include "MonitorModule.mpp" #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +///////////////////////////////ct.p//////////////////////////////////////// -prefix_ void senf::ppi::module::MonitorModule::request() +template <class PacketType> +prefix_ void senf::ppi::module::MonitorModule<PacketType>::request() { - Packet p (input()); + PacketType p (input()); v_handlePacket(p); if (output.connected()) output(p); } -prefix_ void senf::ppi::module::MonitorModule::throttle() +template <class PacketType> +prefix_ void senf::ppi::module::MonitorModule<PacketType>::throttle() { if (output.connected()) input.throttle(); } -prefix_ void senf::ppi::module::MonitorModule::unthrottle() +template <class PacketType> +prefix_ void senf::ppi::module::MonitorModule<PacketType>::unthrottle() { if (output.connected()) input.unthrottle(); } -///////////////////////////////cc.e//////////////////////////////////////// +///////////////////////////////ct.e//////////////////////////////////////// #undef prefix_ -//#include "MonitorModule.mpp" // Local Variables: diff --git a/PPI/MonitorModule.cci b/PPI/MonitorModule.cti similarity index 83% rename from PPI/MonitorModule.cci rename to PPI/MonitorModule.cti index 9c0e62c38be445f313752ccbbf81e5f4617acd8b..e2f101ad119ae15e79b3418a8fc8ec34109e352a 100644 --- a/PPI/MonitorModule.cci +++ b/PPI/MonitorModule.cti @@ -21,16 +21,17 @@ // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file - \brief MonitorModule inline non-template implementation */ + \brief MonitorModule inline template implementation */ //#include "MonitorModule.ih" // Custom includes #define prefix_ inline -///////////////////////////////cci.p/////////////////////////////////////// +///////////////////////////////cti.p/////////////////////////////////////// -prefix_ senf::ppi::module::MonitorModule::MonitorModule() +template <class PacketType> +prefix_ senf::ppi::module::MonitorModule<PacketType>::MonitorModule() { route(input, output).autoThrottling(false); input.onRequest(&MonitorModule::request); @@ -38,7 +39,7 @@ prefix_ senf::ppi::module::MonitorModule::MonitorModule() output.onUnthrottle(&MonitorModule::unthrottle); } -///////////////////////////////cci.e/////////////////////////////////////// +///////////////////////////////cti.e/////////////////////////////////////// #undef prefix_ diff --git a/PPI/MonitorModule.hh b/PPI/MonitorModule.hh index c5517eb807998692593b6a08111ae6d49611e205..30c8ff1d5462ec67eb78f8780868918a146f1abe 100644 --- a/PPI/MonitorModule.hh +++ b/PPI/MonitorModule.hh @@ -37,16 +37,17 @@ namespace senf { namespace ppi { namespace module { + template <class PacketType=Packet> class MonitorModule : public Module { public: - senf::ppi::connector::PassiveInput<> input; - senf::ppi::connector::ActiveOutput<> output; + senf::ppi::connector::PassiveInput<PacketType> input; + senf::ppi::connector::ActiveOutput<PacketType> output; protected: MonitorModule(); - virtual void v_handlePacket(Packet const & p) = 0; + virtual void v_handlePacket(PacketType const & p) = 0; private: void request(); @@ -58,9 +59,9 @@ namespace module { }}} ///////////////////////////////hh.e//////////////////////////////////////// -#include "MonitorModule.cci" -//#include "MonitorModule.ct" -//#include "MonitorModule.cti" +//#include "MonitorModule.cci" +#include "MonitorModule.ct" +#include "MonitorModule.cti" #endif diff --git a/PPI/MonitorModule.test.cc b/PPI/MonitorModule.test.cc index b0f47c21df3080594e2d8534e46e5fd0022a12ad..9fd3ee7b5e02b5e6786a5fa4f1fedd28bf0e10ec 100644 --- a/PPI/MonitorModule.test.cc +++ b/PPI/MonitorModule.test.cc @@ -38,7 +38,7 @@ namespace { - class PacketCounter : public senf::ppi::module::MonitorModule + class PacketCounter : public senf::ppi::module::MonitorModule<> { SENF_PPI_MODULE(PacketCounter); public: diff --git a/Packets/Packet.cti b/Packets/Packet.cti index 0eb6ddcfb71fe4775fe08df5986607617cd1f35e..afae6069db5e853e17975d293110966a69f754b4 100644 --- a/Packets/Packet.cti +++ b/Packets/Packet.cti @@ -141,6 +141,13 @@ prefix_ Annotation & senf::Packet::annotation() return ptr()->annotation<Annotation>(); } +template <class Annotation> +prefix_ Annotation const & senf::Packet::annotation() + const +{ + return ptr()->annotation<Annotation>(); +} + /////////////////////////////////////////////////////////////////////////// // senf::ConcretePacket<PacketType> diff --git a/Packets/Packet.hh b/Packets/Packet.hh index d3b42a402eefb6e8bcb356cd25bcd266dd77afe4..4a25789f1ab03e5af69997261e913e8dbf4fc433 100644 --- a/Packets/Packet.hh +++ b/Packets/Packet.hh @@ -376,6 +376,10 @@ namespace senf { ///@} + template <class Annotation> + Annotation const & annotation() const; ///< Get packet annotation + /**< \see annotation() */ + ///\name Other methods ///@{