操作
バグ #2314
完了ConfigurationSetのアクティブセットを<comp>.confで設定しても、見かけ上アクティブセットがデフォルトのままである
開始日:
2012/01/04
期日:
進捗率:
100%
予定工数:
説明
ConfigurationSetのアクティブセットを<comp>.confで以下のように設定しても、
(ConfigSampleの例)
configuration.active_config: mode1 conf.default.int_param0: 0 conf.default.int_param1: 1 conf.default.double_param0: 0.99 conf.default.double_param1: -0.99 conf.default.str_param0: default conf.default.str_param1: default set in conf file conf.default.vector_param0: 0.0,0.1,0.2,0.3,0.4,0.5,0.6
getActiveId()で取得したアクテx部セットのIDがdefaultのままである。
ただし、変数の中身はmode1の内容になっている。
n-ando さんがほぼ13年前に更新
- 進捗率 を 0 から 80 に変更
問題は、RTObjectのon_initialize()内で、ConfigAdminのupdate()しか読んでいないため、
変数の中身は指定IDの内容に書き変わっているにもかかわらず、IDは元のままとなっている。
ReturnCode_t RTObject_impl::on_initialize() throw (CORBA::SystemException) { RTC_TRACE(("on_initialize()")); ReturnCode_t ret(RTC::RTC_ERROR); try { preOnInitialize(0); ret = onInitialize(); } catch (...) { ret = RTC::RTC_ERROR; } std::string active_set; active_set = m_properties.getProperty("configuration.active_config", "default"); if (m_configsets.haveConfig(active_set.c_str())) { RTC_DEBUG(("Active configuration set: %s exists.", active_set.c_str())); m_configsets.update(active_set.c_str()); m_configsets.activateConfigurationSet(active_set.c_str()); // ここが足りない } else { RTC_DEBUG(("Active configuration set: %s does not exists.", active_set.c_str())); m_configsets.update("default"); m_configsets.activateConfigurationSet("default"); // ここが足りない } postOnInitialize(0, ret); return ret; } <pre> ソースを上記のように直し修正されたことを確認した。 ただし、update()でIDを指定した場合、強制的にActiveIdを書き換えるほうが自然である。 どうするか要検討。
操作