Choreonoid  1.5
CosNaming_impl.h
Go to the documentation of this file.
1 
2 #ifndef CNOID_COS_NAMING_IMPL_H
3 #define CNOID_COS_NAMING_IMPL_H
4 
5 #include <omniORB4/Naming.hh>
6 #include <boost/thread/shared_mutex.hpp>
7 
8 namespace cnoid {
9 
10 extern PortableServer::POA_var nspoa;
11 
12 class NamingContext_impl;
13 
15 {
16 public:
17  CosNaming::Binding binding;
18  CORBA::Object_var object;
22 
23  BindingNode(const CosNaming::Name& n, CosNaming::BindingType t, CORBA::Object_ptr o, NamingContext_impl* nc);
24  ~BindingNode();
25 };
26 
27 class NamingContext_impl : public POA_CosNaming::NamingContextExt,
28  public PortableServer::RefCountServantBase
29 {
30  friend class BindingNode;
31 
32 public:
33 
34  NamingContext_impl(PortableServer::POA_ptr poa, const PortableServer::ObjectId& id);
35 
36  virtual void bind(const CosNaming::Name& n, CORBA::Object_ptr obj);
37  virtual void rebind(const CosNaming::Name& n, CORBA::Object_ptr obj);
38  virtual void bind_context(const CosNaming::Name& n, CosNaming::NamingContext_ptr nc);
39  virtual void rebind_context(const CosNaming::Name& n, CosNaming::NamingContext_ptr nc);
40  virtual CORBA::Object_ptr resolve(const CosNaming::Name& n);
41  virtual void unbind(const CosNaming::Name& n);
42  virtual CosNaming::NamingContext_ptr new_context();
43  virtual CosNaming::NamingContext_ptr bind_new_context(const CosNaming::Name& n);
44  virtual void destroy();
45  virtual void list(CORBA::ULong how_many, CosNaming::BindingList_out bl, CosNaming::BindingIterator_out bi);
46 
47  virtual char* to_string(const CosNaming::Name& n);
48  virtual CosNaming::Name* to_name(const char* sn);
49  virtual char* to_url(const char* addr, const char* sn);
50  virtual CORBA::Object_ptr resolve_str(const char* n);
51 
52 private:
53 
54  PortableServer::POA_ptr poa;
55 
56  // Multiple-readers, single-writer lock
57  static boost::shared_mutex mutex;
58 
59  BindingNode* firstNode;
60  BindingNode* lastNode;
61  int size;
62 
64 
65  void bind_sub(const CosNaming::Name& n, CORBA::Object_ptr obj, CosNaming::BindingType t, CORBA::Boolean rebind);
66  BindingNode* resolve_single(const CosNaming::Name& name);
67  CosNaming::NamingContext_ptr resolve_multi(const CosNaming::Name& name, CosNaming::Name& restOfName);
68 };
69 
70 
71 class BindingIterator_impl : public POA_CosNaming::BindingIterator,
72  public PortableServer::RefCountServantBase
73 {
74 public:
75  BindingIterator_impl(PortableServer::POA_ptr poa, CosNaming::BindingList* list);
76 
77  virtual CORBA::Boolean next_one(CosNaming::Binding_out b);
78  virtual CORBA::Boolean next_n(CORBA::ULong how_many, CosNaming::BindingList_out bl);
79  virtual void destroy(void);
80 
81 private:
82  CosNaming::BindingList* list;
83 
85 };
86 
87 }
88 
89 #endif
BindingNode(const CosNaming::Name &n, CosNaming::BindingType t, CORBA::Object_ptr o, NamingContext_impl *nc)
Definition: CosNaming_impl.cpp:20
~BindingNode()
Definition: CosNaming_impl.cpp:41
Definition: CosNaming_impl.h:27
CosNaming::Binding binding
Definition: CosNaming_impl.h:17
BindingNode * prev
Definition: CosNaming_impl.h:20
CORBA::Object_var object
Definition: CosNaming_impl.h:18
Definition: CosNaming_impl.h:14
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
Definition: CosNaming_impl.h:71
BindingNode * next
Definition: CosNaming_impl.h:21
PortableServer::POA_var nspoa
Definition: NameServer.cpp:14
NamingContext_impl * context
Definition: CosNaming_impl.h:19