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

RtcNaming.h

説明を見る。
00001 // -*- C++ -*-
00021 #ifndef RtcNaming_h
00022 #define RtcNaming_h
00023 
00024 // CORBA header include
00025 #include "rtm/idl/RTMBaseStub.h"
00026 #include "rtm/idl/RTMBaseSkel.h"
00027 #include "rtm/RtcBase.h"
00028 
00029 // STL includes
00030 #include <map>
00031 #include <string>
00032 #include <vector>
00033 
00034 #define HOST_CTXT_LEVEL 1
00035 #define MANAGER_CTXT_LEVEL 2
00036 #define MANAGER_LEVEL 3
00037 #define CATEGORY_CTXT_LEVEL 3
00038 #define MODULE_CTXT_LEVEL 4
00039 #define COMPONENT_LEVEL 5
00040 
00041 namespace RTM
00042 {
00043   using namespace std;
00044   
00045   typedef std::vector<CosNaming::NamingContextExt_var> ContextList;
00046   typedef std::vector<CORBA::Object_ptr> ObjectList;
00047 
00048 
00064   class RtcNaming
00065   {
00066   public:
00077     RtcNaming() : m_bindListNum(100) {};
00078         
00089     RtcNaming(CORBA::ORB_ptr orb) : m_bindListNum(100) {initNaming(orb);};
00090         
00101         ~RtcNaming();
00102         
00103         
00118     bool initNaming(const CORBA::ORB_ptr orb);
00119         
00120         
00121     //============================================================
00122     // << Create and Bind Methods >>
00123     //============================================================
00124         
00125         
00148     CosNaming::NamingContextExt_var
00149     createContext(CosNaming::NamingContextExt_var context,
00150                                   const std::string& id, const std::string& kind);
00151         
00152         
00171     bool createHostContext(const std::string& id);
00172         
00173         
00192     bool createManagerContext(const std::string& id);
00193         
00194         
00213     bool createCategoryContext(const std::string& category);
00214         
00215         
00236     bool createModuleContext(const std::string& module,
00237                                                          const std::string& category);
00238         
00239         
00264     bool bindObject(CosNaming::NamingContextExt_var context,
00265                                         const std::string& id, const std::string& kind,
00266                                         CORBA::Object_ptr obj);
00267 
00288         bool bindObjectByFullPath(const std::string& path,
00289                                                           CORBA::Object_ptr obj);
00290         
00313     bool bindComponent(const std::string& component, const std::string& module,
00314                                            const std::string& category, CORBA::Object_ptr obj);
00315         
00336     bool bindManager(const std::string& id, CORBA::Object_ptr obj);
00337         
00338         
00339     //============================================================
00340     // << Destroy and Unbind methods >>
00341     //============================================================
00342         
00343         
00353     bool destroyHostContext();
00354         
00364     bool destroyManagerContext();
00365         
00379     bool destroyCategoryContext(const std::string& id);
00380         
00381         
00397     bool destroyModuleContext(const std::string& module,
00398                                                           const std::string& category);
00399         
00400         
00423     bool unbindObject(CosNaming::NamingContextExt_var context,
00424                                           const std::string& id, const std::string& kind);
00425 
00426 
00427 
00446         bool unbindObjectByFullPath(const std::string& path);
00447 
00448 
00472         bool unbindLocalComponent(const std::string category,
00473                                                           const std::string module,
00474                                                           const std::string instance);
00475         
00476 
00477 
00478     //============================================================
00479     // << Find methods >>
00480     //============================================================
00481         
00497     bool findHostContext(const std::string& id_seq, ContextList& context);
00498         
00499         
00515     bool findCategoryContext(const std::string& id_seq, ContextList& context);
00516         
00517         
00533     bool findModuleContext(const std::string& id_seq, ContextList& context);
00534         
00535         
00551     bool findManagerContext(const std::string& id_seq, ContextList& context);
00552         
00553         
00569     bool findManager(std::string& id, ObjectList& objects);
00570         
00571         
00587     bool findComponents(const std::string& id_seq, ObjectList& objects);
00588         
00589         
00590   protected:
00604     bool destroyRecursive(CosNaming::NamingContextExt_var context);
00605         
00606         
00624     void findObjectsRecursive(CosNaming::NamingContextExt_ptr context,
00625                                                           const std::string& path, ObjectList& obj);
00626         
00644     void findContextRecursive(CosNaming::NamingContextExt_var context,
00645                                                           const std::string& path, ContextList& context_list);
00646         
00647         
00665         void bindObjectRecursive(CosNaming::NamingContextExt_var context,
00666                                                          const std::string& path,
00667                                                          CORBA::Object_ptr obj);
00668         
00669         
00670   private:
00678     int split(const std::string& input, const std::string& delimiter,
00679                           std::vector<std::string>& results);
00680         
00695     std::string makeFullPath(std::string path, int level);
00696         
00714     bool pickupNode(const std::string& path, std::string& node, std::string& remain);
00715         
00734     void nodeToIdKindAny(const std::string& node,
00735                                           std::string& id, std::string& kind);
00736 
00754     void nodeToIdKind(const std::string& node,
00755                                           std::string& id, std::string& kind);
00756         
00757   private:
00758         
00766     CORBA::Object_var m_nameRef;
00767         
00775     CosNaming::NamingContextExt_var m_rootContext;
00776         
00784     CosNaming::NamingContextExt_var m_hostContext;
00785         std::string m_hostName;
00786 
00794     CosNaming::NamingContextExt_var m_mngrContext;
00795         std::string m_mngrName;
00796 
00804     std::map<std::string, CosNaming::NamingContextExt_var> m_cateContext;
00805         
00813     std::map<std::string, std::map<std::string, CosNaming::NamingContextExt_var> > m_compContext;
00814         
00822     int m_bindListNum;
00823         
00831     std::vector<CORBA::Object_ptr> m_vObjects;
00832         
00833   };
00834   
00835 }; // end of namespace RTM
00836 
00837 #endif // end of __RtcNaming_h__

OpenRTMに対してWed Apr 6 14:22:11 2005に生成されました。 doxygen 1.3.6