OpenRTM-aist  2.1.0
ExecutionContextProfile.h
[詳解]
1 // -*- C++ -*-
19 #ifndef RTC_EXECUTIONCONTEXTPROFILE_H
20 #define RTC_EXECUTIONCONTEXTPROFILE_H
21 
22 #include <mutex>
23 #include <coil/Properties.h>
24 
25 #include <rtm/idl/RTCStub.h>
26 #include <rtm/SystemLogger.h>
27 
28 namespace RTC_impl
29 {
51  {
52  public:
72  explicit ExecutionContextProfile(RTC::ExecutionKind kind = RTC::PERIODIC);
73 
88 
112  void setObjRef(RTC::ExecutionContextService_ptr ec_ptr);
113 
133  RTC::ExecutionContextService_ptr getObjRef() const;
134 
168  RTC::ReturnCode_t setRate(double rate);
169  RTC::ReturnCode_t setPeriod(std::chrono::nanoseconds period);
170 
191  double getRate() const;
192  std::chrono::nanoseconds getPeriod() const;
193 
216  static const char* getKindString(RTC::ExecutionKind kind) ;
217  const char* getKindString() const
218  {
219  return getKindString(m_profile.kind);
220  }
221 
240  RTC::ReturnCode_t setKind(RTC::ExecutionKind kind);
241 
261  RTC::ExecutionKind getKind() const;
262 
280  RTC::ReturnCode_t setOwner(RTC::LightweightRTObject_ptr comp);
281 
298  RTC::RTObject_ptr getOwner() const;
299 
332 
364 
392 #ifndef ORB_IS_RTORB
393  const RTC::RTCList& getComponentList() const;
394 #else
395  const RTC_RTCList& getComponentList() const;
396 #endif
397 
419 
440 
463  RTC::ExecutionContextProfile* getProfile();
464 
482  const RTC::ExecutionContextProfile& getProfile() const;
483 
499  void lock() const;
500 
516  void unlock() const;
517 
518  private:
526  mutable RTC::Logger rtclog;
534  RTC::ExecutionContextProfile m_profile;
535 
543  mutable std::mutex m_profileMutex;
544 
552  std::chrono::nanoseconds m_period;
553 
561  RTC::ExecutionContextService_var m_ref;
562 
563  class find_participant
564  {
565  RTC::RTObject_var m_comp;
566  public:
567  explicit find_participant(RTC::RTObject_ptr comp)
568  : m_comp(RTC::RTObject::_duplicate(comp)) {}
569 #ifdef ORB_IS_ORBEXPRESS
570  bool operator()(RTC::RTObject_var comp)
571  {
572  return m_comp->_is_equivalent(comp.in());
573  }
574 #else
575  bool operator()(RTC::RTObject_ptr comp)
576  {
577  return m_comp->_is_equivalent(comp);
578  }
579 #endif
580  };
581  }; // class ExecutionContextProfile
582 } // namespace RTC_impl
583 
584 #endif // RTC_EXECUTIONCONTEXTPROFILE_H
RT component logger class
Logger クラス
Definition: SystemLogger.h:101
ExecutionContextProfile クラス
Definition: ExecutionContextProfile.h:51
void setObjRef(RTC::ExecutionContextService_ptr ec_ptr)
CORBA オブジェクト参照のセット
virtual ~ExecutionContextProfile()
デストラクタ
RTC::ReturnCode_t addComponent(RTC::LightweightRTObject_ptr comp)
RTコンポーネントを追加する
RTC::ReturnCode_t removeComponent(RTC::LightweightRTObject_ptr comp)
RTコンポーネントを参加者リストから削除する
void setProperties(coil::Properties &props)
Propertiesをセットする
const RTC::ExecutionContextProfile & getProfile() const
Profileを取得する
RTC::ExecutionContextProfile * getProfile()
Profileを取得する
RTC::ReturnCode_t setKind(RTC::ExecutionKind kind)
ExecutionKind を設定する
RTC::ReturnCode_t setOwner(RTC::LightweightRTObject_ptr comp)
Ownerコンポーネントをセットする。
void lock() const
ExecutionContextProfileをロックする
const char * getKindString() const
Definition: ExecutionContextProfile.h:217
static const char * getKindString(RTC::ExecutionKind kind)
ExecutionKind を文字列化する
std::chrono::nanoseconds getPeriod() const
RTC::ReturnCode_t setRate(double rate)
ExecutionContext の実行周期(Hz)を設定する
RTC::ExecutionKind getKind() const
ExecutionKind を取得する
double getRate() const
ExecutionContext の実行周期(Hz)を取得する
coil::Properties getProperties() const
Propertiesを取得する
void unlock() const
ExecutionContextProfileをアンロックする
RTC::ReturnCode_t setPeriod(std::chrono::nanoseconds period)
RTC::ExecutionContextService_ptr getObjRef() const
CORBA オブジェクト参照の取得
RTC::RTObject_ptr getOwner() const
Ownerコンポーネントの参照を取得する
const RTC::RTCList & getComponentList() const
RTコンポーネントの参加者リストを取得する
ExecutionContextProfile(RTC::ExecutionKind kind=RTC::PERIODIC)
デフォルトコンストラクタ
Definition: ExecutionContextProfile.h:29
RTC::LightweightRTObject_ptr LightweightRTObject_ptr
Definition: ExecutionContextWorker.h:37
RTコンポーネント
coil::Properties Properties
Definition: RTC.h:72