OpenRTM-aist  1.2.1
CorbaNaming.h
Go to the documentation of this file.
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 #ifdef WIN32
46 #pragma warning( disable : 4290 )
47 #endif
48 
49 namespace RTC
50 {
90  {
91  public:
107  CorbaNaming(CORBA::ORB_ptr orb);
108 
126  CorbaNaming(CORBA::ORB_ptr orb, const char* name_server);
127 
139  virtual ~CorbaNaming(void){};
140 
160  void init(const char* name_server);
161 
162  bool isAlive();
163 
164  typedef CORBA::SystemException SystemException;
165  typedef CosNaming::NamingContext::NotFound NotFound;
166  typedef CosNaming::NamingContext::CannotProceed CannotProceed;
167  typedef CosNaming::NamingContext::InvalidName InvalidName;
168  typedef CosNaming::NamingContext::AlreadyBound AlreadyBound;
169  typedef CosNaming::NamingContext::NotEmpty NotEmpty;
170  typedef CosNaming::NamingContextExt::InvalidAddress InvalidAddress;
171  typedef std::vector<CORBA::Object_ptr> ObjectList;
172 
255  void bind(const CosNaming::Name& name, CORBA::Object_ptr obj,
256  const bool force = 1)
257  throw (SystemException, NotFound, CannotProceed,
258  InvalidName, AlreadyBound);
259 
298  void bindByString(const char* string_name, CORBA::Object_ptr obj,
299  const bool force = 1)
300  throw (SystemException, NotFound, CannotProceed,
301  InvalidName, AlreadyBound);
302 
363  void bindRecursive(CosNaming::NamingContext_ptr context,
364  const CosNaming::Name& name,
365  CORBA::Object_ptr obj)
366  throw (SystemException, CannotProceed, InvalidName, AlreadyBound);
367 
405  void rebind(const CosNaming::Name& name, CORBA::Object_ptr obj,
406  const bool force = 1)
407  throw (SystemException, NotFound, CannotProceed, InvalidName);
408 
445  void rebindByString(const char* string_name, CORBA::Object_ptr obj,
446  const bool force = 1)
447  throw (SystemException, NotFound, CannotProceed, InvalidName);
448 
486  void rebindRecursive(CosNaming::NamingContext_ptr context,
487  const CosNaming::Name& name,
488  CORBA::Object_ptr obj)
489  throw (SystemException, CannotProceed, InvalidName);
490 
527  void bindContext(const CosNaming::Name& name,
528  CosNaming::NamingContext_ptr name_cxt,
529  const bool force = 1)
530  throw (SystemException, NotFound, CannotProceed,
531  InvalidName, AlreadyBound);
532 
570  void bindContext(const char* string_name,
571  CosNaming::NamingContext_ptr name_cxt,
572  const bool force = 1)
573  throw (SystemException, NotFound, CannotProceed,
574  InvalidName, AlreadyBound);
575 
601  void bindContextRecursive(CosNaming::NamingContext_ptr context,
602  const CosNaming::Name& name,
603  CosNaming::NamingContext_ptr name_cxt);
604 
643  void rebindContext(const CosNaming::Name& name,
644  CosNaming::NamingContext_ptr name_cxt,
645  const bool force = 1)
646  throw (SystemException, NotFound, CannotProceed, InvalidName);
647 
686  void rebindContext(const char* string_name,
687  CosNaming::NamingContext_ptr name_cxt,
688  const bool force = 1)
689  throw (SystemException, NotFound, CannotProceed, InvalidName);
690 
716  void rebindContextRecursive(CosNaming::NamingContext_ptr context,
717  const CosNaming::Name& name,
718  CosNaming::NamingContext_ptr name_cxt);
719 
761  CORBA::Object_ptr resolve(const CosNaming::Name& name)
762  throw (SystemException, NotFound, CannotProceed, InvalidName);
763 
806  CORBA::Object_ptr resolve(const char* string_name)
807  throw (SystemException, NotFound, CannotProceed, InvalidName);
808 
846  void unbind(const CosNaming::Name& name)
847  throw (SystemException, NotFound, CannotProceed, InvalidName);
848 
891  void unbind(const char* string_name)
892  throw (SystemException, NotFound, CannotProceed, InvalidName);
893 
915  CosNaming::NamingContext_ptr newContext();
916 
956  CosNaming::NamingContext_ptr
957  bindNewContext(const CosNaming::Name& name, bool force = true)
958  throw (SystemException, NotFound, CannotProceed,
959  InvalidName, AlreadyBound);
960 
1001  CosNaming::NamingContext_ptr
1002  bindNewContext(const char* string_name, bool force = true)
1003  throw (SystemException, NotFound, CannotProceed,
1004  InvalidName, AlreadyBound);
1005 
1033  void destroy(CosNaming::NamingContext_ptr context)
1034  throw (SystemException, NotEmpty);
1035 
1067  void destroyRecursive(CosNaming::NamingContext_ptr context)
1068  throw (SystemException, NotEmpty, NotFound, CannotProceed, InvalidName);
1069 
1083  void clearAll();
1084 
1108  void list(CosNaming::NamingContext_ptr name_cxt,
1109  CORBA::ULong how_many,
1110  CosNaming::BindingList_var& bl,
1111  CosNaming::BindingIterator_var& bi);
1148  void list(const char* string_name,
1149  CosNaming::BindingList_var& bl);
1150 
1197  void listByKind(const char* string_name,
1198  const char* string_kind,
1199  CosNaming::BindingList_var& bl);
1200 
1201  //============================================================
1202  // interface of NamingContextExt
1203  //============================================================
1229  char* toString(const CosNaming::Name& name)
1230  throw (SystemException, InvalidName);
1231 
1257  CosNaming::Name toName(const char* string_name)
1258  throw (SystemException, InvalidName);
1259 
1289  char* toUrl(char* addr, char* string_name)
1290  throw (SystemException, InvalidAddress, InvalidName);
1291 
1323  CORBA::Object_ptr resolveStr(const char* string_name)
1324  throw (SystemException, NotFound, CannotProceed,
1325  InvalidName, AlreadyBound);
1326 
1327  //============================================================
1328  // Find functions
1329  //============================================================
1330 
1331  // ObjectList find(const char* name, const char* kind);
1332  // ObjectList findById(const char* name, const char* kind);
1333  // ObjectList findByKind(const char* name, const char* kind);
1334 
1367  CORBA::Object_ptr bindOrResolve(CosNaming::NamingContext_ptr context,
1368  const CosNaming::Name& name,
1369  CORBA::Object_ptr obj);
1370 
1404  CosNaming::NamingContext_ptr
1405  bindOrResolveContext(CosNaming::NamingContext_ptr context,
1406  const CosNaming::Name& name,
1407  CosNaming::NamingContext_ptr new_context);
1408 
1439  CosNaming::NamingContext_ptr
1440  bindOrResolveContext(CosNaming::NamingContext_ptr context,
1441  const CosNaming::Name& name);
1442 
1460  const char* getNameServer();
1461 
1479  CosNaming::NamingContext_ptr getRootContext();
1480 
1502  bool isNamingContext(CORBA::Object_ptr obj);
1503 
1525  bool isNamingContext(const CosNaming::Name& name);
1526 
1548  bool isNamingContext(const char* string_name);
1549 
1579  CosNaming::Name subName(const CosNaming::Name& name,
1580  CORBA::Long begin,
1581  CORBA::Long end = -1);
1582 
1583  protected:
1616  void nameToString(const CosNaming::Name& name, char* string_name,
1617  CORBA::ULong slen);
1646  CORBA::ULong getNameLength(const CosNaming::Name& name);
1647 
1673  unsigned int split(const std::string& input,
1674  const std::string& delimiter,
1675  std::vector<std::string>& results);
1676 
1684  CORBA::ORB_ptr m_ptrORB;
1685 
1693  std::string m_nameServer;
1701  CosNaming::NamingContextExt_var m_rootContext;
1702 
1703  private:
1704  CORBA::ULong m_blLength;
1705 
1706  }; // class CorbaNaming
1707 }; // namespace RTC
1708 
1709 #ifdef WIN32
1710 #pragma warning( default : 4290 )
1711 #endif
1712 
1713 #endif // end of RTC_CORBANAMING_H
CosNaming::NamingContext_ptr newContext()
Create new NamingContext.
CosNaming::Name subName(const CosNaming::Name &name, CORBA::Long begin, CORBA::Long end=-1)
Get subset of given name component.
CORBA::ORB_ptr m_ptrORB
ORB.
Definition: CorbaNaming.h:1684
CosNaming::NamingContext_ptr bindNewContext(const CosNaming::Name &name, bool force=true)
Bind new NamingContext.
CosNaming::NamingContext::CannotProceed CannotProceed
Definition: CorbaNaming.h:166
RT-Component.
void rebindRecursive(CosNaming::NamingContext_ptr context, const CosNaming::Name &name, CORBA::Object_ptr obj)
Bind intermediate context recursively and rebind object.
char * toString(const CosNaming::Name &name)
Get string representation of given NameComponent.
CosNaming::Name toName(const char *string_name)
Resolve given string representation to NameComponent.
void unbind(const CosNaming::Name &name)
Unbind a binding specified by NameComponent.
CORBA::SystemException SystemException
Definition: CorbaNaming.h:164
void bind(const CosNaming::Name &name, CORBA::Object_ptr obj, const bool force=1)
Bind object on specified name component position.
void bindByString(const char *string_name, CORBA::Object_ptr obj, const bool force=1)
Bind object on specified string name position.
void bindContextRecursive(CosNaming::NamingContext_ptr context, const CosNaming::Name &name, CosNaming::NamingContext_ptr name_cxt)
Bind intermediate context recursively and bind NamingContext.
CORBA::ULong getNameLength(const CosNaming::Name &name)
Get string length of the name component&#39;s string representation.
CORBA::Object_ptr resolveStr(const char *string_name)
Resolve from name of string representation and get object.
std::string m_nameServer
Name of the name server.
Definition: CorbaNaming.h:1693
void rebindContext(const CosNaming::Name &name, CosNaming::NamingContext_ptr name_cxt, const bool force=1)
Rebind NamingContext.
unsigned int split(const std::string &input, const std::string &delimiter, std::vector< std::string > &results)
Split of string.
void init(const char *name_server)
Initialize the Naming Service.
CORBA::Object_ptr bindOrResolve(CosNaming::NamingContext_ptr context, const CosNaming::Name &name, CORBA::Object_ptr obj)
Bind or resolve the given name component.
CORBA::Object_ptr resolve(const CosNaming::Name &name)
Return object bound on the specified NameComponent.
CosNaming::NamingContext_ptr bindOrResolveContext(CosNaming::NamingContext_ptr context, const CosNaming::Name &name, CosNaming::NamingContext_ptr new_context)
Bind or resolve the given name component.
void rebindByString(const char *string_name, CORBA::Object_ptr obj, const bool force=1)
Rebind Object.
CORBA Naming Service helper class.
Definition: CorbaNaming.h:89
bool isNamingContext(CORBA::Object_ptr obj)
Determine whether the object is NamingContext.
CosNaming::NamingContext::NotFound NotFound
Definition: CorbaNaming.h:165
CosNaming::NamingContextExt_var m_rootContext
The root context of specified name server.
Definition: CorbaNaming.h:1701
CosNaming::NamingContext::NotEmpty NotEmpty
Definition: CorbaNaming.h:169
CosNaming::NamingContext::AlreadyBound AlreadyBound
Definition: CorbaNaming.h:168
CosNaming::NamingContextExt::InvalidAddress InvalidAddress
Definition: CorbaNaming.h:170
CosNaming::NamingContext_ptr getRootContext()
Get the root context.
CosNaming::NamingContext::InvalidName InvalidName
Definition: CorbaNaming.h:167
void clearAll()
Destroy all bindings.
void nameToString(const CosNaming::Name &name, char *string_name, CORBA::ULong slen)
Get string representation of name component.
std::vector< CORBA::Object_ptr > ObjectList
Definition: CorbaNaming.h:171
void destroyRecursive(CosNaming::NamingContext_ptr context)
Destroy the naming context recursively.
void rebindContextRecursive(CosNaming::NamingContext_ptr context, const CosNaming::Name &name, CosNaming::NamingContext_ptr name_cxt)
Rebind intermediate context recursively and rebind NamingContext.
void rebind(const CosNaming::Name &name, CORBA::Object_ptr obj, const bool force=1)
Rebind object.
void bindRecursive(CosNaming::NamingContext_ptr context, const CosNaming::Name &name, CORBA::Object_ptr obj)
Bind intermediate context recursively and bind object.
RTComponent header.
virtual ~CorbaNaming(void)
Virtual destructor.
Definition: CorbaNaming.h:139
void listByKind(const char *string_name, const char *string_kind, CosNaming::BindingList_var &bl)
Get all the binding with specified kind under given naming path.
CorbaNaming(CORBA::ORB_ptr orb)
Consructor.
const char * getNameServer()
Get the name of name server.
char * toUrl(char *addr, char *string_name)
Get URL representation from given addr and string_name.
void destroy(CosNaming::NamingContext_ptr context)
Destroy the naming context.
void list(CosNaming::NamingContext_ptr name_cxt, CORBA::ULong how_many, CosNaming::BindingList_var &bl, CosNaming::BindingIterator_var &bi)
Get Binding of the given NamingContext.
void bindContext(const CosNaming::Name &name, CosNaming::NamingContext_ptr name_cxt, const bool force=1)
Bind NamingContext.