void TAO_AMH_DSI_Response_Handler::gateway_exception_reply ( CORBA::ULong reply_status, TAO_OutputCDR & encap) { // for this to be effective, ACE & TAO must be built with // ACE_ENABLE_SWAP_ON_WRITE defined in ace/config.h this->_tao_out.reset_byte_order (encap.byte_order ()); // This reply path handles only user exceptions. switch (reply_status) { case TAO_AMI_REPLY_USER_EXCEPTION: this->reply_status_ = GIOP::USER_EXCEPTION; break; case TAO_AMI_REPLY_SYSTEM_EXCEPTION: this->reply_status_ = GIOP::SYSTEM_EXCEPTION; break; // TODO: we don't handle location forward at this moment. // need to be addressed later. // //case TAO_PLUGGABLE_MESSAGE_LOCATION_FORWARD: // this->exception_type_ = TAO_GIOP_LOCATION_FORWARD; // break; } try { this->_tao_rh_init_reply (); // We know nothing about this exception, so we marshal it as a block // of bytes. The outgoing stream's byte order has already been matched // to the original source of the reply. this->_tao_out.write_char_array (encap.buffer (), encap.length ()); // This will prevent the marshaling of any parameters into this reply. // this->sent_gateway_exception_ = 1; this->_tao_rh_send_reply (); } catch (const CORBA::Exception &) { // TODO: } }