diff options
author | mk1 <mk1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-09-20 15:58:28 +0000 |
---|---|---|
committer | mk1 <mk1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-09-20 15:58:28 +0000 |
commit | 9cbbe498a14720378b4608eee4ecd8960dc75d21 (patch) | |
tree | ce65a10cb339175e5f356ae8305fd7f250c56846 /TAO/tao/Reply_Dispatcher.cpp | |
parent | a04efb760083570830244255a306bb70cccb6ce6 (diff) | |
download | ATCD-9cbbe498a14720378b4608eee4ecd8960dc75d21.tar.gz |
ChangeLogTag: Mon Sep 20 11:00:00 1999 Michael Kircher <Michael.Kircher@mchp.siemens.de>
Diffstat (limited to 'TAO/tao/Reply_Dispatcher.cpp')
-rw-r--r-- | TAO/tao/Reply_Dispatcher.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/TAO/tao/Reply_Dispatcher.cpp b/TAO/tao/Reply_Dispatcher.cpp index 1fe628db115..fb6f789d476 100644 --- a/TAO/tao/Reply_Dispatcher.cpp +++ b/TAO/tao/Reply_Dispatcher.cpp @@ -178,12 +178,49 @@ TAO_Asynch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status, "(%P | %t):TAO_Asynch_Reply_Dispatcher::dispatch_reply:\n")); } + // @@ Michael: Addition + // Check the reply error. + + // @@Michael: Do this. I think we have to marshal + // it in order to be able to handle it as the other exceptions. + // if (this->reply_status_ == -1) + // ACE_THROW_RETURN (CORBA::COMM_FAILURE ( + // CORBA_SystemException::_tao_minor_code ( + // TAO_INVOCATION_RECV_REQUEST_MINOR_CODE, + // errno), + // CORBA::COMPLETED_MAYBE), + // TAO_INVOKE_EXCEPTION); + + // @@ Michael: We need to refine the following. + CORBA::ULong reply_error = TAO_AMI_REPLY_NOT_OK; + switch (reply_status) + { + case TAO_GIOP_NO_EXCEPTION: + reply_error = TAO_AMI_REPLY_OK; + break; + case TAO_GIOP_USER_EXCEPTION: + reply_error = TAO_AMI_REPLY_USER_EXCEPTION; + break; + case TAO_GIOP_SYSTEM_EXCEPTION: + reply_error = TAO_AMI_REPLY_SYSTEM_EXCEPTION; + break; + default: + case TAO_GIOP_LOCATION_FORWARD: + // @@ Michael: Not even the spec mentions this case. + // We have to think about this case. + // Handle the forwarding and return so the stub restarts the + // request! + reply_error = TAO_AMI_REPLY_NOT_OK; + break; + } + CORBA::Environment &ACE_TRY_ENV = TAO_default_environment (); ACE_TRY { // Call the Reply Handler's skeleton. reply_handler_skel_ (message_state_->cdr, reply_handler_, + reply_error, ACE_TRY_ENV); } ACE_CATCHANY |