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.
|