senf::ppi::module::MonitorModule< PacketType > Class Template Referenceabstract

Base class providing simple monitor module support. More...

#include <senf/PPI/MonitorModule.hh>

Inheritance diagram for senf::ppi::module::MonitorModule< PacketType >:

Public Attributes

senf::ppi::connector::PassiveInput< PacketType > input
 
senf::ppi::connector::ActiveOutput< PacketType > output
 

Protected Member Functions

 MonitorModule ()
 
virtual void v_handlePacket (PacketType const &p)=0
 Called for each packet. More...
 
- Protected Member Functions inherited from senf::ppi::module::Module
 Module ()
 
Route< connector::InputConnector, connector::OutputConnector > & route (connector::InputConnector &input, connector::OutputConnector &output)
 Define flow information. More...
 
Route< connector::InputConnector, EventDescriptor > & route (connector::InputConnector &input, EventDescriptor &output)
 Define flow information. More...
 
Route< EventDescriptor, connector::OutputConnector > & route (EventDescriptor &input, connector::OutputConnector &output)
 Define flow information. More...
 
void noroute (connector::Connector &connector)
 Define terminal connectors. More...
 
template<class Target >
void registerEvent (EventDescriptor &descriptor, Target target)
 Register an external event. More...
 
ClockService::clock_type const & time () const
 Time-stamp of the currently processing event. More...
 
ClockService::clock_type const & now () const
 Current time of the currently processing event. More...
 
virtual void v_init ()
 Called after module setup. More...
 
console::DirectoryNodesysConsoleDir () const
 
void destroy ()
 

Additional Inherited Members

- Public Member Functions inherited from senf::ppi::module::Module
virtual ~Module ()
 

Detailed Description

template<class PacketType = Packet>
class senf::ppi::module::MonitorModule< PacketType >

Base class providing simple monitor module support.

A monitor module is a module which needs information about traversing packets but does not really act on the packets. Because of this, it is optional to connect the output: If the output is not connected, the packets will be silently dropped.

This allows to add monitor modules either into an existing chain or add them using an ActiveDuplicator.

To write a monitor module, derive from senf::ppi::module::MonitorModule instead of senf::ppi::module and implement v_handlePacket():

class CountPackets
{
SENF_PPI_MODULE(CountPackets);
public:
CountPackets() : counter_ (0u) {}
private:
virtual void v_handlePacket(Packet const & p)
{ ++ counter_; }
unsigned counter_;
};
    You may of course add events (or even further connectors besides \c input and \c output
    provided by MonitorModule) to the %module.

    \tparam PacketType type of packet expected on input and sent on output. This is also the
        type of the v_handlePacket() argument.

Definition at line 67 of file MonitorModule.hh.

Constructor & Destructor Documentation

◆ MonitorModule()

template<class PacketType = Packet>
senf::ppi::module::MonitorModule< PacketType >::MonitorModule ( )
protected

Member Function Documentation

◆ v_handlePacket()

template<class PacketType = Packet>
virtual void senf::ppi::module::MonitorModule< PacketType >::v_handlePacket ( PacketType const &  p)
protectedpure virtual

Called for each packet.

Member Data Documentation

◆ input

template<class PacketType = Packet>
senf::ppi::connector::PassiveInput<PacketType> senf::ppi::module::MonitorModule< PacketType >::input

Definition at line 70 of file MonitorModule.hh.

◆ output

template<class PacketType = Packet>
senf::ppi::connector::ActiveOutput<PacketType> senf::ppi::module::MonitorModule< PacketType >::output

Definition at line 71 of file MonitorModule.hh.


The documentation for this class was generated from the following file: