summaryrefslogtreecommitdiff
path: root/TAO/tao/Reply_Dispatcher.cpp
diff options
context:
space:
mode:
authormk1 <mk1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-09-20 15:58:28 +0000
committermk1 <mk1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-09-20 15:58:28 +0000
commit9cbbe498a14720378b4608eee4ecd8960dc75d21 (patch)
treece65a10cb339175e5f356ae8305fd7f250c56846 /TAO/tao/Reply_Dispatcher.cpp
parenta04efb760083570830244255a306bb70cccb6ce6 (diff)
downloadATCD-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.cpp37
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