summaryrefslogtreecommitdiff
path: root/TAO/docs/releasenotes/orbcore.html
blob: 7b9bb610870c97c86753b94f881d1088acd47f0a (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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

<html>
  <head>
    <title>ORB & ORB Core Status</title>
  </head>

    <HR>
    <H3><A NAME="orb"></A>ORB &amp; ORB Core</H3>
    Point of contact: <A HREF="mailto:cleeland@cs.wustl.edu">Chris Cleeland</A>

<P>Current status:

      <UL>
	<LI>
	  Provides dynamically linked wholesale assignment of ORB
	  strategies for communication, concurrency, demultiplexing,
	  scheduling, and dispatching using the ACE Service
	  Configurator framework.</LI>

	<LI>
	  Supports several concurrency models out of the box:
	  Reactive, Thread-per-Connection, and ORB-per-thread. The
	  ORB-per-thread design is optimized for real-time I/O
	  subsystems.</LI>
      </UL>

      Recently Completed Work:

    <UL>
      <li>Placed an optimization in IIOP::Profile that should speed up
      invocations on the client side rather substantially.  This was
      done by caching an instance of <code>ACE_INET_Addr</code> in the
      private portion of <code>Profile</code> because the cost of
      constructing one for every invocation (in
      <code>TAO_GIOP_Invocation::start</code>) was simply
      enormous--the construction was something like 100 cycles on
      Solaris.  This is all because deep down this ends up calling
      <code>gethostbyname()</code>, which can be very costly.  Of
      course, this is platform-dependent, so the improvements may not
      be as great on a different platform.</li>

      <li>Got rid of need to have compile in TSS ORB Core
      (<code>-DTAO_HAS_TSS_ORBCORE</code>).  This is accomplished by
      having a Resource Factory (<code>TAO_Resource_Factory</code>)
      singleton which the ORB Core consults in order to get pointers
      to resources.  The Resource Factory can be configured to return
      pointers from thread-specific storage, or process-global
      storage.  By doing this, the ORB Core is shielded from ever
      having to know whether or not its resources are global or
      not.</li>

	<li>Made all command-line like options look like the
	standard-professed options, i.e., <b>-ORBxxx</b> or
	<b>-OAxxxx</b>.</li>

	<li>Moved ORB option parsing into
	<code>TAO_ORB_Core::init()</code> rather than in
	<code>ORB_init()</code>.</li>

	<li>Define <code>_FAR</code> for all cases as an interim fix
	for LynxOS.</li>

	<li>Fixed TAO so that the default port of 5001 is defined in
	<code>orb_core.h</code> config header somewhere rather than in
	<code>orbobj.cpp</code>, and use <b>MAXHOSTNAMELEN</b> ACE
	constant for the hostname buffer.</li>

	<li>Eliminated need for <code>CORBA::Object</code> to keep a
	pointer to its orb sitting around anywhere.</li>

	<LI>Tested <code>CORBA_ORB::shutdown()</code> as a manner in
	which a thread of control can request that
	<code>CORBA_ORB::run()</code> should return and no longer
	service requests.  It only honors a
	<em>wait_for_completion</em> argument of <b>FALSE</b> right
	now because we haven't fully explored the issues which
	surround doing all the completion.</li>

	<li>Fixed bugs reported by Steven Wohlever, David Miron,
	Manojkumar Acharya.</li>

	<li>Created a brief section in <a
	href="../../TAO-Install.html"><code>$TAO_ROOT/TAO-Install.html</code></a>
	that <em>briefly</em> documents installation on Unix
	platforms.  There is also a brief section which documents
	issues that apply across ALL platforms, such as the fact that
	TAO and its application will likely not work well if your ACE
	is linked through Orbix, VisiBroker, or another ORB.  <a
	href="../../ChangeLog">ChangeLog</a> discovery attribution for
	this should go to <em>Steve Wohlever
	&lt;wohlever@mitre.org&gt;</em>.</li>

	<LI>Implemented <code>CORBA_ORB::shutdown()</code> as a manner
	in which a thread of control can request that
	<code>CORBA_ORB::run()</code> should return and no longer
	service requests.</li>

	<LI>Validated movement of Strategy Connector into
	ORB&nbsp;Core.</LI>

	<li>Debated details of <code>Svc_Handler</code> modifications
	with Irfan.</li>

	<li>Tested and commited <code>Connector::connect_n</code> changes
	to ACE</code>.</li>

	<li>ACE & TAO compiling cleanly using Sun's CC on Solaris and
	G++ on Linux.  Also, the ACE tests run properly.</li>

	<li>Use <code>truss</code> to verify for <a
	href="mailto:PAUL.G.WEHLAGE@cdev.com">Paul Wehlage</a> that
	TAO really uses <code>select</code> vs. <code>recv</code> for
	<b>-R</b> vs. <b>-T</b>.</li>

	<li>Renamed <code>boa.*</code> to <code>poa.*</code>.</li>

	<LI>Renamed following files:&nbsp;Orb_Core.*&nbsp;->orb_core.*
	&amp;&nbsp;orbobj.* -> corba_orb.*.</LI>

	<LI>The lock used in <code>giop.cpp:626</code> originally
	appeared in the IIOP-1.4 code base.  Its purpose was to
	protect access to the <code>fwd_profile</code> data member.
	The original features are available, but they are currently
	not used because none of our concurrency models present a
	thread-unsafe condition.  The <a
	href="../../ChangeLog">ChangeLog</a> presents more details on
	the subject.</li>

	<li>Fixed problems seen by <a
	href="mailto:brian.r.mendel@boeing.com">Brian Mendel</a> of
	Boeing where the Cubit server application was crashing in
	<code>TAO_OA_Connection_Handler::handle_message</code> when it
	was trying to call <code>CORBA::POA::handle_request</code>
	through a NULL <code>root_poa</code> pointer.  The NULL
	pointer resulted from the inadvertent use of the
	Thread-per-Connection concurrency model, which is currently
	incompatible with the ORB-per-thread model.  It was not caught
	because the change is normally done in configuration files
	parsed by the Service Configurator, and VxWorks requires
	special code in that area which was not tested until Boeing
	got hold of the code.</li>

	<li>Clean up build under g++.  All 'function used before
	declared inline' warnings have been eliminated.  Also, all
	other warnings (except for one that is nearly unavoidable)
	have been eliminated.
	</li>

	<LI>Removed BOA and ROA names from the ORB.</LI>

	<LI>Changed <code>CORBA_ORB::open()</code> to return an error
	status (first cut at this already there--needs to be checked
	out).</LI>

	<LI>Added README file to multiCubit test.</li>
        </UL>

      Ongoing Work:

      <UL>
	<LI>Verify ACE & TAO on Linux.</LI>

	<LI>Use Purify to eliminate straggling problems.</LI>

        </UL>

      Current Work:

        <UL>
	<LI>Clean up the internals and analyze for performance bottlenecks using Quantify.</LI>

	<LI>
	  <p>
	    Verify that, in the ORB-per-thread concurrency model, it's
	    possible to have a factory in each thread that creates a
	    client and returns an object reference to that client
	    within that thread.  This is different from the model that
	    Sumedh originally had where the factory was trying to turn
	    out a client in a separate thread/ORB combination.</p>
	  <p>
	    There is no application which attempts this at the moment,
	    so both a client and a server will need to be
	    manufactured.  Using existing Cubit-like examples (that
	    poor app is so weary) should reduce development time to a
	    couple of hours.</p>
	  <p>
	    The real strategy/solution is to make
	    <code>CORBA::Object</code> not keep a pointer to its orb
	    sitting around anywhere.  It should only get it when it
	    needs it.  This should not be difficult to change.</p>
	</LI>
        </UL>

      Critical Work:

        <UL>
	<LI>Add pre-cached connection on client side.  Clients will
	pass in a comma-separated list of <em>host:port</em>
	destinations using the <code>CORBA::ORB_init()</code>
	interface.</LI>

	<LI>Support new concurrency models, e.g.,
	Thread-per-Request.</LI>

        </UL>

      Future work:
      <UL>
      <li>Make argument parsing with the orb consume the arguments it parses.</li>

	<li>Remove <code>_FAR</code> from all code.</li>

        <li>Update ORB Patterns paper to reflect the latest TAO has to
        offer.  Specifically, sections on the Abstract Factory and
        Concurrency strategies need to be updated, and the entire
        paper needs to be reviewed for accuracy w.r.t the current
        TAO.</li>

	<li>Make the section in <a
	href="../../TAO-Install.html"><code>$TAO_ROOT/TAO-Install.html</code></a>
	that documents installation on Unix platforms more complete.
	</li>

	<li>Improve the <code>Service Configurator</code> service
	entry faking on VxWorks.</li>

	<LI>Integrate the <A HREF="#poa">POA</A> implementation.</LI>

	<LI>Add support for <TT>resolve_initial_references</TT> using
	ACE support for UDP broadcast.</LI>

	<LI>Assist in porting higher level services (e.g., <A
	HREF="#eventchannel">Event Channel</A>) to TAO.</LI>

	<li>Compile and verify ACE and TAO on Linux using the Kuck and
	Associates, Inc. (KAI) compiler tools.</li>

    <LI> Remove the CORBA_SEQUENCE structure which is not a true C++
        mapping of sequences. This will affect the code that uses
        OctetSequences and TC_opaque. </LI>

      </UL>

  </body>
</html>