バグ #2314
完了
ConfigurationSetのアクティブセットを<comp>.confで設定しても、見かけ上アクティブセットがデフォルトのままである
n-ando さんがほぼ13年前に追加.
ほぼ13年前に更新.
説明
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の内容になっている。
関連するチケット
2 (0件未完了 — 2件完了)
問題は、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を書き換えるほうが自然である。
どうするか要検討。
- ステータス を 新規 から 終了 に変更
- 進捗率 を 80 から 100 に変更
他の形式にエクスポート: Atom
PDF