OpenRTM-aist 2.0.2
読み取り中…
検索中…
一致する文字列を見つけられません
PeriodicECSharedComposite.h
[詳解]
1// -*- C++ -*-
20#ifndef RTC_PERIODICECSHAREDCOMPOSITE_H
21#define RTC_PERIODICECSHAREDCOMPOSITE_H
22
23#include <rtm/idl/RTCSkel.h>
24#include <rtm/idl/OpenRTMSkel.h>
25#include <rtm/RTObject.h>
27#include <rtm/SdoOrganization.h>
28#include <coil/stringutil.h>
29
30#include <string>
31#include <utility>
32#include <vector>
33
49namespace SDOPackage
50{
67 : public Organization_impl
68 {
69 using PortList = std::vector<std::string>;
70
71 public:
89 explicit PeriodicECOrganization(::RTC::RTObject_impl* rtobj, SDOSystemElement_ptr sdo);
104
127 ::CORBA::Boolean add_members(const SDOList& sdo_list) override;
128
152 ::CORBA::Boolean set_members(const SDOList& sdo_list) override;
153
175 ::CORBA::Boolean remove_member(const char* id) override;
176
193
194 protected:
195 class Member;
203 static bool sdoToDFC(SDO_ptr sdo, ::OpenRTM::DataFlowComponent_ptr& dfc);
204
212 static void stopOwnedEC(Member& member);
213
221 static void startOwnedEC(Member& member);
222
231
240 void addRTCToEC(RTC::RTObject_ptr rtobj);
241
250
259
267 void addPort(Member& member, PortList& portlist);
268
276 void removePort(Member& member, PortList& portlist);
277
286
287 protected:
296
305
313 ::RTC::ExecutionContext_var m_ec;
314
315 class Member
316 {
317 public:
318 explicit Member(RTC::RTObject_ptr rtobj)
319 // : rtobj_(rtobj),
320 // profile_(rtobj->get_component_profile()),
321 // eclist_(rtobj->get_owned_contexts()),
322 // config_(rtobj->get_configuration())
323 {
324 rtobj_ = RTC::RTObject::_duplicate(rtobj);
325 profile_ = rtobj->get_component_profile();
326 eclist_ = rtobj->get_owned_contexts();
327 config_ = rtobj->get_configuration();
328 }
329
330 virtual ~Member()
331 {
332 /*
333 rtobj_.out();
334 profile_.out();
335 eclist_.out();
336 config_.out();
337 */
338 }
339
340 Member(const Member& x)
341 // : rtobj_(x.rtobj_),
342 // profile_(x.profile_),
343 // eclist_(x.eclist_),
344 // config_(x.config_)
345 {
346 rtobj_ = x.rtobj_;
347 profile_ = x.profile_;
348 eclist_ = x.eclist_;
349 config_ = x.config_;
350 }
351
353 {
354 Member tmp(x);
355 tmp.swap(*this);
356 return *this;
357 }
358//
359 void swap(Member& x)
360 {
361 RTC::RTObject_var rtobj(x.rtobj_);
362 RTC::ComponentProfile_var profile(x.profile_);
363 RTC::ExecutionContextList_var eclist(x.eclist_);
364 SDOPackage::Configuration_var config(x.config_);
365
366 x.rtobj_ = this->rtobj_;
367 x.profile_ = this->profile_;
368 x.eclist_ = this->eclist_;
369 x.config_ = this->config_;
370
371 this->rtobj_ = rtobj;
372 this->profile_ = profile;
373 this->eclist_ = eclist;
374 this->config_ = config;
375 }
376
377 RTC::RTObject_var rtobj_;
378 RTC::ComponentProfile_var profile_;
379 RTC::ExecutionContextList_var eclist_;
380 SDOPackage::Configuration_var config_;
381 };
382
390 std::vector<Member> m_rtcMembers;
391 using MemIt = std::vector<Member>::iterator;
392
400 PortList m_expPorts;
401
409 static void print(const PortList& p)
410 {
411 for (auto & i : p)
412 {
413 std::cout << i << std::endl;
414 }
415 }
416 };
417} // namespace SDOPackage
418
419
434namespace RTC
435{
436 class Manager;
437
461 : public RTObject_impl
462 {
463 public:
482
497
513 ReturnCode_t onInitialize() override;
545 ReturnCode_t onActivated(RTC::UniqueId exec_handle) override;
546 void activateChildComp(const RTC::RTObject_ptr rtobj);
578 ReturnCode_t onDeactivated(RTC::UniqueId exec_handle) override;
579 void deactivateChildComp(const RTC::RTObject_ptr rtobj);
580
611 ReturnCode_t onReset(RTC::UniqueId exec_handle) override;
612 void resetChildComp(const RTC::RTObject_ptr rtobj);
637 ReturnCode_t onFinalize() override;
638
639 ReturnCode_t exit() override;
640
641 protected:
649 std::vector<std::string> m_members;
650
658 OpenRTM::DataFlowComponent_var m_ref;
667 }; // class PeriodicECOrganization
668} // namespace RTC
669
670
671extern "C"
672{
674}
675
676#endif // RTC_PERIODICECSHAREDCOMPOSITE_H
void PeriodicECSharedCompositeInit(RTC::Manager *manager)
PeriodicExecutionContext class
RT component base class
SDO Organization implementation class
Logger クラス
Definition SystemLogger.h:101
Manager クラス
Definition Manager.h:91
PeriodicECSharedComposite クラス
Definition PeriodicECSharedComposite.h:462
void deactivateChildComp(const RTC::RTObject_ptr rtobj)
~PeriodicECSharedComposite() override
デストラクタ
void activateChildComp(const RTC::RTObject_ptr rtobj)
ReturnCode_t onReset(RTC::UniqueId exec_handle) override
リセット処理用コールバック関数
ReturnCode_t onInitialize() override
初期化
SDOPackage::PeriodicECOrganization * m_org
Organizationのリファレンス
Definition PeriodicECSharedComposite.h:666
OpenRTM::DataFlowComponent_var m_ref
オブジェクトのリファレンス
Definition PeriodicECSharedComposite.h:658
ReturnCode_t onActivated(RTC::UniqueId exec_handle) override
活性化処理用コールバック関数
std::vector< std::string > m_members
コンポーネント
Definition PeriodicECSharedComposite.h:649
ReturnCode_t onDeactivated(RTC::UniqueId exec_handle) override
非活性化処理用コールバック関数
ReturnCode_t exit() override
void resetChildComp(const RTC::RTObject_ptr rtobj)
PeriodicECSharedComposite(Manager *manager)
コンストラクタ
ReturnCode_t onFinalize() override
[ComponentAction CORBA interface] RTC の終了
RTコンポーネントクラス
Definition RTObject.h:93
SDO Organization 実装クラス
Definition SdoOrganization.h:74
Definition PeriodicECSharedComposite.h:316
SDOPackage::Configuration_var config_
Definition PeriodicECSharedComposite.h:380
RTC::ExecutionContextList_var eclist_
Definition PeriodicECSharedComposite.h:379
RTC::ComponentProfile_var profile_
Definition PeriodicECSharedComposite.h:378
Member & operator=(const Member &x)
Definition PeriodicECSharedComposite.h:352
RTC::RTObject_var rtobj_
Definition PeriodicECSharedComposite.h:377
virtual ~Member()
Definition PeriodicECSharedComposite.h:330
Member(RTC::RTObject_ptr rtobj)
Definition PeriodicECSharedComposite.h:318
void swap(Member &x)
Definition PeriodicECSharedComposite.h:359
Member(const Member &x)
Definition PeriodicECSharedComposite.h:340
PeriodicECOrganization クラス
Definition PeriodicECSharedComposite.h:68
void removeParticipantFromEC(Member &member)
Composite の ExecutionContext から DFC を削除する
void removePort(Member &member, PortList &portlist)
委譲していたポートを削除する
::CORBA::Boolean remove_member(const char *id) override
[CORBA interface] Organizationメンバーを削除する
::RTC::RTObject_impl * m_rtobj
RT オブジェクト
Definition PeriodicECSharedComposite.h:304
PortList m_expPorts
Port List
Definition PeriodicECSharedComposite.h:400
static void startOwnedEC(Member &member)
Owned ExecutionContext を起動する
void addParticipantToEC(Member &member)
Composite の ExecutionContext を DFC にセットする
::CORBA::Boolean add_members(const SDOList &sdo_list) override
[CORBA interface] Organizationメンバーを追加する
std::vector< Member > m_rtcMembers
RTCメンバーリスト
Definition PeriodicECSharedComposite.h:390
void removeOrganizationFromTarget(Member &member)
Organization オブジェクトを DFCから削除する
::RTC::ExecutionContext_var m_ec
ExecutionContext オブジェクトリファレンス
Definition PeriodicECSharedComposite.h:313
void removeAllMembers()
Organizationメンバーを削除する
std::vector< Member >::iterator MemIt
Definition PeriodicECSharedComposite.h:391
static bool sdoToDFC(SDO_ptr sdo, ::OpenRTM::DataFlowComponent_ptr &dfc)
SDOからDFCへの変換
RTC::Logger rtclog
ロガーストリーム
Definition PeriodicECSharedComposite.h:295
static void print(const PortList &p)
PortListを標準出力する。
Definition PeriodicECSharedComposite.h:409
PeriodicECOrganization(::RTC::RTObject_impl *rtobj, SDOSystemElement_ptr sdo)
コンストラクタ
void addOrganizationToTarget(Member &member)
DFC に Organization オブジェクトを与える
void addPort(Member &member, PortList &portlist)
ポートを委譲する
void updateDelegatedPorts()
Organizationメンバーを更新/削除する
~PeriodicECOrganization() override
デストラクタ
void addRTCToEC(RTC::RTObject_ptr rtobj)
::CORBA::Boolean set_members(const SDOList &sdo_list) override
[CORBA interface] Organizationメンバーをセットする
static void stopOwnedEC(Member &member)
Owned ExecutionContext を停止させる
void updateExportedPortsList()
PortsListを更新する
RTコンポーネント
ExecutionContextHandle_t UniqueId
Definition ComponentActionListener.h:34
SDO パッケージ
Definition InPortConsumer.h:35