Project

General

Profile

バグ #2084

複合RTCのメンバ(子RTC)を削除すると,すべての子RTCがECからデタッチされてしまう

Added by ta almost 12 years ago. Updated over 7 years ago.

Status:
担当
Priority:
通常
Assignee:
Target version:
-
Start date:
05/02/2011
Due date:
% Done:

30%

Estimated time:

Description

1.複合RTCをエディタで開いて子RTCを Delete
2.複合RTCは親RTCの ECに,子RTCがアタッチされる

子RTCの一部を削除すると,その子RTCだけがデタッチされるべきだと思うのですが,
すべての子RTCがデタッチされてしまうようです.

History

#1 Updated by kurihara almost 12 years ago

  • Status changed from 新規 to 担当
  • Assignee set to kurihara

#2 Updated by kurihara almost 12 years ago

  • % Done changed from 0 to 30

PeriodicECSharedComposite.cppのremoveParticipantFromEC(Member& member)
内の以下の内容で、organizationのメンバーにをremove_componentでECから削除する
ようになっている。

   // line: 380
   OrganizationList_var orglist = member.rtobj_->get_organizations();
   for (CORBA::ULong i(0); i < orglist->length(); ++i)
     {
       SDOList_var sdos = orglist[i]->get_members();
       for (CORBA::ULong j(0); j < sdos->length(); ++j)
         {
#ifndef ORB_IS_RTORB
           ::OpenRTM::DataFlowComponent_var dfc;
           if (!sdoToDFC(sdos[j].in(), dfc.out())) { continue; }
#else // ORB_IS_RTORB
           ::OpenRTM::DataFlowComponent_var dfc;
           ::OpenRTM::DataFlowComponent_ptr dfc_ptr(dfc);
           if (!sdoToDFC(sdos[j].in(), dfc_ptr)) { continue; }
#endif // ORB_IS_RTORB
           m_ec->remove_component(dfc.in());
         }
     }

PeriodicECSharedComposite.cppのadd/removeParticipantFromEC(Member& member)
での上記処理は、 r1593 にて追加されている。
Compositeの処理に関しては、再検討する必要がある。

#3 Updated by n-ando over 7 years ago

  • Project changed from OpenRTM-aist (C++) to コア

Also available in: Atom PDF