diff options
author | Ossama Othman <ossama-othman@users.noreply.github.com> | 2007-01-30 01:00:39 +0000 |
---|---|---|
committer | Ossama Othman <ossama-othman@users.noreply.github.com> | 2007-01-30 01:00:39 +0000 |
commit | 1aad8cb8c4e505a8ae39d4059ebec8799e943655 (patch) | |
tree | c65859cb1a47c7aaeb270d75e156f35c768ed089 /TAO/tao/Collocated_Invocation.cpp | |
parent | 711cbc63d109836fc6227b2799ea839d6f3e95da (diff) | |
download | ATCD-remove-tao-exception-specifications.tar.gz |
ChangeLogTag:Mon Jan 30 00:10:57 UTC 2007 Ossama Othman <ossama_othman at symantec dot com>remove-tao-exception-specifications
Diffstat (limited to 'TAO/tao/Collocated_Invocation.cpp')
-rw-r--r-- | TAO/tao/Collocated_Invocation.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/TAO/tao/Collocated_Invocation.cpp b/TAO/tao/Collocated_Invocation.cpp index ee4d5e23f80..f71d7b35a32 100644 --- a/TAO/tao/Collocated_Invocation.cpp +++ b/TAO/tao/Collocated_Invocation.cpp @@ -5,6 +5,7 @@ #include "tao/TAO_Server_Request.h" #include "tao/Stub.h" #include "tao/operation_details.h" +#include "tao/PortableInterceptor.h" #if TAO_HAS_INTERCEPTORS == 1 # include "tao/PortableInterceptorC.h" @@ -116,7 +117,7 @@ namespace TAO } catch ( ::CORBA::Exception& ex) { - // Ignore exceptions for oneways + // Ignore CORBA exceptions for oneways if (this->response_expected_ == false) return TAO_INVOKE_SUCCESS; @@ -130,9 +131,25 @@ namespace TAO else #else ACE_UNUSED_ARG (ex); -#endif /*TAO_HAS_INTERCEPTORS*/ +#endif /* TAO_HAS_INTERCEPTORS */ throw; } +#if TAO_HAS_INTERCEPTORS == 1 + catch (...) + { + // Notify interceptors of non-CORBA exception, and propagate + // that exception to the caller. + + PortableInterceptor::ReplyStatus const st = + this->handle_all_exception (); + + if (st == PortableInterceptor::LOCATION_FORWARD || + st == PortableInterceptor::TRANSPORT_RETRY) + s = TAO_INVOKE_RESTART; + else + throw; + } +#endif /* TAO_HAS_INTERCEPTORS == 1 */ if (this->forwarded_to_.in () != 0) s = TAO_INVOKE_RESTART; |