diff options
Diffstat (limited to 'TAO/docs/releasenotes/TODO.html')
-rw-r--r-- | TAO/docs/releasenotes/TODO.html | 726 |
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 <jaehrig@desys.com>>;, 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 - <jaehrig@desys.com>, 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 << and >> 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 <<= 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 + <tomz@cc.comm.mot.com> 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 - <tomz@cc.comm.mot.com> 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 |