OpenRTM-aist  2.1.0
CorbaNaming.h
[詳解]
1 // -*- C++ -*-
20 #ifndef RTC_CORBANAMING_H
21 #define RTC_CORBANAMING_H
22 
23 #include <rtm/RTC.h>
24 
25 // STL includes
26 #include <map>
27 #include <string>
28 #include <vector>
29 
45 namespace RTC
46 {
86  {
87  public:
103  explicit CorbaNaming(CORBA::ORB_ptr orb);
104 
122  CorbaNaming(CORBA::ORB_ptr orb, const char* name_server);
123 
135  virtual ~CorbaNaming();
136 
156  void init(const char* name_server);
157 
158  bool isAlive();
159 
160  using SystemException = CORBA::SystemException;
161  using NotFound = CosNaming::NamingContext::NotFound;
162  using CannotProceed = CosNaming::NamingContext::CannotProceed;
163  using InvalidName = CosNaming::NamingContext::InvalidName;
164  using AlreadyBound = CosNaming::NamingContext::AlreadyBound;
165  using NotEmpty = CosNaming::NamingContext::NotEmpty;
166  using InvalidAddress = CosNaming::NamingContextExt::InvalidAddress;
167  using ObjectList = std::vector<CORBA::Object_ptr>;
168 
251  void bind(const CosNaming::Name& name, CORBA::Object_ptr obj,
252  bool force = true);
253 
292  void bindByString(const char* string_name, CORBA::Object_ptr obj,
293  bool force = true);
294 
355  void bindRecursive(CosNaming::NamingContext_ptr context,
356  const CosNaming::Name& name,
357  CORBA::Object_ptr obj);
358 
396  void rebind(const CosNaming::Name& name, CORBA::Object_ptr obj,
397  bool force = true);
398 
435  void rebindByString(const char* string_name, CORBA::Object_ptr obj,
436  bool force = true);
437 
475  static void rebindRecursive(CosNaming::NamingContext_ptr context,
476  const CosNaming::Name& name,
477  CORBA::Object_ptr obj);
478 
515  void bindContext(const CosNaming::Name& name,
516  CosNaming::NamingContext_ptr name_cxt,
517  bool force = true);
518 
556  void bindContext(const char* string_name,
557  CosNaming::NamingContext_ptr name_cxt,
558  bool force = true);
559 
585  void bindContextRecursive(CosNaming::NamingContext_ptr context,
586  const CosNaming::Name& name,
587  CosNaming::NamingContext_ptr name_cxt);
588 
627  void rebindContext(const CosNaming::Name& name,
628  CosNaming::NamingContext_ptr name_cxt,
629  bool force = true);
630 
669  void rebindContext(const char* string_name,
670  CosNaming::NamingContext_ptr name_cxt,
671  bool force = true);
672 
698  static void rebindContextRecursive(CosNaming::NamingContext_ptr context,
699  const CosNaming::Name& name,
700  CosNaming::NamingContext_ptr name_cxt);
701 
743  CORBA::Object_ptr resolve(const CosNaming::Name& name);
744 
787  CORBA::Object_ptr resolve(const char* string_name);
788 
826  void unbind(const CosNaming::Name& name);
827 
870  void unbind(const char* string_name);
871 
893  CosNaming::NamingContext_ptr newContext();
894 
934  CosNaming::NamingContext_ptr
935  bindNewContext(const CosNaming::Name& name, bool force = true);
936 
977  CosNaming::NamingContext_ptr
978  bindNewContext(const char* string_name, bool force = true);
979 
1007  static void destroy(CosNaming::NamingContext_ptr context);
1008 
1040  void destroyRecursive(CosNaming::NamingContext_ptr context);
1041 
1055  void clearAll();
1056 
1080  static void list(CosNaming::NamingContext_ptr name_cxt,
1081  CORBA::ULong how_many,
1082  CosNaming::BindingList_var& bl,
1083  CosNaming::BindingIterator_var& bi);
1120  void list(const char* string_name,
1121  CosNaming::BindingList_var& bl);
1122 
1169  void listByKind(const char* string_name,
1170  const char* string_kind,
1171  CosNaming::BindingList_var& bl);
1172 
1173  //============================================================
1174  // interface of NamingContextExt
1175  //============================================================
1201  static char* toString(const CosNaming::Name& name);
1202 
1228  static CosNaming::Name toName(const char* sname);
1229 
1259  char* toUrl(char* addr, char* string_name);
1260 
1292  CORBA::Object_ptr resolveStr(const char* string_name);
1293 
1294  //============================================================
1295  // Find functions
1296  //============================================================
1297 
1298  // ObjectList find(const char* name, const char* kind);
1299  // ObjectList findById(const char* name, const char* kind);
1300  // ObjectList findByKind(const char* name, const char* kind);
1301 
1334  static CORBA::Object_ptr bindOrResolve(CosNaming::NamingContext_ptr context,
1335  const CosNaming::Name& name,
1336  CORBA::Object_ptr obj);
1337 
1371  static CosNaming::NamingContext_ptr
1372  bindOrResolveContext(CosNaming::NamingContext_ptr context,
1373  const CosNaming::Name& name,
1374  CosNaming::NamingContext_ptr new_context);
1375 
1406  CosNaming::NamingContext_ptr
1407  bindOrResolveContext(CosNaming::NamingContext_ptr context,
1408  const CosNaming::Name& name);
1409 
1427  const char* getNameServer();
1428 
1446  CosNaming::NamingContext_ptr getRootContext();
1447 
1469  static bool isNamingContext(CORBA::Object_ptr obj);
1470 
1492  bool isNamingContext(const CosNaming::Name& name);
1493 
1515  bool isNamingContext(const char* string_name);
1516 
1546  static CosNaming::Name subName(const CosNaming::Name& name,
1547  CORBA::Long begin,
1548  CORBA::Long end = -1);
1549 
1550  protected:
1583  static void nameToString(const CosNaming::Name& name, char* string_name,
1584  CORBA::ULong slen);
1613  static CORBA::ULong getNameLength(const CosNaming::Name& name);
1614 
1640  static unsigned int split(const std::string& input,
1641  const std::string& delimiter,
1642  std::vector<std::string>& results);
1643 
1651  CORBA::ORB_ptr m_ptrORB;
1652 
1660  std::string m_nameServer;
1668  CosNaming::NamingContextExt_var m_rootContext;
1669 
1670  private:
1671  CORBA::ULong m_blLength;
1672 
1673  }; // class CorbaNaming
1674 } // namespace RTC
1675 
1676 #endif // end of RTC_CORBANAMING_H
RTComponent header
CORBA Naming Service ヘルパークラス
Definition: CorbaNaming.h:86
CORBA::Object_ptr resolveStr(const char *string_name)
与えられた文字列表現を resolve しオブジェクトを返す
void rebindByString(const char *string_name, CORBA::Object_ptr obj, bool force=true)
Object を rebind する
char * toUrl(char *addr, char *string_name)
与えられた addre と string_name から URL表現を取得する
CorbaNaming(CORBA::ORB_ptr orb)
コンストラクタ
void rebindContext(const char *string_name, CosNaming::NamingContext_ptr name_cxt, bool force=true)
NamingContext を rebind する
CosNaming::NamingContext::CannotProceed CannotProceed
Definition: CorbaNaming.h:162
CosNaming::NamingContext::InvalidName InvalidName
Definition: CorbaNaming.h:163
static char * toString(const CosNaming::Name &name)
与えられた NameComponent の文字列表現を返す
bool isNamingContext(const char *string_name)
与えられた名前がネーミングコンテキストかどうか
static bool isNamingContext(CORBA::Object_ptr obj)
オブジェクトがネーミングコンテキストか判別する
static CosNaming::Name subName(const CosNaming::Name &name, CORBA::Long begin, CORBA::Long end=-1)
ネームコンポーネントの部分を返す
static void list(CosNaming::NamingContext_ptr name_cxt, CORBA::ULong how_many, CosNaming::BindingList_var &bl, CosNaming::BindingIterator_var &bi)
与えられた NamingContext の Binding を取得する
CORBA::ORB_ptr m_ptrORB
ORB
Definition: CorbaNaming.h:1651
static void rebindRecursive(CosNaming::NamingContext_ptr context, const CosNaming::Name &name, CORBA::Object_ptr obj)
途中のコンテキストを bind しながら Object を rebind する
CosNaming::NamingContextExt_var m_rootContext
指定したネームサーバのルートコンテキスト
Definition: CorbaNaming.h:1668
CosNaming::NamingContext::NotEmpty NotEmpty
Definition: CorbaNaming.h:165
void unbind(const CosNaming::Name &name)
与えられた NameComponent のバインディングを削除する
bool isNamingContext(const CosNaming::Name &name)
与えられた名前がネーミングコンテキストかどうか
virtual ~CorbaNaming()
仮想デストラクタ
void bindRecursive(CosNaming::NamingContext_ptr context, const CosNaming::Name &name, CORBA::Object_ptr obj)
途中のコンテキストを再帰的に bind しながら Object を bind する
void bindByString(const char *string_name, CORBA::Object_ptr obj, bool force=true)
Object を bind する
std::string m_nameServer
ネームサーバ名称
Definition: CorbaNaming.h:1660
CosNaming::NamingContext_ptr bindOrResolveContext(CosNaming::NamingContext_ptr context, const CosNaming::Name &name)
名前をバインドまたは解決する
void rebindContext(const CosNaming::Name &name, CosNaming::NamingContext_ptr name_cxt, bool force=true)
NamingContext を rebind する
CORBA::Object_ptr resolve(const char *string_name)
与えられた NameComponent にバインドされている Object を返す
static CosNaming::Name toName(const char *sname)
与えられた文字列表現を NameComponent に分解する
CosNaming::NamingContext::AlreadyBound AlreadyBound
Definition: CorbaNaming.h:164
void clearAll()
すべての Binding を削除する
void listByKind(const char *string_name, const char *string_kind, CosNaming::BindingList_var &bl)
与えられたパス以下の指定されたkindのバインディングを取得する
CosNaming::NamingContext_ptr bindNewContext(const char *string_name, bool force=true)
新しいコンテキストを bind する
void rebind(const CosNaming::Name &name, CORBA::Object_ptr obj, bool force=true)
Object を rebind する
CosNaming::NamingContext_ptr bindNewContext(const CosNaming::Name &name, bool force=true)
新しいコンテキストを bind する
CORBA::SystemException SystemException
Definition: CorbaNaming.h:160
void unbind(const char *string_name)
与えられた NameComponent のバインディングを削除する
void destroyRecursive(CosNaming::NamingContext_ptr context)
NamingContext を再帰的に下って非アクティブ化する
CosNaming::NamingContext_ptr newContext()
新しいコンテキストを生成する
static unsigned int split(const std::string &input, const std::string &delimiter, std::vector< std::string > &results)
文字列の分割
void list(const char *string_name, CosNaming::BindingList_var &bl)
与えられた Naming パス以下のすべてのバインディングを取得する
CORBA::Object_ptr resolve(const CosNaming::Name &name)
与えられた NameComponent にバインドされている Object を返す
static void destroy(CosNaming::NamingContext_ptr context)
NamingContext を非アクティブ化する
const char * getNameServer()
ネームサーバの名前を取得する
static CosNaming::NamingContext_ptr bindOrResolveContext(CosNaming::NamingContext_ptr context, const CosNaming::Name &name, CosNaming::NamingContext_ptr new_context)
名前をバインドまたは解決する
void bindContext(const char *string_name, CosNaming::NamingContext_ptr name_cxt, bool force=true)
NamingContext を bind する
void init(const char *name_server)
ネーミングサービスの初期化
void bind(const CosNaming::Name &name, CORBA::Object_ptr obj, bool force=true)
Object を bind する
void bindContext(const CosNaming::Name &name, CosNaming::NamingContext_ptr name_cxt, bool force=true)
NamingContext を bind する
void bindContextRecursive(CosNaming::NamingContext_ptr context, const CosNaming::Name &name, CosNaming::NamingContext_ptr name_cxt)
途中のコンテキストを再帰的に bind し NamingContext を bind する
static CORBA::Object_ptr bindOrResolve(CosNaming::NamingContext_ptr context, const CosNaming::Name &name, CORBA::Object_ptr obj)
オブジェクトの名前をバインドまたは解決する
std::vector< CORBA::Object_ptr > ObjectList
Definition: CorbaNaming.h:167
static void nameToString(const CosNaming::Name &name, char *string_name, CORBA::ULong slen)
ネームコンポーネントの文字列表現を取得する
CorbaNaming(CORBA::ORB_ptr orb, const char *name_server)
コンストラクタ
CosNaming::NamingContext_ptr getRootContext()
ルートコンテキストを取得する
CosNaming::NamingContextExt::InvalidAddress InvalidAddress
Definition: CorbaNaming.h:166
static void rebindContextRecursive(CosNaming::NamingContext_ptr context, const CosNaming::Name &name, CosNaming::NamingContext_ptr name_cxt)
途中のコンテキストを再帰的に rebind し NamingContext を rebind する
CosNaming::NamingContext::NotFound NotFound
Definition: CorbaNaming.h:161
static CORBA::ULong getNameLength(const CosNaming::Name &name)
ネームコンポーネントの文字列表現時の文字長を取得する
RTコンポーネント