// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
/** \file
- \brief Module public header */
+ \brief Module public header
+*/
#ifndef HH_Module_
#define HH_Module_ 1
// Custom includes
#include <boost/utility.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
//#include "Module.mpp"
///////////////////////////////hh.p////////////////////////////////////////
namespace senf {
namespace ppi {
+namespace module {
/** \brief Module baseclass
with interfaces to several PPI facilities:
\li Connector management
- \li Flow management
+ \li Flow management (routing)
\li Event handling
To provide internal bookkeeping, most access to the PPI infrastructure is managed through
~Module();
template <class Source, class Target>
- Route route(Source const & source, Target const & target); ///< Define flow information
+ Route<Source, Target> & route(Source const & source, Target const & target);
+ ///< Define flow information
/**< Using the route() and noroute() members, the
information flow within the module is defined. Routing
may be specified either between inputs, outputs and
The return value may be used to alter routing
parameters like throttling parameters.
-
+
\param[in] source Data source, object which controlls
incoming data
\param[in] target Data target, object which controlls
\returns Route instance describing this route */
template <class Connector>
- void noroute(Connector const & connector); ///<Define terminal connectors
- /**<
-
- The noroute() member explicitly declares, that a
- connector is terminal and does not directly
- receive/forward data from/to some other
- connector. <em>It is mandatory to define routing
- information for terminal connectors</em>.
-
- See the route() documentation for more on routing
+ void noroute(Connector const & connector); ///< Define terminal connectors
+ /**< The noroute() member explicitly declares, that a
+ connector is terminal and does not directly
+ receive/forward data from/to some other
+ connector. <em>It is mandatory to define routing
+ information for terminal connectors</em>.
- \param[in] connector Terminal connector to declare */
+ See the route() documentation for more on routing
+
+ \param[in] connector Terminal connector to declare */
template <class Target, class Descriptor>
- typename Descriptor::EventBinding const registerEvent(Target target,
- Descriptor const & descriptor);
+ void registerEvent(Target target, Descriptor const & descriptor);
///< Register an external event
/**< The \a target argument may be either an arbitrary
callable object or it may be a member function pointer
may be a timer event or some type of I/O event on a
file descriptor or socket.
- The return value may be used to modify the
- binding. This allows to temporarily inhibit event
- delivery or to remove the binding explicitly. Depending
- on the type of event, other operations may be
- possible. See the event descriptor documentation.
-
- \param[in] target The handler to call whenever the event
- is signaled
- \param[in] descriptor The type of event to register
- \returns An event binding instance of the appropriate
- type. */
+ \param[in] target The handler to call whenever the
+ event is signaled
+ \param[in] descriptor The type of event to register */
+
+ boost::posix_time::ptime eventTime(); ///< Return timestamp of the currently processing
+ ///< event
};
-}}
+ /** \brief Connect compatible connectors
+
+ connect() will connect two compatible connectors: One connector must be active, the other
+ passive.
+ */
+ template <class Source, class Target>
+ void connect(Source const & source, Target const & target);
+
+}}}
///////////////////////////////hh.e////////////////////////////////////////
//#include "Module.cci"