[openrtm-commit:03064] r3159 - branches/RELENG_1_2/OpenRTM-aist/src/lib/rtm
openrtm @ openrtm.org
openrtm @ openrtm.org
2018年 1月 17日 (水) 10:06:34 JST
Author: miyamoto
Date: 2018-01-17 10:06:34 +0900 (Wed, 17 Jan 2018)
New Revision: 3159
Modified:
branches/RELENG_1_2/OpenRTM-aist/src/lib/rtm/NamingManager.cpp
branches/RELENG_1_2/OpenRTM-aist/src/lib/rtm/NamingManager.h
Log:
[compat,->RELENG_1_2] refs #3271 #3272
Modified: branches/RELENG_1_2/OpenRTM-aist/src/lib/rtm/NamingManager.cpp
===================================================================
--- branches/RELENG_1_2/OpenRTM-aist/src/lib/rtm/NamingManager.cpp 2018-01-17 00:56:38 UTC (rev 3158)
+++ branches/RELENG_1_2/OpenRTM-aist/src/lib/rtm/NamingManager.cpp 2018-01-17 01:06:34 UTC (rev 3159)
@@ -51,6 +51,7 @@
coil::vstring host_port(coil::split(names, ":"));
if (coil::dest_to_endpoint(host_port[0], m_endpoint))
{
+
RTC_INFO(("Endpoint for the CORBA naming service (%s) is %s.",
host_port[0].c_str(),
m_endpoint.c_str()));
@@ -180,6 +181,350 @@
return m_cosnaming.isAlive();
}
+ /*!
+ * @if jp
+ *
+ * @brief ¥Í¡¼¥ß¥ó¥°¥µ¡¼¥Ó¥¹¤«¤éRTC¤ò¥¤¥ó¥¹¥¿¥ó¥¹Ì¾¤«¤é¸¡º÷¤·¡¢
+ * °ìÃפ¹¤ëRTC¤Î¥ê¥¹¥È¤ò¼èÆÀ¤¹¤ë
+ *
+ * @param context ¸½ºß¸¡º÷Ãæ¤Î¥³¥ó¥Æ¥¥¹¥È
+ * @param name RTC¤Î¥¤¥ó¥¹¥¿¥ó¥¹Ì¾
+ * @param rtcs RTC¤Î¥ê¥¹¥È
+ *
+ * @else
+ *
+ * @brief
+ *
+ * @param context
+ * @param name
+ * @param rtcs
+ *
+ * @endif
+ */
+ void NamingOnCorba::getComponentByName(CosNaming::NamingContext_ptr context, std::string name, RTC::RTCList& rtcs)
+ {
+
+ CORBA::ULong length = 500;
+ CosNaming::BindingList_var bl;
+ CosNaming::BindingIterator_var bi;
+ context->list(length, bl, bi);
+
+ CORBA::ULong len(bl->length());
+ for (CORBA::ULong i = 0; i < len; ++i)
+ {
+ if (bl[i].binding_type == CosNaming::ncontext)
+ {
+ CosNaming::NamingContext_ptr next_context = CosNaming::NamingContext::
+ _narrow(context->resolve(bl[i].binding_name));
+ getComponentByName(next_context, name, rtcs);
+ }
+ else if (bl[i].binding_type == CosNaming::nobject)
+ {
+ if (std::string(bl[i].binding_name[0].id) == name && std::string(bl[i].binding_name[0].kind) == "rtc")
+ {
+ try
+ {
+ //RTC::CorbaConsumer<RTC::RTObject> cc;
+ //cc.setObject(context->resolve(bl[i].binding_name));
+ RTC::RTObject_ptr obj = RTC::RTObject::_narrow(context->resolve(bl[i].binding_name));
+ if (!obj->_non_existent())
+ {
+ CORBA_SeqUtil::push_back(rtcs, obj);
+ }
+ }
+ catch (...)
+ {
+ //RTC_ERROR((""));
+ }
+ }
+ }
+ }
+ }
+ /*!
+ * @if jp
+ *
+ * @brief ¥Í¡¼¥ß¥ó¥°¥µ¡¼¥Ó¥¹¤«¤éRTC¤ò¥¤¥ó¥¹¥¿¥ó¥¹Ì¾¤«¤é¸¡º÷¤·¡¢
+ * °ìÃפ¹¤ëRTC¤Î¥ê¥¹¥È¤ò¼èÆÀ¤¹¤ë
+ *
+ * @param context ¸½ºß¸¡º÷Ãæ¤Î¥³¥ó¥Æ¥¥¹¥È
+ * @param name RTC¤Î¥¤¥ó¥¹¥¿¥ó¥¹Ì¾
+ * @param rtcs RTC¤Î¥ê¥¹¥È
+ *
+ * @else
+ *
+ * @brief
+ *
+ * @param context
+ * @param name
+ * @param rtcs
+ *
+ * @endif
+ */
+ RTC::RTCList NamingOnCorba::string_to_component(std::string name)
+ {
+ RTC::RTCList rtc_list;
+
+ coil::vstring tmp = coil::split(name, "://");
+ if (tmp.size() > 1)
+ {
+ if (tmp[0] == "rtcname")
+ {
+ std::string url = tmp[1];
+ coil::vstring r = coil::split(url, "/");
+ if (r.size() > 1)
+ {
+ std::string host = r[0];
+ std::string rtc_name = url.substr(host.size()+1, url.size() - host.size());
+ try
+ {
+ RTC::CorbaNaming *cns = NULL;
+ if (host == "*")
+ {
+ cns = &m_cosnaming;
+ }
+ else
+ {
+ CORBA::ORB_var orb = Manager::instance().getORB();
+ cns = new RTC::CorbaNaming(orb, host.c_str());
+ }
+ coil::vstring names = coil::split(rtc_name, "/");
+
+ if (names.size() == 2 && names[0] == "*")
+ {
+ CosNaming::NamingContext_ptr root_cxt = cns->getRootContext();
+ getComponentByName(root_cxt, names[1], rtc_list);
+ return rtc_list;
+ }
+ else
+ {
+ rtc_name += ".rtc";
+ CORBA::Object_ptr obj = cns->resolveStr(rtc_name.c_str());
+ if (CORBA::is_nil(obj))
+ {
+ return rtc_list;
+ }
+ CORBA_SeqUtil::push_back(rtc_list, RTC::RTObject::_narrow(obj));
+ return rtc_list;
+ }
+ if (cns != &m_cosnaming)
+ {
+ delete cns;
+ }
+ }
+ catch (...)
+ {
+ return rtc_list;
+ }
+ }
+ }
+ }
+ return rtc_list;
+ }
+
+
+
+ /*!
+ * @if jp
+ * @brief ¥³¥ó¥¹¥È¥é¥¯¥¿
+ * @else
+ * @brief Constructor
+ * @endif
+ */
+ NamingOnManager::NamingOnManager(CORBA::ORB_ptr orb, Manager* mgr)
+ : m_orb(orb), m_mgr(mgr)
+ {
+ }
+ /*!
+ * @if jp
+ * @brief »ØÄꤷ¤¿ CORBA ¥ª¥Ö¥¸¥§¥¯¥È¤ÎNamingService¤Ø¥Ð¥¤¥ó¥É
+ * @else
+ * @brief Bind the specified CORBA objects to NamingService
+ * @endif
+ */
+ void NamingOnManager::bindObject(const char* name,
+ const RTObject_impl* rtobj)
+ {
+ RTC_TRACE(("bindObject(name = %s, rtobj)", name));
+ return;
+ }
+
+ void NamingOnManager::bindObject(const char* name,
+ const PortBase* port)
+ {
+ RTC_TRACE(("bindObject(name = %s, rtobj)", name));
+ return;
+ }
+
+ void NamingOnManager::bindObject(const char* name,
+ const RTM::ManagerServant* mgr)
+ {
+ RTC_TRACE(("bindObject(name = %s, mgr)", name));
+ return;
+ }
+
+ /*!
+ * @if jp
+ * @brief »ØÄꤷ¤¿ CORBA ¥ª¥Ö¥¸¥§¥¯¥È¤òNamingService¤«¤é¥¢¥ó¥Ð¥¤¥ó¥É
+ * @else
+ * @brief Unbind the specified CORBA object from NamingService
+ * @endif
+ */
+ void NamingOnManager::unbindObject(const char* name)
+ {
+ RTC_TRACE(("unbindObject(name = %s)", name));
+ return;
+ }
+
+ bool NamingOnManager::isAlive()
+ {
+ RTC_TRACE(("isAlive()"));
+ return true;
+ }
+
+ /*!
+ * @if jp
+ *
+ * @brief rtcname·Á¼°¤ÇRTC¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤ò¼èÆÀ¤¹¤ë
+ *
+ * @param name rtcloc·Á¼°¤Ç¤ÎRTC̾
+ * rtcloc://localhost:2809/example/ConsoleIn
+ * @return RTC¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤Î¥ê¥¹¥È
+ *
+ * @else
+ *
+ * @brief
+ *
+ * @param name
+ * @return
+ *
+ * @endif
+ */
+ RTC::RTCList NamingOnManager::string_to_component(std::string name)
+ {
+ RTC::RTCList rtc_list;
+ coil::vstring tmp = coil::split(name, "://");
+ if (tmp.size() > 1)
+ {
+ if (tmp[0] == "rtcloc")
+ {
+ std::string url = tmp[1];
+ coil::vstring r = coil::split(url, "/");
+
+ if (r.size() > 1)
+ {
+ std::string host = r[0];
+ std::string rtc_name = url.substr(host.size()+1, url.size() - host.size());
+
+ RTM::Manager_ptr mgr = getManager(host);
+
+ if (!CORBA::is_nil(mgr))
+ {
+
+ rtc_list = (*mgr->get_components_by_name(rtc_name.c_str()));
+ RTM::ManagerList* slaves = mgr->get_slave_managers();
+ for (int i = 0; i < slaves->length(); i++)
+ {
+
+ try
+ {
+ RTC::RTCList slave_rtcs = (*(*slaves)[i]->get_components_by_name(rtc_name.c_str()));
+ CORBA_SeqUtil::push_back_list(rtc_list, slave_rtcs);
+ }
+ catch (...)
+ {
+ //RTC_DEBUG((""));
+ mgr->remove_slave_manager((*slaves)[i]);
+ }
+ }
+ }
+ return rtc_list;
+ }
+ }
+ }
+ return rtc_list;
+ }
+
+
+ /*!
+ * @if jp
+ *
+ * @brief »ØÄê¥Û¥¹¥È̾¡¢¥Ý¡¼¥È̾¤ÇManager¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤ò¼èÆÀ
+ *
+ * @param name ¥Û¥¹¥È̾¡¢¥Ý¡¼¥È̾
+ *
+ * @return Manager¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹
+ *
+ * @else
+ *
+ * @brief
+ *
+ * @param name
+ * @return
+ *
+ * @endif
+ */
+ RTM::Manager_ptr NamingOnManager::getManager(std::string name)
+ {
+
+ if (name == "*")
+ {
+ RTM::Manager_ptr mgr;
+ RTM::ManagerServant& mgr_sev = m_mgr->getManagerServant();
+ if (mgr_sev.is_master())
+ {
+ mgr = mgr_sev.getObjRef();
+
+ }
+ else
+ {
+ RTM::ManagerList* masters = mgr_sev.get_master_managers();
+
+ if (masters->length() > 0)
+ {
+ mgr = (*masters)[0];
+ }
+ else
+ {
+ mgr = mgr_sev.getObjRef();
+ }
+ }
+ return mgr;
+ }
+
+
+
+
+ try
+ {
+ std::string mgrloc = "corbaloc:iiop:";
+ coil::Properties prop = m_mgr->getConfig();
+ std::string manager_name = prop.getProperty("manager.name");
+ mgrloc += name;
+ mgrloc += "/" + manager_name;
+
+ CORBA::Object_ptr mobj = m_orb->string_to_object(mgrloc.c_str());
+ RTM::Manager_ptr mgr = RTM::Manager::_narrow(mobj);
+
+ RTC_DEBUG(("corbaloc: %s", mgrloc));
+
+ return mgr;
+ }
+ catch (CORBA::SystemException& ex)
+ {
+
+ }
+ catch (...)
+ {
+ RTC_ERROR(("Unknown exception cought."));
+
+ }
+ return RTM::Manager::_nil();
+
+
+ }
+
+
+
//============================================================
// NamingManager
@@ -449,6 +794,7 @@
RTC_TRACE(("createNamingObj(method = %s, nameserver = %s",
method, name_server));
std::string m(method);
+
if (m == "corba")
{
try
@@ -468,6 +814,13 @@
return NULL;
}
}
+ else if (m == "manager")
+ {
+ NamingBase* name;
+ CORBA::ORB_var orb = m_manager->getORB();
+ name = new NamingOnManager(orb.in(), m_manager);
+ return name;
+ }
return NULL;
}
@@ -614,4 +967,42 @@
}
}
}
+ /*!
+ * @if jp
+ *
+ * @brief rtcloc·Á¼°¤ÇRTC¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤ò¼èÆÀ
+ *
+ *
+ *
+ * @param name rtcloc·Á¼°¤Ç¤ÎRTC̾
+ * rtcloc://localhost:2809/example/ConsoleIn
+ * @return RTC¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤Î¥ê¥¹¥È
+ *
+ * @else
+ *
+ * @brief
+ * registerMgrName
+ * @param name
+ *
+ * @return
+ *
+ *
+ * @endif
+ */
+ RTCList NamingManager::string_to_component(std::string name)
+ {
+
+ for (std::vector<NamingService*>::iterator itr = m_names.begin(); itr != m_names.end(); ++itr) {
+ if ((*itr)->ns != 0)
+ {
+ RTCList comps = (*itr)->ns->string_to_component(name);
+ if (comps.length() > 0)
+ {
+ return comps;
+ }
+ }
+ }
+
+ return RTCList();
+ }
}; // namespace RTC
Modified: branches/RELENG_1_2/OpenRTM-aist/src/lib/rtm/NamingManager.h
===================================================================
--- branches/RELENG_1_2/OpenRTM-aist/src/lib/rtm/NamingManager.h 2018-01-17 00:56:38 UTC (rev 3158)
+++ branches/RELENG_1_2/OpenRTM-aist/src/lib/rtm/NamingManager.h 2018-01-17 01:06:34 UTC (rev 3159)
@@ -109,8 +109,8 @@
*
* @endif
*/
+ virtual void bindObject(const char* name, const PortBase* port) = 0;
virtual void bindObject(const char* name, const RTObject_impl* rtobj) = 0;
- virtual void bindObject(const char* name, const PortBase* port) = 0;
/*!
* @if jp
@@ -130,6 +130,8 @@
*
* @endif
*/
+
+
virtual void bindObject(const char* name,
const RTM::ManagerServant* mgr) = 0;
@@ -168,6 +170,24 @@
* @endif
*/
virtual bool isAlive() = 0;
+ /*!
+ * @if jp
+ *
+ * @brief rtcloc·Á¼°¤ÇRTC¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤ò¼èÆÀ¤¹¤ë
+ *
+ * @param name RTC̾
+ * @return RTC¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤Î¥ê¥¹¥È
+ *
+ * @else
+ *
+ * @brief
+ *
+ * @param name
+ * @return
+ *
+ * @endif
+ */
+ virtual RTC::RTCList string_to_component(std::string name) = 0;
};
/*!
@@ -345,6 +365,45 @@
* @endif
*/
virtual bool isAlive();
+ /*!
+ * @if jp
+ *
+ * @brief ¥Í¡¼¥ß¥ó¥°¥µ¡¼¥Ó¥¹¤«¤éRTC¤ò¥¤¥ó¥¹¥¿¥ó¥¹Ì¾¤«¤é¸¡º÷¤·¡¢
+ * °ìÃפ¹¤ëRTC¤Î¥ê¥¹¥È¤ò¼èÆÀ¤¹¤ë
+ *
+ * @param context ¸½ºß¸¡º÷Ãæ¤Î¥³¥ó¥Æ¥¥¹¥È
+ * @param name RTC¤Î¥¤¥ó¥¹¥¿¥ó¥¹Ì¾
+ * @param rtcs RTC¤Î¥ê¥¹¥È
+ *
+ * @else
+ *
+ * @brief
+ *
+ * @param context
+ * @param name
+ * @param rtcs
+ *
+ * @endif
+ */
+ void getComponentByName(CosNaming::NamingContext_ptr context, std::string name, RTC::RTCList& rtcs);
+ /*!
+ * @if jp
+ *
+ * @brief rtcname·Á¼°¤ÇRTC¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤ò¼èÆÀ¤¹¤ë
+ *
+ * @param name RTC̾
+ * @return RTC¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤Î¥ê¥¹¥È
+ *
+ * @else
+ *
+ * @brief
+ *
+ * @param name
+ * @return
+ *
+ * @endif
+ */
+ virtual RTC::RTCList string_to_component(std::string name);
CorbaNaming& getCorbaNaming() { return m_cosnaming; }
private:
@@ -354,6 +413,193 @@
bool m_replaceEndpoint;
// std::map<std::string, RTObject_impl*> m_names;
};
+
+
+
+ /*!
+ * @if jp
+ *
+ * @class NamingOnManager
+ * @brief Manager ÍÑ NamingServer ´ÉÍý¥¯¥é¥¹
+ *
+ * @since 1.2.0
+ *
+ * @else
+ *
+ * @class NamingOnManager
+ * @brief
+ *
+ *
+ * @since 1.2.0
+ *
+ * @endif
+ */
+ class NamingOnManager
+ : public virtual NamingBase
+ {
+ public:
+ /*!
+ * @if jp
+ *
+ * @brief ¥³¥ó¥¹¥È¥é¥¯¥¿
+ *
+ *
+ * @param orb ORB
+ * @param mgr ¥Þ¥Í¡¼¥¸¥ã
+ *
+ * @else
+ *
+ * @brief Constructor
+ *
+ *
+ *
+ * @param orb ORB
+ * @param mgr
+ *
+ * @endif
+ */
+ NamingOnManager(CORBA::ORB_ptr orb, Manager* mgr);
+
+ /*!
+ * @if jp
+ *
+ * @brief ¥Ç¥¹¥È¥é¥¯¥¿
+ *
+ * @else
+ *
+ * @brief Destructor
+ *
+ * @endif
+ */
+ virtual ~NamingOnManager(void){};
+
+ /*!
+ * @if jp
+ *
+ * @brief »ØÄꤷ¤¿ CORBA ¥ª¥Ö¥¸¥§¥¯¥È¤ÎNamingService¤Ø¥Ð¥¤¥ó¥É
+ *
+ * »ØÄꤷ¤¿ CORBA ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ØÄꤷ¤¿Ì¾¾Î¤Ç CORBA NamingService ¤Ø
+ * ¥Ð¥¤¥ó¥É¤¹¤ë¡£
+ *
+ * @param name ¥Ð¥¤¥ó¥É»þ¤Î̾¾Î
+ * @param rtobj ¥Ð¥¤¥ó¥ÉÂоݥª¥Ö¥¸¥§¥¯¥È
+ *
+ * @else
+ *
+ * @brief Bind the specified CORBA objects to NamingService
+ *
+ * Bind the specified CORBA objects to CORBA NamingService
+ * by specified names.
+ *
+ * @param name Names at the binding
+ * @param rtobj The target objects for the binding
+ *
+ * @endif
+ */
+ virtual void bindObject(const char* name, const RTObject_impl* rtobj);
+ virtual void bindObject(const char* name, const PortBase* port);
+
+ /*!
+ * @if jp
+ *
+ * @brief
+ *
+ * @param name ¥Ð¥¤¥ó¥É»þ¤Î̾¾Î
+ * @param rtobj ¥Ð¥¤¥ó¥ÉÂоÝManagerServant
+ *
+ * @else
+ *
+ * @brief Bind the specified ManagerServants to NamingService
+ *
+ * @param name Names at the binding
+ * @param mgr The target ManagerServants for the binding
+ *
+ * @endif
+ */
+ virtual void bindObject(const char* name, const RTM::ManagerServant* mgr);
+
+ /*!
+ * @if jp
+ *
+ * @brief
+ *
+ *
+ *
+ * @param name ¥¢¥ó¥Ð¥¤¥ó¥ÉÂоݥª¥Ö¥¸¥§¥¯¥È
+ *
+ * @else
+ *
+ * @brief Unbind the specified CORBA objects from NamingService
+ *
+ * Unbind the specified CORBA objects from CORBA NamingService.
+ *
+ * @param name The target objects for the unbinding
+ *
+ * @endif
+ */
+ virtual void unbindObject(const char* name);
+
+ /*!
+ * @if jp
+ *
+ * @brief
+ *
+ * @return true:À¸Â¸¤·¤Æ¤¤¤ë, false:À¸Â¸¤·¤Æ¤¤¤Ê¤¤
+ *
+ * @else
+ *
+ * @brief Check if the name service is alive
+ *
+ * @return true: alive, false:non not alive
+ *
+ * @endif
+ */
+ virtual bool isAlive();
+ /*!
+ * @if jp
+ *
+ * @brief rtcname·Á¼°¤ÇRTC¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤ò¼èÆÀ¤¹¤ë
+ *
+ * @param name rtcloc·Á¼°¤Ç¤ÎRTC̾
+ * rtcloc://localhost:2809/example/ConsoleIn
+ * @return RTC¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤Î¥ê¥¹¥È
+ *
+ * @else
+ *
+ * @brief
+ *
+ * @param name
+ * @return
+ *
+ * @endif
+ */
+ RTC::RTCList string_to_component(std::string name);
+ /*!
+ * @if jp
+ *
+ * @brief »ØÄê¥Û¥¹¥È̾¡¢¥Ý¡¼¥È̾¤ÇManager¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤ò¼èÆÀ
+ *
+ * @param name ¥Û¥¹¥È̾¡¢¥Ý¡¼¥È̾
+ *
+ * @return Manager¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹
+ *
+ * @else
+ *
+ * @brief
+ *
+ * @param name
+ * @return
+ *
+ * @endif
+ */
+ RTM::Manager_ptr getManager(std::string name);
+
+ private:
+ Logger rtclog;
+ CORBA::ORB_ptr m_orb;
+ Manager* m_mgr;
+ // std::map<std::string, RTObject_impl*> m_names;
+ };
/*!
* @if jp
@@ -464,8 +710,8 @@
*
* @endif
*/
+ void bindObject(const char* name, const PortBase* port);
void bindObject(const char* name, const RTObject_impl* rtobj);
- void bindObject(const char* name, const PortBase* port);
/*!
* @if jp
@@ -569,6 +815,30 @@
*/
std::vector<RTObject_impl*> getObjects();
std::vector<NamingService*>& getNameServices() { return m_names; }
+
+ /*!
+ * @if jp
+ *
+ * @brief rtcloc·Á¼°¤ÇRTC¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤ò¼èÆÀ
+ *
+ *
+ *
+ * @param name rtcloc·Á¼°¤Ç¤ÎRTC̾
+ * rtcloc://localhost:2809/example/ConsoleIn
+ * @return RTC¤Î¥ª¥Ö¥¸¥§¥¯¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤Î¥ê¥¹¥È
+ *
+ * @else
+ *
+ * @brief
+ * registerMgrName
+ * @param name
+ *
+ * @return
+ *
+ *
+ * @endif
+ */
+ RTCList string_to_component(std::string name);
protected:
/*!
@@ -754,6 +1024,8 @@
*/
void retryConnection(NamingService* ns);
+
+
protected:
// Name Servers' method/name and object
/*!
More information about the openrtm-commit
mailing list