1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN">
4 <title>Dynamic Any Status
</title>
7 <body text=
"#000000" bgcolor=
"#FFFFFF">
9 <!-- *********************************** -->
10 <a name=
"toc"><h2>Table of Contents
</h2></a>
12 <li><a href=
"#current">Current Status
</a>
13 <li><a href=
"#issues">Known Issues
</a>
14 <li><a href=
"#ongoing">Ongoing work
</a>
15 <li><a href=
"#future">Future Work
</a>
16 <li><a href=
"#completed">Completed Work
</a>
18 <!-- *********************************** -->
22 <h1> <a name=
"interfacerepo"></a>Interface Repository
</h1>
24 Point of contact:
<a href=
"mailto: parsons@cs.wustl.edu">Jeff Parsons
</a>
26 <p>Last Update: October
21,
2003 </p>
30 The Interface Repository provides run-time information about IDL
31 interfaces. Using this information, it is possible for a program to
32 encounter an object whose interface was not known when the program was
33 compiled, yet, be able to determine what operations are valid on the
34 object and invoke requests using the DII.
36 <p><a href=
"tao_ifr.html">tao_ifr Guide
</a> - Guide to the usage of, and command line options for, tao_ifr, the interface repository loader.
</p>
38 <!-- ============================================================ -->
39 <a name=
"current"><h3>Current status:
</h3></a>
43 <li><p>Fully compliant with OMG
3.0 spec.
</p>
46 <li><p>Fully compatible with CorbaScript.
</p>
51 <!-- --------------------- -->
52 <a href=
"#toc">Back to TOC
</a>
53 <!-- --------------------- -->
55 <!-- ============================================================ -->
56 <a name=
"issues"><h3>Known issues:
</h3></a>
60 <li> If, while processing an IDL file, tao_ifr discovers that the interface
61 repository id of some declaration in that file already exists in the repository, the reason may be one of the following: (
1) the existing entry is for a different type, and so there is a name clash with some repository entry which came from another IDL file; (
2) both entries are for an interface declaration, in which case the new entry may be (a) a full definition of a forward declaration from the other IDl file or (b) there is a name clash. If the case is (
2), then tao_ifr has no way of telling whether it has an instance of (a) or (b). We have chosen to follow the path taken by other ORB vendors - when tao_ifr comes across this situation, it will replace the old repository entry with the new one.
</li><p>
63 <li> With the chosen design, calling move() on a Contained IR object will
64 invalidate the object reference, since the object ID is based on the path
65 to the object in the database. This is not expected to be a serious problem
66 in the forthcoming implementation of automatic IFR administration, but users
67 should be aware of this, if they attempt to write their own IFR administration
72 <!-- --------------------- -->
73 <a href=
"#toc">Back to TOC
</a>
74 <!-- --------------------- -->
76 <!-- ============================================================ -->
77 <a name=
"ongoing"><h3>Ongoing Work:
</h3></a>
83 <!-- --------------------- -->
84 <a href=
"#toc">Back to TOC
</a>
85 <!-- --------------------- -->
87 <!-- ============================================================ -->
88 <a name=
"future"><h3>Future work:
</h3></a>
92 <li> Add support for recursive structs and unions to the IFR, and for
93 their typecodes to the TypeCodeFactory.
</li><p>
95 <li> Add capability to resize the hash maps that provide low-level storage for the IFR, when the hash map resize feature is added to ACE.
</li><p>
97 <li> Add pluggability for commonly used OTS databases.
</li><p>
101 <!-- --------------------- -->
102 <a href=
"#toc">Back to TOC
</a>
103 <!-- --------------------- -->
105 <!-- ============================================================ -->
106 <a name=
"completed"><h3>Completed Work:
</h3></a>
108 <!-- ************************************************************ -->
109 <!-- Please make sure you append new items at the end of the list -->
110 <!-- ************************************************************ -->
114 <li> The Interface Repository Service has been added to TAO, in
115 ACE_wrappers/TAO/orbsvcs/IFR_Service. The implementation follows the
116 expanded IDL found in CORBA Components vol. III. The database used to store
117 IR objects is an ACE tool called ACE_Configuration, written by
118 <a href=
"mailto:chafey@stentorsoft.com">Chris Hafey
</a>. This
119 class represents its contents to the user as a tree of hash maps.
120 By specifying a disk file to read from at startup, the storage may
121 be made persistent. There is also an option to use a win32 registry
122 to store the data, although persistence is not available with this
125 <li> Several methods have been added to class TypeCodeFactory, including
126 create_exception_tc, create_alias_tc, create_native_tc, create_wstring_tc,
127 create_value_box_tc, and create_union_tc. Union typecodes with both
128 multiple and default case labels have been tested.
</li><p>
130 <li> Test code for the IFR service has been added in the directory
131 ACE_wrappers/TAO/orbsvcs/tests/InterfaceRepo/IFR_Test.
</li><p>
133 <li> Code to support multicast discovery of the Interface Repository
134 IOR has been added to TAO. Testing has been done using loopback on NT,
135 and remotely between these two platforms in both directions.
</li><p>
137 <li> Read/write locking option added to IFR service. This option should be
138 used if the IFR service is started using a service config file that
139 chooses the thread-per-request threading model.
</li><p>
141 <li> A test of the persistence option for the IFR added in the directory
142 ACE_wrappers/TAO/orbsvcs/tests/InterfaceRepo/Persistence_Test.
</li><p>
144 <li> Executable to add or subtract the contents of an IDL file to/from the
145 IFR, has been added. This executable uses the TAO IDL compiler front end library,
146 with a new back end library and top level executable. An application-style test has
147 also been added wherein a server is started, the IFR started, the contents of the IDL
148 file added to the IFR, a client started, which discovers information about a desired
149 operation by searching the IFR, and a DII request constructed from this information.
152 <li> The TypeCodeFactory has been moved from the IFR_Service directory to its own
153 directory under TAO/tao, taking its place alongside the other satellite libraries
154 that have been created recently.
</li><p>
156 <li> IFR has been made compliant with the CORBA
2.4 version of Interface.idl.
157 Two new IFR object classes have been added, AbstractInterfaceDef and
158 LocalInterfaceDef. Some data structures have changed, as well as the signature
159 of some operations.
</li><p>
161 <li> The create_*_tc functions have been replaced in CORBA::ORB (as part of the
162 CORBA
2.x IFR compliance). These functions call the corresponding TypeCodeFactory
163 functions. The methods are also hooks, so that the TypeCodeFactory does not have to
164 be built and linked if an application does not intend to call those functions. If
165 it does, however, the application should have
166 #include
"tao/TypeCodeFactory_Adapter_Impl.h" or something similar in it somewhere,
167 and also link to the TAO_TypeCodeFactory library. This will automatically load the
168 library if it has been compiled. Please see the example in
169 ACE_ROOT/TAO/examples/TypeCode_Creation.
</li><p>
171 <li> The CORBA::Object::_get_interface() method has been implemented. This method will
172 resolve the IFR of the target object (whether local or remote), and return the
173 InterfaceDef associated with that object, if it is found in the repository. The test
174 in orbsvcs/tests/InterfaceRepo/Application_Test has been modified to use _get_interface().
</li><p>
176 <li> The executable tao_ifr now handles -ORB options and multiple IDL files in
177 the command line. The option
<br><br>
180 -ORBInitRef InterfaceRepository=file://[filename]
<br><br>
183 can now be used instead of relying on IP multicast to resolve the IFR service.
</li><p>
185 <li> The executable tao_ifr now works with the
<a href=
"../INS.html">Interoperable
186 Naming Service
</a>.
<br><br>
189 tao_ifr_service -ORBEndpoint iiop://[hostname]:[port]
<br><br>
191 tao_ifr -ORBInitRef InterfaceRepository=corbaloc:iiop:[hostname]:[port]/InterfaceRepository [idl file]
<br><br>
196 <li> A command line option -Si has been added to tao_ifr which suppresses processing of included IDL files. The default is to process them.
</li><p>
198 <li> tao_ifr can now process multiple IDL files per execution portably on all supported platforms. File names and command line options may occur in any order on the command line.
</li><p>
200 <li> Underlying mechanism of access to the IFR has been changed from servant
201 locator (where a servant is created and destroyed for each access
202 invocation) to default servant (where persistent servants and their
203 associated POAs are created at IFR startup and destroyed at shutdown).
206 <li> IFR now supports valuetypes, components, homes and eventtypes. A test
207 for this support has been added in TAO/orbsvcs/tests/InterfaceRepo/IDL3_Test.