Previous Table of Contents Next


7.3.2 get_next_response and poll_next_response


   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.