OpenRTM-aist  2.1.0
ExecutionContextProfile.h
Go to the documentation of this file.
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 class.
Definition: SystemLogger.h:101
ExecutionContextProfile class.
Definition: ExecutionContextProfile.h:51
void setObjRef(RTC::ExecutionContextService_ptr ec_ptr)
Setting a CORBA object reference.
virtual ~ExecutionContextProfile()
Destructor.
RTC::ReturnCode_t addComponent(RTC::LightweightRTObject_ptr comp)
Add an RT-component.
RTC::ReturnCode_t removeComponent(RTC::LightweightRTObject_ptr comp)
Remove the RT-Component from participant list.
void setProperties(coil::Properties &props)
Setting Properties.
const RTC::ExecutionContextProfile & getProfile() const
Getting Profile.
RTC::ExecutionContextProfile * getProfile()
Getting Profile.
RTC::ReturnCode_t setKind(RTC::ExecutionKind kind)
Set the ExecutionKind.
RTC::ReturnCode_t setOwner(RTC::LightweightRTObject_ptr comp)
Setting owner component of the execution context.
void lock() const
Getting a lock of RTC::ExecutionContextProfile.
const char * getKindString() const
Definition: ExecutionContextProfile.h:217
static const char * getKindString(RTC::ExecutionKind kind)
Converting ExecutionKind enum to string.
std::chrono::nanoseconds getPeriod() const
RTC::ReturnCode_t setRate(double rate)
Set execution rate(Hz) of ExecutionContext.
RTC::ExecutionKind getKind() const
Get the ExecutionKind.
double getRate() const
Get execution rate(Hz) of ExecutionContext.
coil::Properties getProperties() const
Setting Properties.
void unlock() const
Release a lock of the RTC::ExecutionContextProfile.
RTC::ReturnCode_t setPeriod(std::chrono::nanoseconds period)
RTC::ExecutionContextService_ptr getObjRef() const
Get the reference to the CORBA object.
RTC::RTObject_ptr getOwner() const
Getting a reference of the owner component.
const RTC::RTCList & getComponentList() const
Getting participant RTC list.
ExecutionContextProfile(RTC::ExecutionKind kind=RTC::PERIODIC)
Default Constructor.
Definition: ExecutionContextProfile.h:29
RTC::LightweightRTObject_ptr LightweightRTObject_ptr
Definition: ExecutionContextWorker.h:37
RT-Component.
coil::Properties Properties
Definition: RTC.h:72