[openrtm-commit:00466] r2239 - trunk/OpenRTM-aist/src/lib/rtm

openrtm @ openrtm.org openrtm @ openrtm.org
2011年 10月 25日 (火) 22:34:57 JST


Author: n-ando
Date: 2011-10-25 22:34:57 +0900 (Tue, 25 Oct 2011)
New Revision: 2239

Modified:
   trunk/OpenRTM-aist/src/lib/rtm/Manager.cpp
Log:
loadl service module loader

Modified: trunk/OpenRTM-aist/src/lib/rtm/Manager.cpp
===================================================================
--- trunk/OpenRTM-aist/src/lib/rtm/Manager.cpp	2011-10-25 09:32:34 UTC (rev 2238)
+++ trunk/OpenRTM-aist/src/lib/rtm/Manager.cpp	2011-10-25 13:34:57 UTC (rev 2239)
@@ -40,6 +40,7 @@
 #include <rtm/CORBA_IORUtil.h>
 #include <rtm/SdoServiceConsumerBase.h>
 #include <rtm/LocalServiceAdmin.h>
+#include <rtm/SystemLogger.h>
 
 #if defined(minor)
 #undef minor
@@ -265,6 +266,37 @@
 	return false;
       }
 
+    std::vector<std::string> lsvc;
+    lsvc = coil::split(m_config["manager.local_service.modules"], ",");
+
+    for (int i(0), len(lsvc.size()); i < len; ++i)
+      {
+	std::string basename(coil::split(lsvc[i], ".").operator[](0));
+	basename += "Init";
+	try
+	  {
+	    m_module->load(lsvc[i], basename);
+	  }
+	catch (ModuleManager::Error& e)
+	  {
+	    RTC_ERROR(("Module load error: %s", e.reason.c_str()));
+	  }
+	catch (ModuleManager::SymbolNotFound& e)
+	  {
+	    RTC_ERROR(("Symbol not found: %s", e.name.c_str()));
+	  }
+	catch (ModuleManager::ModuleNotFound& e)
+	  {
+	    RTC_ERROR(("Module not found: %s", e.name.c_str()));
+	  }
+	catch (...)
+	  {
+	    RTC_ERROR(("Unknown Exception"));
+	  }
+      }
+
+    initLocalService();
+
     std::vector<std::string> mods;
     mods = coil::split(m_config["manager.modules.preload"], ",");
 
@@ -297,8 +329,8 @@
     m_config["sdo.service.consumer.available_services"]
       = coil::flatten(SdoServiceConsumerFactory::instance().getIdentifiers());
 
-    initLocalService();
 
+
     if (m_initProc != NULL)
       {
         m_initProc(this);
@@ -1609,7 +1641,7 @@
 	    coil::Properties p(comps[i]->getInstanceName());
 	    p << comps[i]->getProperties();
             rtclog.lock();
-	    rtclog.level(Logger::RTL_PARANOID) << p;
+	    rtclog.level(::RTC::Logger::RTL_PARANOID) << p;
             rtclog.unlock();
 	  }
 	catch (...)



openrtm-commit メーリングリストの案内