OpenRTM-aist  2.1.0
MultilayerCompositeEC.h
Go to the documentation of this file.
1 // -*- C++ -*-
18 #ifndef RTC_MULTILAYERCOMPOSITEEC_H
19 #define RTC_MULTILAYERCOMPOSITEEC_H
20 
21 
23 #include <coil/PeriodicTask.h>
24 
25 
26 
27 namespace RTC_exp
28 {
50  : public virtual RTC_exp::PeriodicExecutionContext
51  {
52  public:
73 
88 
102  void init(coil::Properties& props) override;
103 
104 
124  int svc() override;
125 
139  RTC::ReturnCode_t bindComponent(RTC::RTObject_impl* rtc) override;
140 
141 
143  virtual void addTask(std::vector<RTC::LightweightRTObject_ptr> rtcs);
144 
145 
146 
147  protected:
148  class ChildTask
149  {
150  public:
151  ChildTask(coil::PeriodicTaskBase* task, MultilayerCompositeEC* ec);
152  virtual ~ChildTask();
155  virtual int svc();
156  void signal();
157  void join();
158  coil::TimeMeasure::Statistics getPeriodStat();
159  coil::TimeMeasure::Statistics getExecStat();
160  void finalize();
161  private:
162  std::vector<RTC::LightweightRTObject_ptr> m_rtcs;
163  coil::PeriodicTaskBase* m_task;
164  MultilayerCompositeEC* m_ec;
165  std::vector<RTC_impl::RTObjectStateMachine*> m_comps;
166  WorkerThreadCtrl m_worker;
167  WorkerThreadCtrl m_signal_worker;
168 
169  };
170 
172 
173  std::vector<ChildTask*> m_tasklist;
175 
176 
177  }; // class MultilayerCompositeEC
178 } // namespace RTC_exp
179 
180 
181 extern "C"
182 {
191 }
192 
193 #endif // RTC_MULTILAYERCOMPOSITEEC_H
void MultilayerCompositeECInit(RTC::Manager *manager)
Initialization function to register to ECFactory.
PeriodicExecutionContext class.
Manager class.
Definition: Manager.h:91
RT-Component class.
Definition: RTObject.h:93
Definition: MultilayerCompositeEC.h:149
ChildTask(coil::PeriodicTaskBase *task, MultilayerCompositeEC *ec)
coil::TimeMeasure::Statistics getPeriodStat()
coil::TimeMeasure::Statistics getExecStat()
void addComponent(RTC::LightweightRTObject_ptr rtc)
MultilayerCompositeEC class.
Definition: MultilayerCompositeEC.h:51
virtual void addTask(std::vector< RTC::LightweightRTObject_ptr > rtcs)
MultilayerCompositeEC()
Default Constructor.
~MultilayerCompositeEC() override
Destructor.
virtual void addRTCToTask(ChildTask *task, RTC::LightweightRTObject_ptr rtobj)
virtual RTC_impl::RTObjectStateMachine * findComponent(RTC::LightweightRTObject_ptr comp)
RTC::ReturnCode_t bindComponent(RTC::RTObject_impl *rtc) override
Bind the component.
RTC_impl::RTObjectStateMachine * m_ownersm
Definition: MultilayerCompositeEC.h:174
std::vector< ChildTask * > m_tasklist
Definition: MultilayerCompositeEC.h:173
int svc() override
Thread execution function for ExecutionContext.
void init(coil::Properties &props) override
Initialize the ExecutionContext.
PeriodicExecutionContext class.
Definition: PeriodicExecutionContext.h:60
Definition: RTObjectStateMachine.h:43
Definition: MultilayerCompositeEC.h:28
RTC::LightweightRTObject_ptr LightweightRTObject_ptr
Definition: ExecutionContextWorker.h:37
coil::Properties Properties
Definition: RTC.h:72
Condition variable class for worker.
Definition: PeriodicExecutionContext.h:672