00001 // -*- C++ -*- 00020 /* 00021 * $Log$ 00022 * 00023 */ 00024 00025 #include <rtm/RTObject.h> 00026 #include <rtm/StateMachine.h> 00027 00028 namespace RTC 00029 { 00030 class Manager; 00031 class DataFlowBase 00032 : public virtual RTObject_impl, 00033 public virtual POA_RTC::DataFlowRTObject, 00034 public virtual PortableServer::RefCountServantBase 00035 { 00036 public: 00037 typedef StateHolder<RTC::LifeCycleState> DFState; 00038 00039 00040 DataFlowBase(Manager* manager); 00041 virtual ~DataFlowBase(){}; 00059 virtual ExecutionContextAdminList* get_execution_context_admins(); 00060 00061 00062 // RTC::LifeCycle 00093 virtual ReturnCode_t initialize(); 00094 00119 virtual ReturnCode_t finalize(); 00120 00148 virtual ReturnCode_t reset(ExecutionContext_ptr exec_context); 00149 00174 virtual ReturnCode_t exit(); 00175 00196 virtual CORBA::Boolean is_alive(); 00197 00198 // User implementation methods of action callbacks 00199 virtual ReturnCode_t onInitialize(); 00200 virtual ReturnCode_t onFinalize(); 00201 virtual ReturnCode_t onStartup(); 00202 virtual ReturnCode_t onShutdown(); 00203 virtual ReturnCode_t onActivated(); 00204 virtual ReturnCode_t onExecute(); 00205 virtual ReturnCode_t onStateUpdate(); 00206 virtual ReturnCode_t onRateChanged(); 00207 virtual ReturnCode_t onDeactivated(); 00208 virtual ReturnCode_t onAborting(); 00209 virtual ReturnCode_t onError(); 00210 virtual ReturnCode_t onReset(); 00211 00212 // RTC::ComponentAction 00213 virtual ReturnCode_t on_initialize(); 00214 virtual ReturnCode_t on_finalize(); 00215 virtual ReturnCode_t on_startup(ExecutionContext_ptr exec_context); 00216 virtual ReturnCode_t on_shutdown(ExecutionContext_ptr exec_context); 00217 virtual ReturnCode_t on_activated(ExecutionContext_ptr exec_context); 00218 virtual ReturnCode_t on_execute(ExecutionContext exec_context); 00219 virtual ReturnCode_t on_state_update(ExecutionContext_ptr exec_context); 00220 virtual ReturnCode_t on_rate_changed(ExecutionContext_ptr exec_context); 00221 virtual ReturnCode_t on_deactivated(ExecutionContext_ptr exec_context); 00222 virtual ReturnCode_t on_aborting(ExecutionContext_ptr exec_context); 00223 virtual ReturnCode_t on_error(ExecutionContext_ptr exec_context); 00224 virtual ReturnCode_t on_reset(ExecutionContext_ptr exec_context); 00225 00226 00227 // StateMachine callbacks 00228 ReturnCode_t _on_initialize(const DFState& state); 00229 ReturnCode_t _on_finalize(const DFState& state); 00230 ReturnCode_t _on_startup(const DFState& state); 00231 ReturnCode_t _on_shutdown(const DFState& state); 00232 ReturnCode_t _on_activated(const DFState& state); 00233 ReturnCode_t _on_execute(const DFState& state); 00234 ReturnCode_t _on_state_update(const DFState& state); 00235 ReturnCode_t _on_rate_changed(const DFState& state); 00236 ReturnCode_t _on_deactivated(const DFState& state); 00237 ReturnCode_t _on_aborting(const DFState& state); 00238 ReturnCode_t _on_error(const DFState& state); 00239 ReturnCode_t _on_reset(const DFState& state); 00240 ReturnCode_t _null_func(const DFState& state); 00241 00242 typedef StateMachine<RTC::LifeCycleState, 00243 RTC::ReturnCode_t, 00244 DataFlowBase> DFPStateMachine; 00245 DFPStateMachine m_stateMachine; 00246 00247 PortableServer::POA_var m_pPOA; 00248 CORBA::ORB_var m_pORB; 00249 // OpenRTM ではコンポーネントは一つの状態、一つのExecutionContext 00250 // のみ持つ 00251 ExecutionContextAdminList_var 00252 }; // class DataFlowBase 00253 00254 }; // namespace RTC