OpenRTM-aist 2.0.2
Loading...
Searching...
No Matches
PeriodicECSharedComposite.h
Go to the documentation of this file.
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 class.
Definition SystemLogger.h:101
Manager class.
Definition Manager.h:91
PeriodicECSharedComposite class.
Definition PeriodicECSharedComposite.h:462
void deactivateChildComp(const RTC::RTObject_ptr rtobj)
~PeriodicECSharedComposite() override
Destructor.
void activateChildComp(const RTC::RTObject_ptr rtobj)
ReturnCode_t onReset(RTC::UniqueId exec_handle) override
Callback function to reset.
ReturnCode_t onInitialize() override
Initialization.
SDOPackage::PeriodicECOrganization * m_org
Reference of Organization .
Definition PeriodicECSharedComposite.h:666
OpenRTM::DataFlowComponent_var m_ref
Reference of object .
Definition PeriodicECSharedComposite.h:658
ReturnCode_t onActivated(RTC::UniqueId exec_handle) override
Callback function to activate.
std::vector< std::string > m_members
Components .
Definition PeriodicECSharedComposite.h:649
ReturnCode_t onDeactivated(RTC::UniqueId exec_handle) override
Callback function to deactivate.
ReturnCode_t exit() override
void resetChildComp(const RTC::RTObject_ptr rtobj)
PeriodicECSharedComposite(Manager *manager)
Constructor.
ReturnCode_t onFinalize() override
[ComponentAction CORBA interface] Finalize RTC
RT-Component class.
Definition RTObject.h:93
Organization implementation class.
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 class.
Definition PeriodicECSharedComposite.h:68
void removeParticipantFromEC(Member &member)
Remove participant DFC from CompositeRTC's ExecutionContext .
void removePort(Member &member, PortList &portlist)
Remove delegated participatns's ports from the composite .
::CORBA::Boolean remove_member(const char *id) override
[CORBA interface] Remove a member of Organization
::RTC::RTObject_impl * m_rtobj
RT Object .
Definition PeriodicECSharedComposite.h:304
PortList m_expPorts
Port List .
Definition PeriodicECSharedComposite.h:400
static void startOwnedEC(Member &member)
Start Owned ExecutionContexts .
void addParticipantToEC(Member &member)
Set CompositeRTC's ExecutionContext to the given DFC .
::CORBA::Boolean add_members(const SDOList &sdo_list) override
[CORBA interface] Add Organization member
std::vector< Member > m_rtcMembers
Member list .
Definition PeriodicECSharedComposite.h:390
void removeOrganizationFromTarget(Member &member)
Remove Organization object from a target DFC .
::RTC::ExecutionContext_var m_ec
ExecutionContext Object reference .
Definition PeriodicECSharedComposite.h:313
void removeAllMembers()
Remove a member of Organization .
std::vector< Member >::iterator MemIt
Definition PeriodicECSharedComposite.h:391
static bool sdoToDFC(SDO_ptr sdo, ::OpenRTM::DataFlowComponent_ptr &dfc)
Conversion from SDO to DFC .
RTC::Logger rtclog
Logger stream .
Definition PeriodicECSharedComposite.h:295
static void print(const PortList &p)
Output PortList to StandardOutput. .
Definition PeriodicECSharedComposite.h:409
PeriodicECOrganization(::RTC::RTObject_impl *rtobj, SDOSystemElement_ptr sdo)
Constructor.
void addOrganizationToTarget(Member &member)
Set Organization object to target DFC .
void addPort(Member &member, PortList &portlist)
Delegate given RTC's ports to the Composite .
void updateDelegatedPorts()
Update/Remove a member of Organization .
~PeriodicECOrganization() override
Destructor.
void addRTCToEC(RTC::RTObject_ptr rtobj)
::CORBA::Boolean set_members(const SDOList &sdo_list) override
[CORBA interface] Set Organization member
static void stopOwnedEC(Member &member)
Stop Owned ExecutionContexts .
void updateExportedPortsList()
PortsList is updated. .
RT-Component.
ExecutionContextHandle_t UniqueId
Definition ComponentActionListener.h:34
SDO Package.
Definition InPortConsumer.h:35