[openrtm-commit:02598] r2990 - trunk/OpenRTM-aist/src/lib/rtm
openrtm @ openrtm.org
openrtm @ openrtm.org
2017年 4月 26日 (水) 22:48:07 JST
Author: n-ando
Date: 2017-04-26 22:48:07 +0900 (Wed, 26 Apr 2017)
New Revision: 2990
Modified:
trunk/OpenRTM-aist/src/lib/rtm/Manager.cpp
trunk/OpenRTM-aist/src/lib/rtm/Manager.h
trunk/OpenRTM-aist/src/lib/rtm/ModuleManager.h
Log:
[incompat,return] Now Manager::load() function returns error code. refs #4028
Modified: trunk/OpenRTM-aist/src/lib/rtm/Manager.cpp
===================================================================
--- trunk/OpenRTM-aist/src/lib/rtm/Manager.cpp 2017-04-25 08:59:00 UTC (rev 2989)
+++ trunk/OpenRTM-aist/src/lib/rtm/Manager.cpp 2017-04-26 13:48:07 UTC (rev 2990)
@@ -543,10 +543,12 @@
* @brief Load module
* @endif
*/
- void Manager::load(const char* fname, const char* initfunc)
+ ReturnCode_t Manager::load(const std::string& fname,
+ const std::string& initfunc)
{
RTC_TRACE(("Manager::load(fname = %s, initfunc = %s)",
- fname, initfunc));
+ fname.c_str(), initfunc.c_str()));
+
std::string file_name(fname);
std::string init_func(initfunc);
m_listeners.module_.preLoad(file_name, init_func);
@@ -554,18 +556,42 @@
{
if (init_func.empty())
{
- coil::vstring mod(coil::split(fname, "."));
+ coil::vstring mod(coil::split(file_name, "."));
init_func = mod[0] + "Init";
}
std::string path(m_module->load(file_name, init_func));
RTC_DEBUG(("module path: %s", path.c_str()));
m_listeners.module_.postLoad(path, init_func);
}
+ catch(RTC::ModuleManager::NotAllowedOperation& e)
+ {
+ RTC_ERROR(("Operation not allowed: %s",
+ e.reason.c_str()));
+ return RTC::PRECONDITION_NOT_MET;
+ }
+ catch(RTC::ModuleManager::NotFound& e)
+ {
+ RTC_ERROR(("Not found: %s",
+ e.name.c_str()));
+ return RTC::RTC_ERROR;
+ }
+ catch(RTC::ModuleManager::InvalidArguments& e)
+ {
+ RTC_ERROR(("Invalid argument: %s",
+ e.reason.c_str()));
+ return RTC::BAD_PARAMETER;
+ }
+ catch(RTC::ModuleManager::Error& e)
+ {
+ RTC_ERROR(("Error: %s", e.reason.c_str()));
+ return RTC::RTC_ERROR;
+ }
catch (...)
{
- RTC_ERROR(("module load error."));
+ RTC_ERROR(("Unknown error."));
+ return RTC::RTC_ERROR;
}
- return;
+ return RTC::RTC_OK;
}
/*!
Modified: trunk/OpenRTM-aist/src/lib/rtm/Manager.h
===================================================================
--- trunk/OpenRTM-aist/src/lib/rtm/Manager.h 2017-04-25 08:59:00 UTC (rev 2989)
+++ trunk/OpenRTM-aist/src/lib/rtm/Manager.h 2017-04-26 13:48:07 UTC (rev 2990)
@@ -409,6 +409,11 @@
*
* @param fname モジュールファイル名
* @param initfunc 初期化関数名
+ * @return 終了コード
+ * RTC::RTC_OK 正常終了
+ * RTC::RTC_ERROR ロード失敗・不明なエラー
+ * RTC::PRECONDITION_NOT_MET 設定にり許可されない操作
+ * RTC::BAD_PARAMETER 不正なパラメータ
*
* @else
*
@@ -419,10 +424,15 @@
*
* @param fname The module file name
* @param initfunc The initialize function name
+ * @return Return code
+ * RTC::RTC_OK Normal return
+ * RTC::RTC_ERROR Load failed, or unknown error
+ * RTC::PRECONDITION_NOT_MET Not allowed operation by conf
+ * RTC::BAD_PARAMETER Invalid parameter
*
* @endif
*/
- void load(const char* fname, const char* initfunc);
+ ReturnCode_t load(const std::string& fname, const std::string& initfunc);
/*!
* @if jp
Modified: trunk/OpenRTM-aist/src/lib/rtm/ModuleManager.h
===================================================================
--- trunk/OpenRTM-aist/src/lib/rtm/ModuleManager.h 2017-04-25 08:59:00 UTC (rev 2989)
+++ trunk/OpenRTM-aist/src/lib/rtm/ModuleManager.h 2017-04-26 13:48:07 UTC (rev 2990)
@@ -5,7 +5,7 @@
* @date $Date: 2007-12-31 03:08:04 $
* @author Noriaki Ando <n-ando at aist.go.jp>
*
- * Copyright (C) 2006-2010
+ * Copyright (C) 2006-2017
* Noriaki Ando
* Task-intelligence Research Group,
* Intelligent Systems Research Institute,
openrtm-commit メーリングリストの案内