Previous | Table of Contents | Next |
module CORBA {
interface Request; // forward declaration
typedef sequence <Request> RequestSeq;
interface ORB { . . . . . .
boolean poll_next_response();
void get_next_response(
out Request req ) raises (WrongTransaction); }; };
Poll_next_response determines whether any request has completed. A TRUE return indicates that at least one has; FALSE indicates
that none have completed. Return is immediate, whether any response has completed or not.
Get_next_response returns the next request that completes. Despite the name, there is no guaranteed ordering among the completed
requests, so the order in which they are returned from successive get_next_response calls is not necessarily related to the
order in which they finish.
A request has an associated transaction context if the thread originating the request had a non-null transaction context and
the target object is a transactional object. The get_next_response operation may raise the WrongTransaction exception if the
request has an associated transaction context, and the thread invoking get_next_response has a non-null transaction context
that differs from that of the request.
Calling poll_response before send or send_multiple_requests for that request raises BAD_INV_ORDER with standard minor code
11. Calling poll_response after calling invoke raises BAD_INV_ORDER with standard minor code 13. Calling poll_response after
calling get_response raises BAD_INV_ORDER with standard minor code 12. Calling poll_response after that request was returned
by get_next_response raises BAD_INV_ORDER with standard minor code 12.
Calling get_next_response or poll_next_response at a time when no requests are outstanding raises BAD_INV_ORDER with standard
minor code 11. If concurrent calls to get_next_response or poll_next_response are in progress, the exact outcome is implementation
dependent; however, get_next_response is guaranteed not to return the same completed request to more than one caller.