メインページ | ネームスペース一覧 | クラス階層 | 構成 | Directories | ファイル一覧 | ネームスペースメンバ | 構成メンバ | ファイルメンバ

NamingManager.h

説明を見る。
00001 // -*- C++ -*-
00019 /*
00020  * $Log: NamingManager.h,v $
00021  * Revision 1.1  2006/11/04 21:11:44  n-ando
00022  * NamingManager was introduced to support multiple name server.
00023  *
00024  */
00025 #ifndef NamingManager_h
00026 #define NamingManager_h
00027 
00028 #include <rtm/CorbaNaming.h>
00029 #include <rtm/RTObject.h>
00030 
00031 
00032 namespace RTC
00033 {
00034   class NamingBase
00035   {
00036   public:
00037     NamingBase() {};
00038     virtual ~NamingBase() {};
00039     virtual void bindObject(const char* name, const RTObject_impl* rtobj) = 0;
00040     virtual void unbindObject(const char* name) = 0;
00041   };
00042 
00043 
00044  
00045   class NamingOnCorba
00046     : public virtual NamingBase
00047   {
00048   public:
00049     NamingOnCorba(CORBA::ORB_ptr orb, const char* names)
00050       : m_cosnaming(orb, names)
00051     {};
00052     virtual ~NamingOnCorba(){};
00053 
00054     virtual void bindObject(const char* name, const RTObject_impl* rtobj);
00055 
00056     virtual void unbindObject(const char* name);
00057 
00058   private:
00059     CorbaNaming m_cosnaming;
00060   };
00061 
00062   class NamingManager
00063   {
00064   public:
00065     NamingManager(){};
00066     NamingManager(Properties& prop){};
00067     ~NamingManager(){};
00068 
00069     void registerNaming(NamingBase* names);
00070 
00071     void bindObject(const char* name, const RTObject_impl* rtobj);
00072     void unbindObject(const char* name);
00073 
00074   protected:
00075     std::vector<NamingBase*> m_namings;
00076 
00077     struct binder
00078     {
00079       binder(const char* name, const RTObject_impl* rtobj)
00080         : m_name(name), m_obj(rtobj) {};
00081       void operator()(NamingBase* naming)
00082       {
00083         naming->bindObject(m_name, m_obj);
00084       }
00085       const char* m_name;
00086       const RTObject_impl* m_obj;
00087     };
00088 
00089     struct unbinder
00090     {
00091       unbinder(const char* name) : m_name(name) {};
00092       void operator()(NamingBase* naming)
00093       {
00094         naming->unbindObject(m_name);
00095       }
00096       const char* m_name;
00097     };
00098     
00099   }; // class NamingManager
00100 
00101 
00102 
00103 }; // namespace RTC
00104 
00105 #endif // NamingManager_h

OpenRTMに対してMon Jan 15 12:14:44 2007に生成されました。  doxygen 1.4.1