Skip to content
Snippets Groups Projects
Commit b7f0c358 authored by g0dil's avatar g0dil
Browse files

PPI: Add PacketType template argument to MonitorModule

Packets: Allow const access to annotations
parent 9f004e9b
No related branches found
No related tags found
No related merge requests found
...@@ -21,40 +21,40 @@ ...@@ -21,40 +21,40 @@
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
/** \file /** \file
\brief MonitorModule non-inline non-template implementation */ \brief MonitorModule non-inline template implementation */
#include "MonitorModule.hh"
//#include "MonitorModule.ih" //#include "MonitorModule.ih"
// Custom includes // Custom includes
//#include "MonitorModule.mpp"
#define prefix_ #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); v_handlePacket(p);
if (output.connected()) if (output.connected())
output(p); output(p);
} }
prefix_ void senf::ppi::module::MonitorModule::throttle() template <class PacketType>
prefix_ void senf::ppi::module::MonitorModule<PacketType>::throttle()
{ {
if (output.connected()) if (output.connected())
input.throttle(); input.throttle();
} }
prefix_ void senf::ppi::module::MonitorModule::unthrottle() template <class PacketType>
prefix_ void senf::ppi::module::MonitorModule<PacketType>::unthrottle()
{ {
if (output.connected()) if (output.connected())
input.unthrottle(); input.unthrottle();
} }
///////////////////////////////cc.e//////////////////////////////////////// ///////////////////////////////ct.e////////////////////////////////////////
#undef prefix_ #undef prefix_
//#include "MonitorModule.mpp"
// Local Variables: // Local Variables:
......
...@@ -21,16 +21,17 @@ ...@@ -21,16 +21,17 @@
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
/** \file /** \file
\brief MonitorModule inline non-template implementation */ \brief MonitorModule inline template implementation */
//#include "MonitorModule.ih" //#include "MonitorModule.ih"
// Custom includes // Custom includes
#define prefix_ inline #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); route(input, output).autoThrottling(false);
input.onRequest(&MonitorModule::request); input.onRequest(&MonitorModule::request);
...@@ -38,7 +39,7 @@ prefix_ senf::ppi::module::MonitorModule::MonitorModule() ...@@ -38,7 +39,7 @@ prefix_ senf::ppi::module::MonitorModule::MonitorModule()
output.onUnthrottle(&MonitorModule::unthrottle); output.onUnthrottle(&MonitorModule::unthrottle);
} }
///////////////////////////////cci.e/////////////////////////////////////// ///////////////////////////////cti.e///////////////////////////////////////
#undef prefix_ #undef prefix_
......
...@@ -37,16 +37,17 @@ namespace senf { ...@@ -37,16 +37,17 @@ namespace senf {
namespace ppi { namespace ppi {
namespace module { namespace module {
template <class PacketType=Packet>
class MonitorModule : public Module class MonitorModule : public Module
{ {
public: public:
senf::ppi::connector::PassiveInput<> input; senf::ppi::connector::PassiveInput<PacketType> input;
senf::ppi::connector::ActiveOutput<> output; senf::ppi::connector::ActiveOutput<PacketType> output;
protected: protected:
MonitorModule(); MonitorModule();
virtual void v_handlePacket(Packet const & p) = 0; virtual void v_handlePacket(PacketType const & p) = 0;
private: private:
void request(); void request();
...@@ -58,9 +59,9 @@ namespace module { ...@@ -58,9 +59,9 @@ namespace module {
}}} }}}
///////////////////////////////hh.e//////////////////////////////////////// ///////////////////////////////hh.e////////////////////////////////////////
#include "MonitorModule.cci" //#include "MonitorModule.cci"
//#include "MonitorModule.ct" #include "MonitorModule.ct"
//#include "MonitorModule.cti" #include "MonitorModule.cti"
#endif #endif
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
namespace { namespace {
class PacketCounter : public senf::ppi::module::MonitorModule class PacketCounter : public senf::ppi::module::MonitorModule<>
{ {
SENF_PPI_MODULE(PacketCounter); SENF_PPI_MODULE(PacketCounter);
public: public:
......
...@@ -141,6 +141,13 @@ prefix_ Annotation & senf::Packet::annotation() ...@@ -141,6 +141,13 @@ prefix_ Annotation & senf::Packet::annotation()
return ptr()->annotation<Annotation>(); return ptr()->annotation<Annotation>();
} }
template <class Annotation>
prefix_ Annotation const & senf::Packet::annotation()
const
{
return ptr()->annotation<Annotation>();
}
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// senf::ConcretePacket<PacketType> // senf::ConcretePacket<PacketType>
......
...@@ -376,6 +376,10 @@ namespace senf { ...@@ -376,6 +376,10 @@ namespace senf {
///@} ///@}
template <class Annotation>
Annotation const & annotation() const; ///< Get packet annotation
/**< \see annotation() */
///\name Other methods ///\name Other methods
///@{ ///@{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment