void DSI_Simple_Server::invoke (CORBA::ServerRequest_ptr request, TAO_AMH_DSI_Response_Handler * rph) { CORBA::NVList_ptr opList; this->orb_->create_list (0, opList); request->arguments (opList); CORBA::Request_var target_request; this->target_->_create_request (0, // ctx request->operation (), opList, 0, // result 0, // exception_list, 0, // context_list, target_request.inout (), 0); target_request->_tao_lazy_evaluation (1); // Outgoing request must have the same byte order as the incoming one. target_request->_tao_byte_order (request->_tao_incoming_byte_order ()); try { // Updates the byte order state, if necessary. TAO_DII_Reply_Handler_ptr rh_ptr; ACE_NEW (rh_ptr, My_DII_Reply_Handler (rph, this->orb_)); TAO_DII_Reply_Handler_var rh(rh_ptr); target_request->sendc (rh.in()); } catch (const CORBA::UNKNOWN&) { // Outgoing reply must have the same byte order as the incoming one. request->_tao_reply_byte_order (target_request->_tao_byte_order ()); request->gateway_exception_reply ( target_request->raw_user_exception ()); return; } // Outgoing reply must have the same byte order as the incoming one. request->_tao_reply_byte_order (target_request->_tao_byte_order ()); if (ACE_OS::strcmp ("shutdown", request->operation ()) == 0) { this->orb_->shutdown (0); } }
void DSI_Simple_Server::invoke (CORBA::ServerRequest_ptr request) { CORBA::NVList_ptr list; this->orb_->create_list (0, list); request->arguments (list); CORBA::Request_var target_request; this->target_->_create_request (0, // ctx request->operation (), list, 0, // result 0, // exception_list, 0, // context_list, target_request.inout (), 0); target_request->_tao_lazy_evaluation (1); // Outgoing request must have the same byte order as the incoming one. target_request->_tao_byte_order (request->_tao_incoming_byte_order ()); try { // Updates the byte order state, if necessary. target_request->invoke (); } catch (const CORBA::UNKNOWN&) { // Outgoing reply must have the same byte order as the incoming one. request->_tao_reply_byte_order (target_request->_tao_byte_order ()); request->gateway_exception_reply (target_request->raw_user_exception ()); return; } // Outgoing reply must have the same byte order as the incoming one. request->_tao_reply_byte_order (target_request->_tao_byte_order ()); if (ACE_OS::strcmp ("shutdown", request->operation ()) == 0) { this->orb_->shutdown (0); } }