- 
                            Key: CORBA3-10
- 
                            Legacy Issue Number: 3541
- 
                            Status: closed
- 
                            Source: UBS ( Hans Kneubuehl)
- 
                            Summary:When using the pollable sets, pollers are registered with 
 PollableSet::add_pollable() and retrieved using
 PollableSet::get_ready_pollable(). As pollers are valuetypes they are passed by
 copy, thus portable applications must assume that get_ready_pollable() returns
 a different poller instance than the one passed to add_pollable(). Thus, with
 non-TII, currently there is no portable way to find out how requests
 (represented by the pollers returned from sendp) and replies (represented by
 the pollers returned from get_ready_pollable ) correlate.Consider the following IDL: module Stock { long get_quote(in string stock_name); }
 {
 interface Quoter}; and a client that does a 1000 invocations in the style poller = quoter->sendp_get_quote(portfolio[i].stock_name); 
 poll_set->add_pollable(poller);Now, the client could retrieve the 1000 replies in the order: while(poll_set->number_left() > 0) { pollable = poll_set->get_ready_pollable(timeout); ... }
 ; But how can the client find out which returned quote belongs to which 
 stock_name?Possible resolutions: 
 ---------------------
 (a) Reconsider the introduction of a correlation id on pollers which can be
 used to compare if two pollers are referring to the same request/reply.(b) Based on the fact that pollable set is locality-constrained and that 
 valuetypes support sharing semantics (see CORBA 2.3, 5.2.4.2 Sharing
 Semantics), it could be required that PollableSet::get_ready_pollable() returns
 a pointer to the same valuetype instance as the one passed as argument of
 PollableSet::add_pollable().(c) Close without action, i.e. has to be solved at the application level, e.g. 
 in our example the application would have to solve this by changing get_quote tolong get_quote(in string stock_name, out string stock_name); Discussion: 
 -----------
 (c) contradicts with the CORBA Messaging Philosophy that AMI is a mere
 client-side issue and that in principle any existing target can be called
 asynchronously.(b) means that we would have two different polling-related correlation 
 mechanisms:- one for correlating requests and replies in different processes based on the
 PersistentRequest objref
- one for correlating requests and replies in the same process based on poller
 pointers
 (a) means that a generic correlation mechanism is defined that covers both: 
 intra- and inter-process correlation. This was variant (a) of issue 2803 in the
 latest vote. It failed with 5 NO : 4 YES : 3 ABSTAIN.I could work out two straw men for (a) and (b) for the next vote, or much 
 better, we could try to discuss this before the next vote and just work out a
 straw man for the variant that has better acceptance.
- one for correlating requests and replies in different processes based on the
- 
                            Reported: CPP 1.1 — Mon, 10 Apr 2000 04:00 GMT
- 
                            Disposition: Resolved — CORBA 3.0.2
- 
                            Disposition Summary:close no change 
- 
                            Updated: Fri, 6 Mar 2015 20:58 GMT
CORBA3 — How correlate requests and replies when using pollable sets?
- Key: CORBA3-10
- OMG Task Force: Core 2002 RTF