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

RtcNaming.h

説明を見る。
00001 // -*- C++ -*-
00019 /*
00020  * $Log: RtcNaming.h,v $
00021  * Revision 1.2  2005/05/16 06:29:05  n-ando
00022  * - RtcNaming class was DLL exported for Windows port.
00023  *
00024  * Revision 1.1.1.1  2005/05/12 09:06:18  n-ando
00025  * Public release.
00026  *
00027  *
00028  */
00029 
00030 
00031 #ifndef RtcNaming_h
00032 #define RtcNaming_h
00033 
00034 // CORBA header include
00035 #include "rtm/idl/RTMBaseStub.h"
00036 #include "rtm/idl/RTMBaseSkel.h"
00037 #include "rtm/RtcBase.h"
00038 
00039 // STL includes
00040 #include <map>
00041 #include <string>
00042 #include <vector>
00043 
00044 #define HOST_CTXT_LEVEL 1
00045 #define MANAGER_CTXT_LEVEL 2
00046 #define MANAGER_LEVEL 3
00047 #define CATEGORY_CTXT_LEVEL 3
00048 #define MODULE_CTXT_LEVEL 4
00049 #define COMPONENT_LEVEL 5
00050 
00051 namespace RTM
00052 {
00053   using namespace std;
00054   
00055   typedef std::vector<CosNaming::NamingContextExt_var> ContextList;
00056   typedef std::vector<CORBA::Object_ptr> ObjectList;
00057 
00058 
00074   class EXPORTS RtcNaming
00075   {
00076   public:
00087     RtcNaming() : m_bindListNum(100) {};
00088         
00099     RtcNaming(CORBA::ORB_ptr orb) : m_bindListNum(100) {initNaming(orb);};
00100         
00111         ~RtcNaming();
00112         
00113         
00128     bool initNaming(const CORBA::ORB_ptr orb);
00129         
00130         
00131     //============================================================
00132     // << Create and Bind Methods >>
00133     //============================================================
00134         
00135         
00158     CosNaming::NamingContextExt_var
00159     createContext(CosNaming::NamingContextExt_var context,
00160                                   const std::string& id, const std::string& kind);
00161         
00162         
00181     bool createHostContext(const std::string& id);
00182         
00183         
00202     bool createManagerContext(const std::string& id);
00203         
00204         
00223     bool createCategoryContext(const std::string& category);
00224         
00225         
00246     bool createModuleContext(const std::string& module,
00247                                                          const std::string& category);
00248         
00249         
00274     bool bindObject(CosNaming::NamingContextExt_var context,
00275                                         const std::string& id, const std::string& kind,
00276                                         CORBA::Object_ptr obj);
00277 
00298         bool bindObjectByFullPath(const std::string& path,
00299                                                           CORBA::Object_ptr obj);
00300         
00323     bool bindComponent(const std::string& component, const std::string& module,
00324                                            const std::string& category, CORBA::Object_ptr obj);
00325         
00346     bool bindManager(const std::string& id, CORBA::Object_ptr obj);
00347         
00348         
00349     //============================================================
00350     // << Destroy and Unbind methods >>
00351     //============================================================
00352         
00353         
00363     bool destroyHostContext();
00364         
00374     bool destroyManagerContext();
00375         
00389     bool destroyCategoryContext(const std::string& id);
00390         
00391         
00407     bool destroyModuleContext(const std::string& module,
00408                                                           const std::string& category);
00409         
00410         
00433     bool unbindObject(CosNaming::NamingContextExt_var context,
00434                                           const std::string& id, const std::string& kind);
00435 
00436 
00437 
00456         bool unbindObjectByFullPath(const std::string& path);
00457 
00458 
00482         bool unbindLocalComponent(const std::string category,
00483                                                           const std::string module,
00484                                                           const std::string instance);
00485         
00486 
00487 
00488     //============================================================
00489     // << Find methods >>
00490     //============================================================
00491         
00507     bool findHostContext(const std::string& id_seq, ContextList& context);
00508         
00509         
00525     bool findCategoryContext(const std::string& id_seq, ContextList& context);
00526         
00527         
00543     bool findModuleContext(const std::string& id_seq, ContextList& context);
00544         
00545         
00561     bool findManagerContext(const std::string& id_seq, ContextList& context);
00562         
00563         
00579     bool findManager(std::string& id, ObjectList& objects);
00580         
00581         
00597     bool findComponents(const std::string& id_seq, ObjectList& objects);
00598         
00599         
00600   protected:
00614     bool destroyRecursive(CosNaming::NamingContextExt_var context);
00615         
00616         
00634     void findObjectsRecursive(CosNaming::NamingContextExt_ptr context,
00635                                                           const std::string& path, ObjectList& obj);
00636         
00654     void findContextRecursive(CosNaming::NamingContextExt_var context,
00655                                                           const std::string& path, ContextList& context_list);
00656         
00657         
00675         void bindObjectRecursive(CosNaming::NamingContextExt_var context,
00676                                                          const std::string& path,
00677                                                          CORBA::Object_ptr obj);
00678         
00679         
00680   private:
00688     int split(const std::string& input, const std::string& delimiter,
00689                           std::vector<std::string>& results);
00690         
00705     std::string makeFullPath(std::string path, int level);
00706         
00724     bool pickupNode(const std::string& path, std::string& node, std::string& remain);
00725         
00744     void nodeToIdKindAny(const std::string& node,
00745                                           std::string& id, std::string& kind);
00746 
00764     void nodeToIdKind(const std::string& node,
00765                                           std::string& id, std::string& kind);
00766         
00767   private:
00768         
00776     CORBA::Object_var m_nameRef;
00777         
00785     CosNaming::NamingContextExt_var m_rootContext;
00786         
00794     CosNaming::NamingContextExt_var m_hostContext;
00795         std::string m_hostName;
00796 
00804     CosNaming::NamingContextExt_var m_mngrContext;
00805         std::string m_mngrName;
00806 
00814     std::map<std::string, CosNaming::NamingContextExt_var> m_cateContext;
00815         
00823     std::map<std::string, std::map<std::string, CosNaming::NamingContextExt_var> > m_compContext;
00824         
00832     int m_bindListNum;
00833         
00841     std::vector<CORBA::Object_ptr> m_vObjects;
00842         
00843   };
00844   
00845 }; // end of namespace RTM
00846 
00847 #endif // end of __RtcNaming_h__

OpenRTMに対してFri Sep 9 14:43:40 2005に生成されました。 doxygen 1.3.6