summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Naming/README
blob: 9cccf13e6226e6dc9650cc7dda9fa9ebc0e26adb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// $Id:

CONTENT

This directory contains files implementing CosNaming idl interface
from CORBA COSS, as well as a few utilities.


ARCHITECTURE

The architecture of the Naming Service (i.e., CosNaming)
implementation follows the Bridge pattern.
Below is the list of player classes:

 * TAO_Naming_Context (in Naming_Context.h) - this class inherits from
   POA skeleton, and plays the role of 'Abstraction' (aka 'Interface') -
   it forwards all client requests to a 'ConcreteImplementor' through an
   'Implementor' pointer.

 * TAO_Naming_Context_Impl (in Naming_Context.h) - this is an abstract base class for all
   concrete implementations of NamingContext functionality (i.e., 'Implementor').

 * TAO_Hash_Naming_Context (in Hash_Naming_Context.h) - this
   class inherits from TAO_Naming_Context_Impl.  It is a
   'ConcreteImplementor' which uses ACE_Hash_Map_Manager to implement
   NamingContext functionality.

 * A set of classes implementing a persistent version of the Naming
   Context functionality.  These are the classes in
   Shared_Hash_Map_T.{h, cpp}, and Persistent* files.

The class structure described above makes it easy to:

1) Create and plug different Naming Service implementations by
   subclassing TAO_Naming_Context_Impl.

2) Dynamically load an appropriate Naming Service implementation at
   run-time based on the config file entry by making TAO_Naming_Context_Impl
   inherit from ACE_Service_Object, etc.


PERSISTENCE

The first version of Persistent Naming implementation is here!
It is based on the memory-mapped files.  Directions on how to use the
Persistent version of the Naming Service can be found in
TAO/orbsvcs/Naming_Service/README (by using a command-line option).

The current set of classes implementing persistent version of the
Naming Service will be restructured for one of the upcoming releases
(to factor out commonality, get rid of unnecessary generality, etc.),
at which time more documentation will be available in this README file
and in the source code.



TO-DO

- Check <destroy> test on NT.
- Add example for persistent Naming Service
- Make binding iterators observers of their corresponding Naming
  Context, so they die once the Naming Context dies (use either
  ref. counted locks or delayed death)

- migrate ACE_Shared_Map to ACE and use in ACE Naming Service.


- Factor out initialization of a NamingContext into a static function
  on an appropriate class.

- Factor out Naming_Util initialization code into a factory

- Check for proper destruction of contexts

- code review/comments of Entries, Persistent_Entries,
  Persistent_Context_Index, Naming_Utils, Bindings_Iterator

- Update README file

- update Naming Service slides.

- do code review of Simple_Naming.

- add Load Balancing functionality.

- make sure we can pass hash_table_size to Persistent Naming Context.