summaryrefslogtreecommitdiff
path: root/TAO/docs/releasenotes/TODO.html
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/docs/releasenotes/TODO.html')
-rw-r--r--TAO/docs/releasenotes/TODO.html726
1 files changed, 210 insertions, 516 deletions
diff --git a/TAO/docs/releasenotes/TODO.html b/TAO/docs/releasenotes/TODO.html
index f74be91a90c..a1e08195c42 100644
--- a/TAO/docs/releasenotes/TODO.html
+++ b/TAO/docs/releasenotes/TODO.html
@@ -38,6 +38,12 @@
</P>
</LI>
+ <LI><P>Add support for multiple Profiles in the ORB (completing
+ the IIOP 1.0 support)
+ <BR>[ASSIGNED TO:] Fred
+ </P>
+ </LI>
+
<LI><P>Implement a nice example of the COS Event Channel,
showing how it can provide filtering when combined with the
real-time Event Channel.
@@ -45,73 +51,59 @@
</P>
</LI>
- <LI><P><B>EC:</B> Complete the implementation of the new EC,
- specially generate the strategies and changes required to
- support hard real-time behavior.
- </P>
- <P>The new EC does not update the dependencies in
- the scheduling service. We should be able to strategize this
- by the appropiate use of a <CODE>Filter_Builder</CODE> and
- decorators for the regular filters.
- <BR>[ASSIGNED TO:] Carlos
- <BR>[STATUS] All the pieces are in place, but I have to
- continue debugging it.
- </P>
- </LI>
+ <LI><P><B>EC:</B> The current architecture of the real-time
+ Event Channel does not support some features, such as:
+ <UL>
+ <LI><P><B>EC:</B> Some applications are both suppliers and
+ consumers of events,
+ they may be interested in all the
+ events of type <B>T</B> unless the event is generated
+ by them.
+ </LI>
+ <LI><P><B>EC:</B> Can we factor out the scheduling service from
+ the EC?
+ </P>
+ </LI>
- <LI><P>Implement the Interoperable Naming Service spec,
- specially the new standard features to bootstrap the initial
- object references in the ORB.
- <BR>[ASSIGNED TO:] Vishal
- <BR>[STATUS] He is making good progress, near completion by
- now.
- </P>
- </LI>
+ <LI><P><B>EC:</B> The reactive event channel can eliminate
+ data copies because the data does not need to survive
+ after the <CODE>push()</CODE> call.
+ </P>
+ </LI>
- <LI><P>Improve the connection recycling strategies, for
- instance,
- several strategies are possible: limit the maximum number of
- open sockets, probably with both HWM and LWM bounds,
- with different policies to choose the socket to close (LFU,
- MRU?);
- or maybe be more aggresive and recycle a socket once
- all the object references pointing to a server are closed.
- The later approach could be easily implemented if each
- IIOP_Object held a reference to the set of sockets opened to
- a certain TCP/IP address.
- <BR>[ASSIGNED TO:] Kirthika
- </P>
- </LI>
+ <LI><P><B>EC:</B> Many applications require to intercept
+ the EC event processing, for example to keep track of
+ the number of events received and sent.
+ This requires strategized factories for many (if not
+ all) of the Event Channel internal servants.
+ </P>
+ </LI>
- <LI><P>If the connection to the server cannot be established the
- right exception is <CODE>TRANSIENT</CODE>, not
- <CODE>COMM_FAILURE</CODE>; this and other exception
- inconsistencies have to be checked
- <BR>[STATUS] Most of this work has been completed, there are
- a few i's to dot and t's to cross, for example:
- what is the right exception to raise when a
- <CODE>write()</CODE> fails? The answer is
- none, we must transparently retry the current profile, not
- the next one.
- <BR>[ASSIGNED TO:] Carlos
- <BR>[STATUS] The path on the client side seems clean
- now. The server side is still under revision.
- </P>
- </LI>
+ <LI><P><B>EC:</B> Some applications require ad-hoc
+ filters, such as "this events must arrive in
+ sequence", or "wait for all this events and then send
+ this other event".
+ </P>
+ </LI>
- <LI><P>Add support for timeouts and protocol attributes to the
- ORB.
+ <!-- This is Boeing specific -->
+ <LI><P><B>EC:</B> For some applications it is insteresting
+ to activate the EC servants (such as the
+ ConsumerProxys) in different POAs
+ </P>
+ </LI>
+
+ </UL>
+ We have completed a new design for the real-time event
+ channel that will let us implement all this features (and
+ others).
<BR>[ASSIGNED TO:] Carlos
- <BR>[STATUS] Support for the Policy objects is present, but
- we haven't implemented any of the Policy objects and, of
- course, we don't use them.
- </P>
+ </P>
</LI>
</OL>
<HR>
-
<P>
<H3>Pending Tasks</H3>
</P>
@@ -134,8 +126,6 @@
incoming data buffer, thus improving interleaving between the
client and server (the client does something useful before
starting to wait for the server).
- The client could also deallocate the outgoing buffers before
- waiting for the reply.
<P></LI>
<LI>The data blocks and their buffers could be allocated in a
@@ -143,6 +133,16 @@
the data block and the rest of it to contain the actual buffer
<P></LI>
+ <LI><P>Some applications cannot afford compiled marshaling for
+ all the stubs and skeletons,
+ the generated code size would be too big.
+ Yet some operations could be critical and require code as
+ efficient as possible;
+ a <CODE>#pragma</CODE> can be added to give users
+ fine-grained control over code generation.
+ </P>
+ </LI>
+
<LI><P>For extremely low latency applications we could remove
some fields from the IIOP protocol, for instance:
<UL>
@@ -156,7 +156,7 @@
</LI>
</UL>
<BR>[STATUS] Most of this optimizations were implemented,
- and can be enabled using the <CODE>-ORBgioplite</CODE> command
+ and can be enabled using the <CODE>-ORBiioplite</CODE> command
line option.
</P>
</LI>
@@ -234,6 +234,23 @@
</P>
</LI>
+ <LI><P>In the collocated case the generated
+ <CODE>_narrow()</CODE> method calls the
+ <CODE>_create_stub()</CODE> method that allocates several
+ temporary objects.
+ </P>
+ </LI>
+
+ <LI><P>For various projects, we need to produce a
+ minimal-footprint TAO ORB. One thing we could probably do
+ very easily would be to provide an #ifdef that will
+ conditionally omit the servant manager, POA manager, and
+ adapter activator features from TAO, along with all the
+ demuxing features that aren't active demuxing or perfect
+ hashing.
+ </P>
+ </LI>
+
<LI><P>The CDR streaming classes compute the alignment on each
operation, but they could remember the alingment from the
previous insertion or extraction operation; saving a few
@@ -241,105 +258,18 @@
</P>
</LI>
- <LI><P>Some applications cannot afford compiled marshaling for
- all the stubs and skeletons,
- the generated code size would be too big.
- Yet some operations could be critical and require code as
- efficient as possible;
- a <CODE>#pragma</CODE> can be added to give users
- fine-grained control over code generation.
- </P>
- </LI>
-
</OL>
<H4>New features and Bug fixes</H4>
<OL>
- <LI><P><B>EC:</B>The <CODE>Priority_Dispatching</CODE> strategy
- is incomplete.
- <BR>[STATUS] The latest round of changes completed the
- implementation, but more testing is required before dropping
- this task
- </P>
- </LI>
- <LI><P><B>EC:</B>Implement a dispatching strategy that uses the
- current thread priority or ID to dispatch the event. This
- will let us use multiple queues at different priorities but
- without any scheduling service.
- </P>
- </LI>
- <LI><P><B>EC:</B>Implement a null filter for consumers that
- correctly matches the events, this can be used to do all the
- filtering on the suppliers for applications that do not
- require correlation.
- </P>
- </LI>
- <LI><P><B>EC:</B>Several tests must be added to the event
- channel testsuite, for example:
- <UL>
- <LI>A throughput test (move from
- <CODE>EC_Throughtput</CODE>).
- </LI>
- <LI>A latency test (move from
- <CODE>Event_Latency</CODE>)
- </LI>
- <LI>A connection time test
- </LI>
- <LI>A test to verify filtering and correlation
- </LI>
- <LI>A test to timeouts
- </LI>
- <LI>A priority inversion test
- </LI>
- <LI>A test to measure CPU scalability
- </LI>
- <LI>A stress test for gateways and observers
- </LI>
- </UL>
- </P>
- </LI>
- <LI><P><B>EC:</B>Should we provide strategies to enforce the QoS
- publications and subscriptions? This could require
- collaborations with the scheduling service and possibly it
- is only useful for debugging real-time applications, but it
- certainly seems interesting.
- </P>
- </LI>
-
- <LI><P><B>EC:</B> Optimize the updates to the SupplierFiltering
- module, specially when it is a singleton: currently it
- receives a <CODE>connected</CODE> call for each supplier,
- event though one would be enough.
+ <LI><P><B>EC:</B>Sometimes the Event Channel dead-locks during
+ shutdown. According to Ulf Jährig &lt;jaehrig@desys.com&gt>;, an
+ easy way to reproduce the problem is to run the
+ EC_Throughput test under windows NT.
</P>
</LI>
- <LI><P><B>EC:</B> We need some strategy in the EC to periodically
- flush out mibehaving suppliers and consumers. Examples of
- misbehavior include: suppliers flooding the EC;
- consumers or suppliers that are destroyed, but were not
- disconnected;
- consumers that are not accepting events (risking a
- dead-lock);
- etc.
- </P>
- </LI>
-
- <LI><P><B>EC:</B>The observer in the <CODE>TAO_EC_Gateway</CODE>
- class is not properly deactivated.
- </P>
- </LI>
-
- <LI><P><B>EC:</B> Sometimes the Event Channel dead-locks during
- shutdown. According to Ulf Jährig
- &lt;jaehrig@desys.com&gt;, an easy way to reproduce the
- problem is to run the EC_Throughput test under windows NT.
- <BR>[STATUS] The test in question works perfectly on NT; it
- looks like a race condition. Apparently this is only a
- problem with the old EC.
- </P>
- </LI>
-
- <LI><P><B>IDL Compiler:</B> Support for the <CODE>version</CODE>
+ <LI><P><B>IDL Compiler:</B>Support for the <CODE>version</CODE>
pragma, this also requires some changes in the
<CODE>_is_a()</CODE> implementation.
</P>
@@ -394,31 +324,27 @@
<BR>[DONE]
<P></LI>
- <LI><B>IDL Compiler:</B> The IDL compiler should be able to
+ <LI><B>IDL Compiler:</B>The IDL compiler should be able to
generate the
alternative mapping, but with the TSS default for the env
argument.
<BR>[DONE]
<P></LI>
- <LI><B>IDL Compiler:</B> The IDL compiler should generate the
+ <LI><B>IDL Compiler:</B>The IDL compiler should generate the
standard mapping, without the environment argument.
<P></LI>
- <LI><P>In general we will need to complete and debug the
- <CODE>TAO_TRY</CODE> macros;
- they have limitations when dealing with the
- alternative mapping, but are very useful.
- <BR>[STATUS] This seems to be OK now, the code seems to
- compile and work correctly now.
- <BR>[STATUS] We need a new macro (TAO_TRY_THROW) to use
- inside the TAO_TRY blocks, because TAO_THROW will not go
- into the TAO_CATCH blocks, even if the exceptions match.
- <BR>[STATUS] Nanbor implemented a much better set of
- macros, that can be used with other ORBs, it is
- implemented in <CODE>$ACE_ROOT/ace/CORBA_macros.h</CODE>
- </P>
- </LI>
+ <LI>In general we will need to complete and debug the
+ <CODE>TAO_TRY</CODE> macros;
+ they have limitations when dealing with the
+ alternative mapping, but are very useful.
+ <BR>[STATUS] This seems to be OK now, the code seems to
+ compile and work correctly now.
+ <BR>[STATUS] We need a new macro (TAO_TRY_THROW) to use
+ inside the TAO_TRY blocks, because TAO_THROW will not go
+ into the TAO_CATCH blocks, even if the exceptions match.
+ <P></LI>
<LI>We need to test the ORB for resource leaking in the
presence of exceptions.
@@ -498,21 +424,16 @@ class POA_Foo {
</P>
</LI>
- <LI><P><B>EC:</B> The <CODE>TAO_EC_Gateway_IIOP</CODE> can be
+ <LI><P><B>EC:</B>The <CODE>TAO_EC_Gateway_IIOP</CODE> can be
required to subscribe for events by source, but the source
can be local instead of remote.
This is not a problem since the Event Channel supports
multiple supplier IDs,
but we could check the local publications and remove those
events from the Gateway publication and subscription list.
- <BR>[STATUS] The task is a second order optimization and has
- very low priority.
</P>
</LI>
- <LI>Support GIOP 1.1 in the ORB (fragments)
- <P></LI>
-
<LI>Support IIOP 1.1 in the ORB
<P></LI>
@@ -523,6 +444,9 @@ class POA_Foo {
<LI>Support IIOP 1.2 in the ORB
<P></LI>
+ <LI>Support GIOP 1.1 in the ORB (fragments)
+ <P></LI>
+
<LI>The size of pre-allocated buffer for the outgoing CDR
streams is defined at compilation time; but if we use an
efficient enough allocator we could make its size configurable
@@ -550,11 +474,9 @@ class POA_Foo {
in the IDL compiler is incomplete.
<P></LI>
- <LI><P>It seems that some memory is leaked from the ORB cached
- connector; but Purify gets confused by the fact that TAO
- dynamically loads libTAO, so it could be just a bogus report.
- </P>
- </LI>
+ <LI>It seems that some memory is leaked from the ORB cached
+ connector.
+ <P></LI>
<LI><B>IDL Compiler:</B>Support for the <CODE>fixed</CODE> data
type in the IDL compiler
@@ -564,6 +486,10 @@ class POA_Foo {
least untested.
<P></LI>
+ <LI>Add a <CODE>corbafwd.h</CODE> header file to eliminate the
+ deep (and recursive) header dependencies in TAO.
+ <P></LI>
+
<LI>Add &lt&lt and &gt&gt operators to the
<CODE>CORBA::Request</CODE> class, to simplify DII invocations
(this is an Orbix-sism).
@@ -571,49 +497,45 @@ class POA_Foo {
types.
<P></LI>
- <LI><P><B>ORB:</B>
- Add a -ORBlogfile flag so we can set the ACE_ERROR and
- ACE_DEBUG output destination in all TAO applications
- </P>
- </LI>
-
- <LI><P><B>ORB:</B>
- Support multiple calls to ORB_init().
- This requires several changes:
- <UL>
- <LI>Object references must keep an explicit reference to the
- ORB that created them. In turn this requires that CDR
- streams carry the ORB pointer for object reference
- decoding.
+ <LI>Several helper structs for <CODE>Any</CODE> have to be
+ added, mainly: <CODE>to_object</CODE>, <CODE>to_wchar</CODE>,
+ <CODE>to_wstring</CODE> and their <CODE>from_</CODE>
+ <BR>[STATUS] Jeff added several of them, I need to check what
+ is missing.
+ <P></LI>
+
+ <LI>Prepare the 1.0 release:<P>
+ <OL>
+ <LI>Integrate the compiled marshalling approach.
+ <BR>[STATUS] Andy has made great progress on this.
</LI>
- <LI>We must keep a table of ORB pointers based on the
- <CODE>-ORBid</CODE> option.
+ <LI>Verify the GPERF is working in all the relevant
+ platforms.
+ <BR>[STATUS] As far as we know it is working correctly.
</LI>
- <LI>The hint on the cached connector has to be revised if
- support for zero locks in the cached connector is going to
- work.
+ <LI>Integrate active demux of operations?
</LI>
- </UL>
- </P>
- </LI>
+ </OL>
+ <P></LI>
- <LI><P><B>ORB:</B>
- Support multiple endpoints in the ORB.
- Some interesting concurrency models (such as
- thread-per-endpoint or thread-pool-per-endpoint) require
- that we give an explicit name to each endpoint, and use
- policies to match the thread with the endpoints it will
- serve (and share).
- </P>
- </LI>
+ <LI>Support the Sun bootstrapping mechanism for the Naming
+ Service
+ <P></LI>
+
+ <LI>Add a -ORBlogfile flag so we can set the ACE_ERROR and
+ ACE_DEBUG output destination in all TAO applications
+ <P></LI>
+
+ <LI>Support several calls to ORB_init() on the same thread.
+ <P></LI>
<LI><B>EC:</B> Call ORB_init() in the EC threads?
[The dispatching threads for Boeing]
<P></LI>
<LI><B>EC:</B> Build an EC example that uses all the cool features
- (multiple endpoints on each process, collocated EC and
- Scheduling Service, Naming, etc.)
+ (multiple ORBs on each process, collocated EC and Scheduling
+ service, Naming, etc.)
<P></LI>
<LI><B>EC:</B> Extend the Concurrency Service (or create a new
@@ -624,6 +546,11 @@ class POA_Foo {
<LI><B>EC:</B> Debug interval computation in Linux (and NT?)
<P></LI>
+ <LI><P>Remove the uneeded methods from CORBA::Object
+ <BR>[STATUS] This task seems to be complete
+ </P>
+ </LI>
+
<LI><B>IDL Compiler:</B> The IDL compiler could generate a static
method to access the interface repository ID of a class.
<P></LI>
@@ -643,8 +570,10 @@ class POA_Foo {
<BR>[STATUS] The user can control collocation, but we need a
dynamic way to do it (or an example) that exploits the Service
Configurator. We also may need to split the library.
- <BR>[STATUS] David added a mechanism to compile only the
- services that we want.
+ <P></LI>
+
+ <LI><B>EC:</B> Use the Service_Configurator to dynamically load
+ the EC Module_Factory thus making it really configurable.
<P></LI>
<LI><B>EC:</B> Cleanup the IDL structures for subscriptions,
@@ -691,22 +620,16 @@ class POA_Foo {
</P>
</LI>
- <LI><P>Test <CODE>Any</CODE> with variable sized types, such as
- structures that contain a string inside.
- Jeff reports that there is a
+ <LI><P>Test Any with variable sized types, such as structures
+ that contain a string inside. Jeff reports that there is a
problem when destroying Anys initialized with this types,
- even if the IDL compiler generated &lt&lt= operator is
- used.
- <BR>[STATUS] Many of the services do this kind of thing, for
- example the Trading service passes all kinds of data in
- Anys. The current version seems to be working , so this is
- not a high priority task.
+ even if the IDL compiler generated <<= operator is used.
</P>
</LI>
- <LI><P><B>IDL Compiler:</B> Include a regression test to verify
- that <CODE>octet</CODE> is <B>not</B> a valid discriminator
- for unions
+ <LI><P>Include a regression test to verify that
+ <CODE>octet</CODE> is <B>not</B> a valid discriminator for
+ unions
</P>
</LI>
@@ -716,29 +639,42 @@ class POA_Foo {
</P>
</LI>
- <LI><P><P><B>IDL Compiler:</B> Verify that the typecode for
- unions use a <CODE>octet</CODE> with value <CODE>0</CODE>
- for the default discriminator.
+ <LI><P>Verify that the typecode for unions use a
+ <CODE>octet</CODE> with value <CODE>0</CODE> for the default
+ discriminator
</P>
</LI>
- <LI><P><B>ORB:</B>
- Is the client side in TAO handling a
+ <LI><P>Is the client side in TAO handling a
<CODE>CloseConnection</CODE> GIOP message properly?
</P>
</LI>
- <LI><P><P><B>IDL Compiler:</B> In some platforms it may be
- necessary to add an extra value to an enum to force it to be
- 32-bits wide.
+ <LI><P>If the connection to the server cannot be established the
+ right exception is <CODE>TRANSIENT</CODE>, not
+ <CODE>COMM_FAILURE</CODE>; this and other exception
+ inconsistencies have to be checked
+ </P>
+ </LI>
+
+ <LI><P>The spec (CORBA 2.2, 20.17) defines accesor methods for the
+ fields of a <CODE>SystemException</CODE>.
</P>
</LI>
- <LI><P><B>POA:</B> The <CODE>SINGLE_THREAD_MODEL</CODE> for the
- POA requires that at most one concurrent call is invoked on
- each servant in that POA.
- <BR>[STATUS] Irfan is working on it as part of the POA
- concurrency fixes.
+ <LI><P>In some platforms it may be necessary to add an extra
+ value to an enum to force it to be 32-bits wide.
+ </P>
+ </LI>
+
+ <LI><P>The spec requires that strings as fields of structures be
+ initialized to the empty (not the null) string.
+ </P>
+ </LI>
+
+ <LI><P>The <CODE>SINGLE_THREAD_MODEL</CODE> for the POA requires
+ that the execution for all request on that POA happen on the
+ same thread.
</P>
</LI>
@@ -748,43 +684,54 @@ class POA_Foo {
</P>
</LI>
- <LI><P>Can <CODE>_duplicate()</CODE> raise an exception?
- If so the mapping that we generate is not correct for
- platforms without native C++ exceptions.
+ <LI><P>The <CODE>_duplicate()</CODE> and <CODE>_narrow()</CODE>
+ functions can throw exceptions, yet our mapping does not
+ contain an <CODE>CORBA::Environment</CODE> argument.
+ A similar problem ocurs with
+ <CODE>ORB::resolve_initial_references</CODE>, the ORB can
+ throw the <CODE>InvalidName</CODE> exception.
</P>
</LI>
- <LI><P><B>ORB:</B>
- The implementation for the leader-follower
+ <LI><P>Apparently the implementation for the leader-follower
model on the client side has bug:
it will add the current thread to the follower list every
time it returns from waiting in the condition variable,
assuming that it was signaled and removed every time.
- <BR>[STATUS] This is not a big problem because only a
- warning is printed out.
</P>
</LI>
- <LI><P><B>ORB:</B>
- By default TAO disables Nagle's algorithm, this should be
+ <LI><P>By default TAO disables Nagle's algorithm, this should be
an optional feature, otherwise TAO will perform poorly over
WANs.
- <BR>[STATUS] An alternative: this could be fixed as part of
- the real-time spec that introduces transport specific
- policies.
+ </P>
+ </LI>
+
+ <LI><P>Improve the connection recycling strategies, for
+ instance,
+ several strategies are possible: limit the maximum number of
+ open sockets, probably with both HWM and LWM bounds,
+ with different policies to choose the socket to close (LFU,
+ MRU?);
+ or maybe be more aggresive and recycle a socket once
+ all the object references pointing to a server are closed.
+ The later approach could be easily implemented if each
+ IIOP_Object held a reference to the set of sockets opened to
+ a certain TCP/IP address.
</P>
</LI>
<LI><P>Check that system calls like <CODE>recv()</CODE> and
<CODE>send()</CODE> are restarted if a signal is received by
the process while they are executing.
- <BR>[STATUS] In general this is done by ACE, but there have
- been bug reports related to this.
</P>
</LI>
- <LI><P><B>IDL Compiler:</B> The CORBA 2.3 spec clarifies the
- scope of a
+ <LI><P>Update the collocated test in Cubit
+ </P>
+ </LI>
+
+ <LI><P><B>IDL Compiler:</B> The CORBA 2.3 spec clarifies the scope of a
<CODE>#pragma prefix</CODE>:
the prefix is supposed to get cleared after each
<CODE>#include</CODE>,
@@ -820,6 +767,13 @@ class POA_Foo {
</P>
</LI>
+ <LI><P><B>IDL Compiler:</B> Tom Ziomek
+ &lt;tomz@cc.comm.mot.com&gt; reports that the IDL
+ compiler does not verify that <CODE>oneway</CODE> operations
+ cannot include a <CODE>raise</CODE> expression.
+ </P>
+ </LI>
+
<LI><P><B>IDL Compiler:</B> We must also check that oneways do
not contain any <CODE>out</CODE> or <CODE>inout</CODE>
parameters.
@@ -831,76 +785,6 @@ class POA_Foo {
instead of blocking directly on the <CODE>writev</CODE> call.
</P>
</LI>
-
- <LI><P><B>ORB:</B>
- When handling a forward request we may get forwarded to a
- collocated object.
- The typical scenario is a server that register with the
- Implementation Repository:
- if it creates an object reference to a local object the
- object reference will be pointing to the ImplRepo and
- potentially none of its profiles will match the local ones.
- Trying to contact the ImplRepo will result in a
- LOCATION_FORWARD exceptions (and/or a LocateReply) pointing
- to the local endpoints, but now we should use collocation.
- </P>
- </LI>
-
- <LI><P><B>ImplRepo:</B>
- How do the ImplRepo and pluggable protocols interact? What
- if the ImplRepo is using a protocol that is not implemented
- in the server? Or vice-versa?
- </P>
- </LI>
-
- <LI><P>We need support for the timeout policies specified in
- CORBAmessaging. The timeouts can control connection and
- total request time.
- </P>
- </LI>
-
- <LI><P><B>ORB:</B>
- Decouple the ORB from interpretive marshaling. This style of
- marshaling will not be required for many applications, and
- it increases the footprint significantly (around 10%).
- The tasks required are:
- <UL>
- <LI>Write one class per marshaling operation (encode,
- decode, skip, etc), instead of one class per type.
- This way we can extract out the operations we don't use.
- </LI>
- <LI>The IDL compiler could generate a
- <CODE>_tao_destroy</CODE> method, that would delete an
- object through a <CODE>void*</CODE>.
- Such an operation will allow us to implement
- <CODE>Any</CODE> without the <CODE>deep_free</CODE>
- operation.
- </LI>
- <LI>Optimize <CODE>append</CODE> to stop the recursion once
- the source and destination CDR streams have the same
- alignment.
- </LI>
- <LI>It seems like the <CODE>skip</CODE> operation is only
- used in the <CODE>Any</CODE> support.
- It may be possible to agressively reduce the footprint by
- removing both <CODE>skip</CODE> and <CODE>Any</CODE>.
- </LI>
- </UL>
- </P>
- </LI>
-
- <LI><P>The <CODE>TAO_Object_Manager</CODE> class needs an
- assigment operator from <CODE>T_var</CODE>.
- Either change the class to have two arguments or
- use the <CODE>T::_var_type</CODE> trait.
- We also have to change the class generated by the IDL
- compiler.
- Similar changes maybe required for the
- <CODE>TAO_String_Manager</CODE> and the
- <CODE>TAO_Object_Field</CODE> classes.
- </P>
- </LI>
-
<HR>
<!-- Things below this point are "big" tasks" that -->
@@ -1046,6 +930,7 @@ encapsulation format.
interpretive marshalling in the CORBAlite framework (where
TypeCodes don't have enough methods as to traverse them).
</P>
+ <P>
</LI>
<LI><P>Consider decompositions of the ORB that would allow
@@ -1111,197 +996,6 @@ encapsulation format.
<H3>Completed Tasks</H3>
<OL>
- <LI><P><B>EC:</B>The new implementation of the EC does not send
- <CODE>disconnect</CODE> messages on shutdown, this has to be
- implemented.
- <BR>[DONE]
- </P>
- </LI>
- <LI><P><B>EC:</B> Use the Service_Configurator to dynamically load
- the EC Module_Factory thus making it really configurable.
- The same feature is needed for the new
- <CODE>EC_Factory</CODE> class.
- <BR>[STATUS] Notice that this is fairly easy to implement,
- there doesn't seem to be much demand for it.
- <BR>[DONE] In the new EC it is possible to load the
- strategy factory.
- </P>
- </LI>
-
- <LI><P><B>EC:</B> The supplier filters could depend on the QoS
- data, as consumer filters do. We should provide a factory
- for them too.
- <BR>[DONE]
- </P>
- </LI>
-
- <LI><P><B>EC:</B> We need to provide simple operations to update
- the subscriptions of a consumer, as well as the publications
- of a supplier, the current scheme (disconnecting and
- connecting again) is inefficient.
- <BR>[ASSIGNED TO:] Carlos
- <BR>[DONE]
- </P>
- </LI>
-
- <LI><P><B>IDL Compiler:</B> Tom Ziomek
- &lt;tomz@cc.comm.mot.com&gt; reports that the IDL
- compiler does not verify that <CODE>oneway</CODE> operations
- cannot include a <CODE>raise</CODE> expression.
- <BR>[DONE] Andy fixed this.
- </P>
- </LI>
-
- <LI><P>The <CODE>_duplicate()</CODE> and <CODE>_narrow()</CODE>
- functions can throw exceptions, yet our mapping does not
- contain an <CODE>CORBA::Environment</CODE> argument.
- A similar problem ocurs with
- <CODE>ORB::resolve_initial_references</CODE>, the ORB can
- throw the <CODE>InvalidName</CODE> exception.
- <BR>[DONE] But the status of <CODE>_duplicate()</CODE>
- remains, I added an entry for it.
- </P>
- </LI>
-
- <LI><P>The spec requires that strings as fields of structures be
- initialized to the empty (not the null) string.
- <BR>[DONE] Andy this this is the <CODE>String_Manager</CODE>
- class.
- </P>
- </LI>
-
- <LI><P>The spec (CORBA 2.2, 20.17) defines accesor methods for the
- fields of a <CODE>SystemException</CODE>.
- <BR>[DONE]
- </P>
- </LI>
-
- <LI><P>Remove the unneeded methods from CORBA::Object
- <BR>[STATUS] This task seems to be complete
- <BR>[DONE]
- </P>
- </LI>
-
- <LI><P>Support the Sun bootstrapping mechanism for the Naming
- Service
- <BR>[STATUS] Replaced by the interoperable naming service
- bootstraping.
- </P>
- </LI>
-
- <LI><P>Integrate the compiled marshalling approach.
- <BR>[STATUS] Andy has made great progress on this.
- <BR>[DONE]
- </P>
- </LI>
- <LI><P>Verify the GPERF is working in all the relevant
- platforms.
- <BR>[STATUS] As far as we know it is working correctly.
- <BR>[DONE]
- </P>
- </LI>
- <LI><P>Integrate active demux of operations?
- <BR>[STATUS] We use perfect hashing instead.
- <P>
- </LI>
-
- <LI><P>Several helper structs for <CODE>Any</CODE> have to be
- added, mainly: <CODE>to_object</CODE>, <CODE>to_wchar</CODE>,
- <CODE>to_wstring</CODE> and their <CODE>from_</CODE>
- <BR>[DONE] Jeff added them to the Any class, later they were
- moved to the CDR streaming classes because they are needed
- there too.
- </P>
- </LI>
-
- <LI><P>Add a <CODE>corbafwd.h</CODE> header file to eliminate
- the deep (and recursive) header dependencies in TAO.
- <BR>[DONE]
- </P>
- </LI>
-
- <LI><P>In the collocated case the generated
- <CODE>_narrow()</CODE> method calls the
- <CODE>_create_stub()</CODE> method that allocates several
- temporary objects.
- <BR>[DONE]
- </P>
- </LI>
-
- <LI><P>For various projects, we need to produce a
- minimal-footprint TAO ORB. One thing we could probably do
- very easily would be to provide an #ifdef that will
- conditionally omit the servant manager, POA manager, and
- adapter activator features from TAO, along with all the
- demuxing features that aren't active demuxing or perfect
- hashing.
- <BR>[DONE] Irfan implemented exactly this. We still have
- room for more footprint size optimizations, but they are
- second order things.
- </P>
- </LI>
-
- <LI><P>Add support for multiple Profiles in the ORB (completing
- the IIOP 1.0 support)
- <BR>[ASSIGNED TO:] Fred
- <BR>[DONE] Fred added support for multiple profiles as part
- of the pluggable protocols effort.
- </P>
- </LI>
-
- <LI><P><B>EC:</B> The current architecture of the real-time
- Event Channel does not support some features, such as:
- <UL>
- <LI><P><B>EC:</B> Some applications are both suppliers and
- consumers of events,
- they may be interested in all the
- events of type <B>T</B> unless the event is generated
- by them.
- </LI>
- <LI><P><B>EC:</B> Can we factor out the scheduling service from
- the EC?
- </P>
- </LI>
-
- <LI><P><B>EC:</B> The reactive event channel can eliminate
- data copies because the data does not need to survive
- after the <CODE>push()</CODE> call.
- </P>
- </LI>
-
- <LI><P><B>EC:</B> Many applications require to intercept
- the EC event processing, for example to keep track of
- the number of events received and sent.
- This requires strategized factories for many (if not
- all) of the Event Channel internal servants.
- </P>
- </LI>
-
- <LI><P><B>EC:</B> Some applications require ad-hoc
- filters, such as "this events must arrive in
- sequence", or "wait for all this events and then send
- this other event".
- </P>
- </LI>
-
- <!-- This is Boeing specific -->
- <LI><P><B>EC:</B> For some applications it is insteresting
- to activate the EC servants (such as the
- ConsumerProxys) in different POAs
- </P>
- </LI>
-
- </UL>
- We have completed a new design for the real-time event
- channel that will let us implement all this features (and
- others).
- <BR>[DONE] The new implementation is working, we have to add
- several strategies and stress test it, but the architecture
- seems sound.
- <BR>[ASSIGNED TO:] Carlos
- </P>
- </LI>
-
<LI><P><B>IDL Compiler:</B>The IDL compiler could generate files
with empty
implementation classes, just to make the life of implementors