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

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   
00063   class RtcNaming
00064   {
00065   public:
00076     RtcNaming() : m_bindListNum(100) {};
00077         
00088     RtcNaming(CORBA::ORB_ptr orb) : m_bindListNum(100) {initNaming(orb);};
00089         
00100         ~RtcNaming();
00101         
00102         
00117     bool initNaming(const CORBA::ORB_ptr orb);
00118         
00119         
00120     //============================================================
00121     // << Create and Bind Methods >>
00122     //============================================================
00123         
00124         
00147     CosNaming::NamingContextExt_var
00148     createContext(CosNaming::NamingContextExt_var context,
00149                                   const std::string& id, const std::string& kind);
00150         
00151         
00170     bool createHostContext(const std::string& id);
00171         
00172         
00191     bool createManagerContext(const std::string& id);
00192         
00193         
00212     bool createCategoryContext(const std::string& category);
00213         
00214         
00235     bool createModuleContext(const std::string& module,
00236                                                          const std::string& category);
00237         
00238         
00263     bool bindObject(CosNaming::NamingContextExt_var context,
00264                                         const std::string& id, const std::string& kind,
00265                                         CORBA::Object_ptr obj);
00266 
00287         bool bindObjectByFullPath(const std::string& path,
00288                                                           CORBA::Object_ptr obj);
00289         
00312     bool bindComponent(const std::string& component, const std::string& module,
00313                                            const std::string& category, CORBA::Object_ptr obj);
00314         
00335     bool bindManager(const std::string& id, CORBA::Object_ptr obj);
00336         
00337         
00338     //============================================================
00339     // << Destroy and Unbind methods >>
00340     //============================================================
00341         
00342         
00352     bool destroyHostContext();
00353         
00363     bool destroyManagerContext();
00364         
00378     bool destroyCategoryContext(const std::string& id);
00379         
00380         
00396     bool destroyModuleContext(const std::string& module,
00397                                                           const std::string& category);
00398         
00399         
00400         
00401     //============================================================
00402     // << Find methods >>
00403     //============================================================
00404         
00420     bool findHostContext(const std::string& id_seq, ContextList& context);
00421         
00422         
00438     bool findCategoryContext(const std::string& id_seq, ContextList& context);
00439         
00440         
00456     bool findModuleContext(const std::string& id_seq, ContextList& context);
00457         
00458         
00474     bool findManagerContext(const std::string& id_seq, ContextList& context);
00475         
00476         
00492     bool findManager(std::string& id, ObjectList& objects);
00493         
00494         
00510     bool findComponents(const std::string& id_seq, ObjectList& objects);
00511         
00512         
00513   protected:
00527     bool destroyRecursive(CosNaming::NamingContextExt_var context);
00528         
00529         
00547     void findObjectsRecursive(CosNaming::NamingContextExt_ptr context,
00548                                                           const std::string& path, ObjectList& obj);
00549         
00567     void findContextRecursive(CosNaming::NamingContextExt_var context,
00568                                                           const std::string& path, ContextList& context_list);
00569         
00570         
00588         void bindObjectRecursive(CosNaming::NamingContextExt_var context,
00589                                                          const std::string& path,
00590                                                          CORBA::Object_ptr obj);
00591         
00592         
00593   private:
00601     int split(const std::string& input, const std::string& delimiter,
00602                           std::vector<std::string>& results);
00603         
00618     std::string makeFullPath(std::string path, int level);
00619         
00637     bool pickupNode(const std::string& path, std::string& node, std::string& remain);
00638         
00657     void nodeToIdKindAny(const std::string& node,
00658                                           std::string& id, std::string& kind);
00659 
00677     void nodeToIdKind(const std::string& node,
00678                                           std::string& id, std::string& kind);
00679         
00680   private:
00681         
00689     CORBA::Object_var m_nameRef;
00690         
00698     CosNaming::NamingContextExt_var m_rootContext;
00699         
00707     CosNaming::NamingContextExt_var m_hostContext;
00708         
00716     CosNaming::NamingContextExt_var m_mngrContext;
00717         
00725     std::map<std::string, CosNaming::NamingContextExt_var> m_cateContext;
00726         
00734     std::map<std::string, std::map<std::string, CosNaming::NamingContextExt_var> > m_compContext;
00735         
00743     int m_bindListNum;
00744         
00752     std::vector<CORBA::Object_ptr> m_vObjects;
00753         
00754   };
00755   
00756 }; // end of namespace RTM
00757 
00758 #endif // end of __RtcNaming_h__

OpenRTMに対してThu Dec 16 15:29:06 2004に生成されました。 doxygen 1.3.6