X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FMainpage.dox;h=fc16dab14b63e722a23aff30aac5d5ae0ad81e3f;hb=b8ca4a544cce3e6023bb56b712a03d6362f2bb79;hp=f4d8be7fe4a08703da33695a1f2f4681b5e719bc;hpb=69255c0f1669fc80b0e4a2bf524715f336b127ad;p=senf.git diff --git a/PPI/Mainpage.dox b/PPI/Mainpage.dox index f4d8be7..fc16dab 100644 --- a/PPI/Mainpage.dox +++ b/PPI/Mainpage.dox @@ -47,26 +47,13 @@ PPI Example Application: RateStuffer \n \ref senf::ppi::module "Modules" \n - \ref senf::ppi::connector "Connectors" \n + \ref senf::ppi::connector "Connectors and Jacks" \n \ref event_group */ /** \page ppi_overview PPI Overview and Concepts -
-
Contents
-
    -
  1. \ref ppi_design
  2. -
  3. \ref ppi_packets
  4. -
  5. \ref ppi_modules
  6. -
  7. \ref ppi_connectors
  8. -
  9. \ref ppi_connections
  10. -
  11. \ref ppi_throttling
  12. -
  13. \ref ppi_events
  14. -
  15. \ref ppi_run
  16. -
  17. \ref ppi_flows
  18. -
-
+ \autotoc \section ppi_design Design considerations @@ -78,8 +65,9 @@ \section ppi_packets Packets The PPI processes packets and uses the Packet - library to handle them. All packets are passed around as generic \ref senf::Packet - references, the PPI does not enforce any packet type restrictions. + library to handle them. All packets are internally passed around as generic \ref + senf::Packet references, however connectors may optionally be defined as sending or receiving + packets of a specific type only. \section ppi_modules Modules @@ -212,6 +200,9 @@ To provide this flexibility, all input connectors incorporate a packet queue. This queue is exposed to the module and allows the module to optionally process packets in batches. + Connectors take an optional template argument which allows to specify the type of packet this + connector sends or received. This template arguments defaults to \ref senf::Packet. + \see \ref senf::ppi::connector \section ppi_connections Connections @@ -225,8 +216,12 @@ It is possible to connect two active or passive connectors with each other using a special adaptor module (senf::ppi::module::PassiveQueue or senf::ppi::module::ActiveFeeder respectively). + + Additionally, the connectors must be type-compatible: Either one (or both) of the connectors + must be untyped (they accept arbitrary senf::Packet's, the optional tempalte argument is empty), + or they both accept the same type of packet. This check is performed at runtime. - To complete our simplified example: Lets connet senf::ppi::module::ActiveSocketReader and + To complete our simplified example: Lets connect senf::ppi::module::ActiveSocketReader and senf::ppi::module::PassiveSocketWriter to our example module: \code @@ -236,10 +231,10 @@ CopyPacketGenerator generator (stuffingPacket); senf::UDPv4ClientSocketHandle inputSocket (1111); - senf::ppi::module::ActiveSocketReader udpInput (inputSocket); + senf::ppi::module::ActiveSocketSource<> udpInput (inputSocket); senf::UDPv4ClientSocketHandle outputSocket ("2.3.4.5:2222"); - senf::ppi::module::PassiveSocketWriter udpOutput (outputSocket); + senf::ppi::module::PassiveSocketSink<> udpOutput (outputSocket); senf::ppi::module::PassiveQueue adaptor; @@ -470,7 +465,28 @@ \section ppi_classdiagram Class Diagram - \image html classes.png +
+ \ref senf::ppi::connector::PassiveConnector + \ref senf::ppi::EventManager + \ref senf::ppi::connector::ActiveOutput + \ref senf::ppi::connector::ActiveInput + \ref senf::ppi::RouteBase + \ref senf::ppi::Route + \ref (some module) + \ref senf::ppi::EventImplementation + \ref senf::ppi::module::Module + \ref senf::ppi::connector::Connector + \ref senf::ppi::connector::PassiveOutput + \ref senf::ppi::detail::EventBindingBase + \ref senf::ppi::connector::InputConnector + \ref senf::ppi::detail::RouteImplementation + \ref senf::ppi::connector::OutputConnector + \ref senf::ppi::connector::ActiveConnector + \ref senf::ppi::detail::EventBinding + \ref senf::ppi::EventDescriptor + \ref senf::ppi::connector::PassiveInput +
+ \htmlonly classes \endhtmlonly */