[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