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.html512
1 files changed, 235 insertions, 277 deletions
diff --git a/TAO/docs/releasenotes/TODO.html b/TAO/docs/releasenotes/TODO.html
index 52c665052f0..f74be91a90c 100644
--- a/TAO/docs/releasenotes/TODO.html
+++ b/TAO/docs/releasenotes/TODO.html
@@ -211,7 +211,8 @@
</P>
</LI>
- <LI><P>Use GIOP 1.1 fragments to minimize the buffer allocations:
+ <LI><P>One GIOP 1.1 is implemented we could use fragments to
+ minimize the buffer allocations:
the buffer could be fixed size and we simply send fragments
for each buffer.
</P>
@@ -250,11 +251,6 @@
</P>
</LI>
- <LI><P>A new spec for Dynamic Any has been published and will
- probably be part of CORBA 2.4. There are a great many
- changes, leaving almost no area of the current implementation
- untouched.
-
</OL>
<H4>New features and Bug fixes</H4>
@@ -349,14 +345,135 @@
</P>
</LI>
- <LI><P><B>ORB: </B> Stress test the ORB in the presence of
- exceptions, verifying that no resources are leaked, all
- locks are released, etc.
- </P>
- <P>Note: small experiments indicate that everything is OK, and
- several tests raise exceptions without problems, but we need
- an intensive test of this features.
- </P>
+ <LI><P>Support native C++ exceptions.
+ This entails the following subtasks:<P>
+ <OL>
+ <LI>Create exceptions with the right dynamic type on the
+ client side.
+ For SII this should be simple:
+ the stub give us a list of the
+ possible user exceptions together with the factory methods
+ to allocate an exception of each type;
+ if the exception is not on that list we throw a
+ <CODE>CORBA::UNKNOWN</CODE>.
+ For DII we have to throw a
+ <CODE>CORBA::UnknownUserException</CODE>;
+ the user will receive the real exception inside an
+ <CODE>Any</CODE> then and she will have to extract it
+ either using the &gt&gt= operator or using the
+ forthcoming <CODE>DynAny</CODE>.
+ System exceptions are even easier, we always know how
+ to create them.
+ <BR>[STATUS] SII is working OK, we still need to complete
+ the support for DII.
+ <BR>[STATUS] The DII support was completed, but remains
+ untested.
+ <P></LI>
+
+ <LI>Add the _raise() method to the exceptions.
+ <BR>[DONE]
+ <P></LI>
+
+ <LI>On the server side: catch any CORBA exceptions thrown by
+ the upcall, and then transform that into the
+ proper <CODE>Reply</CODE> to the client side.
+ In the case of another C++ exception should we do
+ something?
+ <BR>[DONE]
+ <P></LI>
+
+ <LI>On the client side, after creating the exception with
+ the right dynamic type we must invoke
+ <CODE>_raise()</CODE> on it.
+ <BR>[DONE]
+ <P></LI>
+
+ <LI>Provide a TSS default value for the CORBA_Environment,
+ all the methods in the ORB library should use this
+ default.
+ <BR>[DONE]
+ <P></LI>
+
+ <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
+ 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>We need to test the ORB for resource leaking in the
+ presence of exceptions.
+ <P></LI>
+
+ <LI>We <EM>could</EM> write portable server side code with
+ any of the mappings above if we use a macro for the env
+ argument, but the results are ugly:
+ <PRE>
+// IDL
+interface Foo {
+ void bar (in long x);
+};
+
+// C++
+class Foo {
+ void bar (CORBA::Long x TAO_ENV_ARG)
+ TAO_THROW_SPEC ((CORBA::SystemException));
+};
+ </PRE>
+ note the missing comma before the TAO_ENV_ARG parameter.
+ <P>
+ </P> A different alternative is to generate both
+ functions, and make the default implementation just invoke
+ the other:
+ <PRE>
+// IDL
+interface Foo {
+ void bar (in long x);
+};
+
+// C++
+class POA_Foo {
+ void bar (CORBA::Long x, CORBA::Environment& env)
+ TAO_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->bar (x);
+ }
+ void bar (CORBA::Long x)
+ TAO_THROW_SPEC ((CORBA::SystemException)) = 0;
+};
+ </PRE>
+ The problem is: which alternative should be the pure
+ virtual function? Which one is overriden by the user?
+ <P></LI>
+
+ </OL>
+ <BR>[STATUS] The main task ahead is to generate the conforming
+ mapping for the server side, i.e. remove the
+ <CODE>CORBA::Environment</CODE> argument and generate the
+ throw specs.
+ We need to wait for the compiled marshaling support to
+ implement this feature, otherwise the number of conflicts,
+ visitors and factories will grow without limit.
+ </P>
</LI>
<LI><P><B>EC:</B> Automate EC multicast group usage. This probably
@@ -393,13 +510,18 @@
</P>
</LI>
- <LI><P><B>ORB: </B> Use the IIOP 1.1 profile info to pass QoS
- info and use it to preserve end-to-end QoS.
- <BR>[STATUS] The tagged component for encoding QoS
- information was created, but the server does not create it,
- neither does the client use that information.
- </P>
- </LI>
+ <LI>Support GIOP 1.1 in the ORB (fragments)
+ <P></LI>
+
+ <LI>Support IIOP 1.1 in the ORB
+ <P></LI>
+
+ <LI>Use the IIOP 1.1 profile info to pass QoS info and use it to
+ preserve end-to-end QoS.
+ <P></LI>
+
+ <LI>Support IIOP 1.2 in the ORB
+ <P></LI>
<LI>The size of pre-allocated buffer for the outgoing CDR
streams is defined at compilation time; but if we use an
@@ -411,11 +533,23 @@
number of calls to ORB_Core_instance()
<P></LI>
+ <LI><B>IDL Compiler:</B> The IDL compiler front-end should be
+ case insensitive,
+ more precisely it should flag identifiers that only differ by
+ case as a conflict and verify that all uses of an identifier
+ have the same case.
+ <P></LI>
+
<LI><B>IDL Compiler:</B> The operation tables do not need to be
statics, they could be created on creation of the first
servant of that type.
<P></LI>
+ <LI><B>IDL Compiler:</B>Support for unions with default cases
+ (implicit or explicit)
+ 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.
@@ -426,12 +560,9 @@
type in the IDL compiler
<P></LI>
- <LI><P>CDR stream support for <CODE>wchar</CODE> is flaky or at
- least untested.
- <BR>[STATUS] This is slowly beign implemented, and so are
- codeset translators inside the CDR streams.
- </P>
- </LI>
+ <LI>CDR stream support for <CODE>wchar</CODE> is flaky or at
+ least untested.
+ <P></LI>
<LI>Add &lt&lt and &gt&gt operators to the
<CODE>CORBA::Request</CODE> class, to simplify DII invocations
@@ -447,6 +578,26 @@
</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>
+ <LI>We must keep a table of ORB pointers based on the
+ <CODE>-ORBid</CODE> option.
+ </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>
+ </UL>
+ </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
@@ -470,10 +621,22 @@
startup/shutdown.
<P></LI>
+ <LI><B>EC:</B> Debug interval computation in Linux (and NT?)
+ <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>
+ <LI><B>IDL Compiler:</B> The IDL compiler should support
+ <CODE>#include "orb.idl"</CODE> properly.
+ IMHO it should not
+ add any <CODE>#include</CODE> to the generated code and the
+ <CODE>orb.idl</CODE> file should contain all the declarations,
+ except for the pseudo objects that are should be hardcoded
+ into the compiler.
+ <P></LI>
+
<LI>The current scheme for the orbsvcs leaves the user without
control over collocation of servants, we need to move to a scheme
similar to the one in $ACE_ROOT/netsvcs.
@@ -510,6 +673,11 @@
</UL>
<P></LI>
+ <LI><P><B>IDL Compiler:</B> The methods on the server side
+ <B>must</B> have a throw spec, check CORBA 2.2, 20.35
+ </P>
+ </LI>
+
<LI><P>According to Vinoski and Henning the
<CODE>CORBA::Policy</CODE> objects are also locality
constrained.
@@ -566,6 +734,14 @@
</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.
+ </P>
+ </LI>
+
<LI><P><CODE>$TAO_ROOT/orbsvcs/tests</CODE> may require the same
hierarchy changes that were done in
<CODE>$TAO_ROOT/tests</CODE>.
@@ -579,6 +755,17 @@
</LI>
<LI><P><B>ORB:</B>
+ 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
an optional feature, otherwise TAO will perform poorly over
WANs.
@@ -666,6 +853,12 @@
</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
@@ -692,21 +885,27 @@
It may be possible to agressively reduce the footprint by
removing both <CODE>skip</CODE> and <CODE>Any</CODE>.
</LI>
- <LI>Exceptions are marshaled using the interpretive engine,
- there is no reason why the skeletons couldn't do that job.
- </LI>
</UL>
</P>
</LI>
- <HR></HR>
+ <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 -->
<!-- could require major work -->
- <LI><P><B>ORB: </B>Support IIOP 1.2 in the ORB</P>
- </LI>
-
<LI><P>Provide mechanisms to marshal arguments into a CDR
stream, Jon Biggar contributed his proposal to the CORBA 2.3
RTF:
@@ -911,249 +1110,8 @@ encapsulation format.
<HR><P>
<H3>Completed Tasks</H3>
- <OL>
- <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.
- <BR>[DONE] Bala implemented this feature.
- </P>
- </LI>
-
- <LI><P><B>ORB:</B>
- 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.
- <BR>[DONE]
- </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.
- <BR>[DONE]
- </P>
- </LI>
-
- <LI><P><B>IDL Compiler:</B> The methods on the server side
- <B>must</B> have a throw spec, check CORBA 2.2, 20.35
- <BR>[DONE] Andy implemented this as part of the support for
- native C++ exceptions.
- </P>
- </LI>
-
- <LI><P><B>IDL Compiler:</B> The IDL compiler should support
- <CODE>#include "orb.idl"</CODE> properly.
- IMHO it should not
- add any <CODE>#include</CODE> to the generated code and the
- <CODE>orb.idl</CODE> file should contain all the declarations,
- except for the pseudo objects that are should be hardcoded
- into the compiler.
- <BR>[DONE] Jeff (and others?) implemented this feature, the
- contents of the &lt;orb.idl&gt; file may need some work, but that
- is easy to fix.
- </P>
- </LI>
-
- <LI><P><B>EC:</B> Debug interval computation in Linux (and NT?)
- <BR>[DONE] There was a problem with the ACE_High_Res_Timer
- initialization.
- </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.
- <BR>[DONE]
- </LI>
- <LI>We must keep a table of ORB pointers based on the
- <CODE>-ORBid</CODE> option.
- <BR>[DONE]
- </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.
- <BR>[POSTPONED] The new cached connector implementation
- will change this anyway.
- </LI>
- </UL>
- </P>
- </LI>
-
- <LI><P><B>IDL Compiler:</B>Support for unions with default cases
- (implicit or explicit)
- in the IDL compiler is incomplete.
- <BR>[DONE] Andy implemented this features.
- </P>
- </LI>
-
- <LI><P><B>IDL Compiler:</B> The IDL compiler front-end should be
- case insensitive,
- more precisely it should flag identifiers that only differ by
- case as a conflict and verify that all uses of an identifier
- have the same case.
- <BR>[DONE] Jeff implemented this feature, there is an option
- to disable it for backwards compatibility.
- </P>
- </LI>
-
- <LI><P>Support GIOP 1.1 in the ORB (fragments)
- <BR>[DONE] The ORB should be able to receive GIOP
- </P>
- <P></LI>
-
- <LI>Support IIOP 1.1 in the ORB
- <P></LI>
-
- <LI><P>Support native C++ exceptions.
- This entails the following subtasks:<P>
- <OL>
- <LI>Create exceptions with the right dynamic type on the
- client side.
- For SII this should be simple:
- the stub give us a list of the
- possible user exceptions together with the factory methods
- to allocate an exception of each type;
- if the exception is not on that list we throw a
- <CODE>CORBA::UNKNOWN</CODE>.
- For DII we have to throw a
- <CODE>CORBA::UnknownUserException</CODE>;
- the user will receive the real exception inside an
- <CODE>Any</CODE> then and she will have to extract it
- either using the &gt&gt= operator or using the
- forthcoming <CODE>DynAny</CODE>.
- System exceptions are even easier, we always know how
- to create them.
- <BR>[STATUS] SII is working OK, we still need to complete
- the support for DII.
- <BR>[STATUS] The DII support was completed, but remains
- untested.
- <P></LI>
-
- <LI>Add the _raise() method to the exceptions.
- <BR>[DONE]
- <P></LI>
-
- <LI>On the server side: catch any CORBA exceptions thrown by
- the upcall, and then transform that into the
- proper <CODE>Reply</CODE> to the client side.
- In the case of another C++ exception should we do
- something?
- <BR>[DONE]
- <P></LI>
-
- <LI>On the client side, after creating the exception with
- the right dynamic type we must invoke
- <CODE>_raise()</CODE> on it.
- <BR>[DONE]
- <P></LI>
-
- <LI>Provide a TSS default value for the CORBA_Environment,
- all the methods in the ORB library should use this
- default.
- <BR>[DONE]
- <P></LI>
-
- <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
- standard mapping, without the environment argument.
- <BR>[DONE]
- <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>We need to test the ORB for resource leaking in the
- presence of exceptions.
- <P></LI>
-
- <LI>We <EM>could</EM> write portable server side code with
- any of the mappings above if we use a macro for the env
- argument, but the results are ugly:
- <PRE>
-// IDL
-interface Foo {
- void bar (in long x);
-};
-
-// C++
-class Foo {
- void bar (CORBA::Long x TAO_ENV_ARG)
- TAO_THROW_SPEC ((CORBA::SystemException));
-};
- </PRE>
- note the missing comma before the TAO_ENV_ARG parameter.
- <P>
- </P> A different alternative is to generate both
- functions, and make the default implementation just invoke
- the other:
- <PRE>
-// IDL
-interface Foo {
- void bar (in long x);
-};
-
-// C++
-class POA_Foo {
- void bar (CORBA::Long x, CORBA::Environment& env)
- TAO_THROW_SPEC ((CORBA::SystemException))
- {
- this->bar (x);
- }
- void bar (CORBA::Long x)
- TAO_THROW_SPEC ((CORBA::SystemException)) = 0;
-};
- </PRE>
- The problem is: which alternative should be the pure
- virtual function? Which one is overriden by the user?
- <P></LI>
-
- </OL>
- <BR>[STATUS] The main task ahead is to generate the conforming
- mapping for the server side, i.e. remove the
- <CODE>CORBA::Environment</CODE> argument and generate the
- throw specs.
- We need to wait for the compiled marshaling support to
- implement this feature, otherwise the number of conflicts,
- visitors and factories will grow without limit.
- </P>
- </LI>
-
- <LI><P><B>EC:</B>The new implementation of the EC does not send
+ <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]