// Custom includes
#include <vector>
#include <boost/utility.hpp>
-#include <boost/date_time/posix_time/posix_time_types.hpp>
#include <boost/ptr_container/ptr_vector.hpp>
+#include "Scheduler/ClockService.hh"
#include "predecl.hh"
//#include "Module.mpp"
class Module
: boost::noncopyable
{
+ public:
+ virtual ~Module();
+
protected:
Module();
event is signaled
\param[in] descriptor The type of event to register */
- boost::posix_time::ptime eventTime(); ///< Return timestamp of the currently processing
- ///< event
+ ClockService::clock_type time() const; ///< Return timestamp of the currently processing
+ ///< event
+
+ ClockService::clock_type now() const;
+
+ void destroy();
+
+#ifndef DOXYGEN
+ virtual void macro_SENF_PPI_MODULE_missing() = 0;
+#endif
private:
- EventManager & eventManager();
+ virtual void init();
+
+ EventManager & eventManager() const;
+ ModuleManager & moduleManager() const;
void registerConnector(connector::Connector & connector);
RouteBase & addRoute(std::auto_ptr<RouteBase> route);
template <class Source, class Target>
friend class detail::RouteHelper;
+ friend class senf::ppi::ModuleManager;
};
- /** \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);
+# define SENF_PPI_MODULE(name) \
+ public: \
+ ~ name() { destroy(); } \
+ void macro_SENF_PPI_MODULE_missing() {} \
+ private:
}}}