X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FMainpage.dox;h=5d5d59d79d815082a3ae71c21efab7c01afd3180;hb=2913eecdc2ee7a52ced3e8bfb256a58b9ac6510a;hp=85100bc63b66e17bc9678f2919a5544d7a4f78f1;hpb=9b433bcdb003f4cb5ef5a2abf2ea4285748f668f;p=senf.git diff --git a/PPI/Mainpage.dox b/PPI/Mainpage.dox index 85100bc..5d5d59d 100644 --- a/PPI/Mainpage.dox +++ b/PPI/Mainpage.dox @@ -70,10 +70,10 @@ (network connection, writing packets to disk, generating new packets) whereas processing modules process packets internally. In the target scenario, TAP, ASI Out, Raw Socket and in a limited way Generator are I/O modules whereas PEP, - DiffServ, DVB Enc, GRE/UDLR, TCP Filter and - Stufferare processing modules. ASI/MPEG and Net are external I/O - ports which are integrated via the TAP, ASI Out and Raw Sock modules - using external events. + DiffServ, DVB Enc, GRE/UDLR, TCP Filter and Stuffer + are processing modules. ASI/MPEG and Net are external I/O ports which are + integrated via the TAP, ASI Out and Raw Sock modules using external + events. The following example module declares three I/O connectors (see below): payload, stuffing and output. These connectors are defined as public data @@ -83,18 +83,20 @@ class RateStuffer : public senf::ppi::Module { + senf::ppi::IntervalTimer timer_; + public: - ActiveInput payload; - ActiveInput stuffing; - ActiveOutput output; + senf::ppi::ActiveInput payload; + senf::ppi::ActiveInput stuffing; + senf::ppi::ActiveOutput output; RateStuffer(unsigned packetsPerSecond) + : timer_(1000u, packetsPerSecond) { route(payload, output); route(stuffing, output); - registerEvent(&RateStuffer::tick, - senf::ppi::IntervalTimer(1000u, packetsPerSecond)); + registerEvent(&RateStuffer::tick, timer_); } private: @@ -124,7 +126,7 @@ : public senf::ppi::Module { public: - PassiveOutput output; + senf::ppi::PassiveOutput output; CopyPacketGenerator(Packet::ptr template) : template_ (template) @@ -244,14 +246,17 @@ class ActiveSocketInput : public senf::ppi::Module { - static PacketParser defaultParser_; - - public: - ActiveOutput output; - typedef senf::ClientSocketHandle< senf::MakeSocketPolicy< senf::ReadablePolicy, senf::DatagramFramingPolicy > > Socket; + static PacketParser defaultParser_; + + Socket socket_; + DataParser const & parser_; + senf::ppi:IOSignaler event_; + + public: + senf::ppi::ActiveOutput output; // I hestitate taking parser by const & since a const & can be bound to // a temporary even though a const & is all we need. The real implementation @@ -260,16 +265,13 @@ ActiveSocketInput(Socket socket, DataParser & parser = SocketInput::defaultParser_) : socket_ (socket), parser_ (parser) - event_ (registerEvent( &ActiveSocketInput::data, - senf::ppi::IOSignaler(socket, senf::ppi::IOSignaler::Read) )) + event_ (socket, senf::ppi::IOSignaler::Read) { + registerEvent( &ActiveSocketInput::data, event_ ); route(event_, output); } private: - Socket socket_; - DataParser const & parser_; - senf::ppi:IOSignaler::EventBinding event_; void data() {