00001 // -*- C++ -*- 00020 #ifndef IExeLOCAL_cutionContext_h 00021 #define IExeLOCAL_cutionContext_h 00022 00023 #include <rtc/IRTC.h> 00024 00025 00026 namespace RTC 00027 { 00028 namespace Local 00029 { 00030 00031 class ILightweightRTObject; 00032 class IRTObject; 00033 typedef std::vector<IRTObject*> RTCList; 00034 00035 struct ExecutionContextProfile 00036 { 00037 ExecutionKind kind; 00038 double rate; 00039 IRTObject* owner; 00040 RTCList participants; 00041 NVList properties; 00042 }; 00043 00053 class IExecutionContext 00054 { 00055 public: 00056 virtual ~IExecutionContext() {}; 00057 00058 virtual bool is_running() const = 0; 00059 00060 virtual ReturnCode_t start() = 0; 00061 00062 virtual ReturnCode_t stop() = 0; 00063 00064 virtual double get_rate() const = 0; 00065 00066 virtual ReturnCode_t set_rate(double rate) = 0; 00067 00068 virtual ReturnCode_t 00069 add_component(ILightweightRTObject& comp) = 0; 00070 00071 virtual ReturnCode_t 00072 remove_component(ILightweightRTObject& comp) = 0; 00073 00074 virtual ReturnCode_t 00075 activate_component(ILightweightRTObject& comp) = 0; 00076 00077 virtual ReturnCode_t 00078 deactivate_component(ILightweightRTObject& comp) = 0; 00079 00080 virtual ReturnCode_t 00081 reset_component(ILightweightRTObject& comp) = 0; 00082 00083 virtual LifeCycleState 00084 get_component_state(ILightweightRTObject& comp) = 0; 00085 00086 virtual ExecutionKind 00087 get_kind() const = 0; 00088 00089 virtual const ExecutionContextProfile& 00090 get_profile() const = 0; 00091 }; 00092 }; // namespace Local 00093 }; // namespace RTC 00094 #endif // RTC_LOCAL_IEXECUTIONCONTEXT_H 00095