操作
バグ #2084
未完了複合RTCのメンバ(子RTC)を削除すると,すべての子RTCがECからデタッチされてしまう
開始日:
2011/05/02
期日:
進捗率:
30%
予定工数:
説明
1.複合RTCをエディタで開いて子RTCを Delete
2.複合RTCは親RTCの ECに,子RTCがアタッチされる
子RTCの一部を削除すると,その子RTCだけがデタッチされるべきだと思うのですが,
すべての子RTCがデタッチされてしまうようです.
kurihara さんが14年以上前に更新
- 進捗率 を 0 から 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の処理に関しては、再検討する必要がある。
操作