set keyword svn property on more files
[senf.git] / PPI / Connectors.hh
index e37ad1f..1b7e540 100644 (file)
@@ -1,6 +1,8 @@
+// $Id$
+//
 // Copyright (C) 2007 
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+// Fraunhofer Institute for Open Communication Systems (FOKUS) 
+// Competence Center NETwork research (NET), St. Augustin, GERMANY 
 //     Stefan Bund <g0dil@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
 /** \file
     \brief Connectors public header */
 
-/** \defgroup connectors Connector classes
-
-    A connector has two independent properties
-    \li it may be \e active or \e passive
-    \li it may be an \e input or an \e output
-    
-    \e Active connectors are activated from within the module, \e passive connectors are signaled by
-    the external framework. \e Input modules receive packets, \e output modules send packets.
-
-    All passive connectors call some onRequest callback whenever I/O needs to be performed. All
-    input modules possess a packet queue.
-
-    We therefore have 4 connector types: senf::ppi::ActiveInput, senf::ppi::ActiveOutput,
-    senf::ppi::PassiveInput and senf::ppi::PassiveOutput.
- */
-
 #ifndef HH_Connectors_
 #define HH_Connectors_ 1
 
@@ -44,8 +30,8 @@
 #include <deque>
 #include <boost/utility.hpp>
 #include <boost/scoped_ptr.hpp>
-#include "Utils/SafeBool.hh"
-#include "Packets/Packets.hh"
+#include "../Utils/safe_bool.hh"
+#include "../Packets/Packets.hh"
 #include "predecl.hh"
 #include "detail/Callback.hh"
 #include "Queueing.hh"
@@ -59,6 +45,31 @@ namespace connector {
 
     /** \namespace senf::ppi::connector
         \brief Connector classes 
+
+        A connector has two independent properties
+        \li it may be \e active or \e passive
+        \li it may be an \e input or an \e output
+    
+        \e Active connectors are activated from within the module, \e passive connectors are
+        signaled by the external framework. \e Input modules receive packets, \e output modules send
+        packets.
+
+        All passive connectors call some onRequest callback whenever I/O needs to be performed. All
+        input modules possess a packet queue.
+
+        We therefore have 4 connector types: 
+        \li senf::ppi::connector::ActiveInput
+        \li senf::ppi::connector::ActiveOutput
+        \li senf::ppi::connector::PassiveInput
+        \li senf::ppi::connector::PassiveOutput.
+
+        Connectors are declared as module data members and are then externally connected to other
+        modules.
+
+        \see 
+            senf::ppi::module::Module \n
+            senf::ppi::connect()
+            \ref ppi_connectors
      */
 
     /** \brief Connector base-class
@@ -200,7 +211,7 @@ namespace connector {
                                              holds this input. In the second case, the pointer will
                                              automatically be bound to the containing instance.
 
-                                             \param[in] handle Handler to call on unthrottle
+                                             \param[in] handler Handler to call on unthrottle
                                                  notifications. */
         void onUnthrottle();            ///< Clear unthrottle notification handler
 
@@ -257,6 +268,7 @@ namespace connector {
         typedef Queue::const_iterator queue_iterator; ///< Iterator type of the embedded queue
         typedef Queue::size_type size_type; ///< Unsigned type for counting queue elements
 
+
         Packet operator()();            ///< Get a packet
                                         /**< This member is the primary method to access received
                                              data. On passive connectors, this operator will just
@@ -267,6 +279,8 @@ namespace connector {
                                              logic error in the module implementation and an
                                              exception is raised. */
 
+        Packet read();                  ///< Alias for operator()()
+
         OutputConnector & peer() const;
 
         queue_iterator begin() const;   ///< Access queue begin (head)
@@ -301,7 +315,9 @@ namespace connector {
         : public virtual Connector
     {
     public:
-        void operator()(Packet p);        ///< Send out a packet
+        void operator()(Packet p);      ///< Send out a packet
+
+        void write(Packet p);           ///< Alias for operator()(Packet p)
 
         InputConnector & peer() const;
 
@@ -309,9 +325,6 @@ namespace connector {
         OutputConnector();
     };
     
-    ///@{
-    ///\addtogroup connectors
-
     /** \brief Combination of PassiveConnector and InputConnector
 
         The PassiveInput automatically controls the connectors throttling state using a queueing
@@ -323,7 +336,7 @@ namespace connector {
      */
     class PassiveInput 
         : public PassiveConnector, public InputConnector,
-          public SafeBool<PassiveInput>
+          public safe_bool<PassiveInput>
     {
     public:
         PassiveInput();
@@ -351,7 +364,7 @@ namespace connector {
      */
     class PassiveOutput
         : public PassiveConnector, public OutputConnector,
-          public SafeBool<PassiveOutput>
+          public safe_bool<PassiveOutput>
     {
     public:
         ActiveInput & peer() const;
@@ -367,7 +380,7 @@ namespace connector {
      */
     class ActiveInput
         : public ActiveConnector, public InputConnector,
-          public SafeBool<ActiveInput>
+          public safe_bool<ActiveInput>
     {
     public:
         PassiveOutput & peer() const;
@@ -384,7 +397,7 @@ namespace connector {
      */
     class ActiveOutput
         : public ActiveConnector, public OutputConnector,
-          public SafeBool<ActiveOutput>
+          public safe_bool<ActiveOutput>
     {
     public:
         PassiveInput & peer() const;
@@ -394,8 +407,6 @@ namespace connector {
         void connect(PassiveInput & target); ///< Internal: Use senf::ppi::connect() instead
     };
 
-    ///@}
-
 }}}
 
 ///////////////////////////////hh.e////////////////////////////////////////