summaryrefslogtreecommitdiff
path: root/TAO
diff options
context:
space:
mode:
authorbala <balanatarajan@users.noreply.github.com>2003-12-09 01:35:48 +0000
committerbala <balanatarajan@users.noreply.github.com>2003-12-09 01:35:48 +0000
commit98393471e8834cd2fc4eb1342cd366b9b0c5d687 (patch)
tree3231278000b67d49165cf4f647f2708ad2638a79 /TAO
parent45cc5f98f731753827ae448101d35acab255aed0 (diff)
downloadATCD-98393471e8834cd2fc4eb1342cd366b9b0c5d687.tar.gz
ChangeLogTag:Mon Dec 8 19:33:03 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
Diffstat (limited to 'TAO')
-rw-r--r--TAO/ChangeLog13
-rw-r--r--TAO/tao/Messaging/Asynch_Invocation.cpp2
-rw-r--r--TAO/tao/Synch_Invocation.cpp40
3 files changed, 40 insertions, 15 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 2287c70eb89..8aaf2be0473 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,16 @@
+Mon Dec 8 19:33:03 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tao/Synch_Invocation.cpp:
+
+ Fixed a minor problem with reinvocation. We were not handling
+ errors properly, more precisely the retsrat errors if they show
+ up during wait_for_reply (). Thanks to Milan Cvetkovic for
+ motivating this change.
+
+ * tao/Messaging/Asynch_Invocation.cpp:
+
+ Cosmetic change.
+
Mon Dec 8 18:50:58 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
* TAO_IDL/ast/ast_decl.cpp:
diff --git a/TAO/tao/Messaging/Asynch_Invocation.cpp b/TAO/tao/Messaging/Asynch_Invocation.cpp
index 21fde283895..d7801b73489 100644
--- a/TAO/tao/Messaging/Asynch_Invocation.cpp
+++ b/TAO/tao/Messaging/Asynch_Invocation.cpp
@@ -138,8 +138,6 @@ namespace TAO
if (s != TAO_INVOKE_SUCCESS)
return s;
-
-
// NOTE: Not sure how things are handles with exclusive muxed
// strategy.
if (this->resolver_.transport ()->idle_after_send ())
diff --git a/TAO/tao/Synch_Invocation.cpp b/TAO/tao/Synch_Invocation.cpp
index 61ef228ee83..55e8702a383 100644
--- a/TAO/tao/Synch_Invocation.cpp
+++ b/TAO/tao/Synch_Invocation.cpp
@@ -111,6 +111,7 @@ namespace TAO
ACE_TRY_CHECK;
#if TAO_HAS_INTERCEPTORS == 1
+ // @@NOTE: Too much code repetition.
// If the above call returns a restart due to connection
// failure then call the receive_other interception point
// before we leave.
@@ -122,12 +123,11 @@ namespace TAO
if (tmp != TAO_INVOKE_SUCCESS)
s = tmp;
+
+ return s;
}
#endif /*TAO_HAS_INTERCEPTORS */
- if (s != TAO_INVOKE_SUCCESS)
- return s;
-
countdown.update ();
// For some strategies one may want to release the transport
@@ -160,6 +160,21 @@ namespace TAO
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
+#if TAO_HAS_INTERCEPTORS == 1
+ if (s == TAO_INVOKE_RESTART)
+ {
+ Invocation_Status tmp =
+ this->receive_other_interception (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ // Push the latest values for the return..
+ if (tmp != TAO_INVOKE_SUCCESS)
+ s = tmp;
+
+ return s;
+ }
+#endif /*TAO_HAS_INTERCEPTORS */
+
// What happens when the above call returns an error through
// the return value? That would be bogus as per the contract
// in the interface. The call violated the contract
@@ -174,22 +189,21 @@ namespace TAO
this->resolver_.transport_released ();
#if TAO_HAS_INTERCEPTORS == 1
- if (s == TAO_INVOKE_SUCCESS)
+ Invocation_Status tmp = TAO_INVOKE_FAILURE;
+ if (s == TAO_INVOKE_RESTART)
{
- s =
- this->receive_reply_interception (ACE_ENV_SINGLE_ARG_PARAMETER);
+ tmp =
+ this->receive_other_interception (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
}
- else if (s == TAO_INVOKE_RESTART)
+ else if (s == TAO_INVOKE_SUCCESS)
{
- s =
- this->receive_other_interception (ACE_ENV_SINGLE_ARG_PARAMETER);
+ tmp =
+ this->receive_reply_interception (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
}
- // What about other values of "s"? The method called should
- // have returned an exception instead of trying to communicate
- // using return values, since that is the contract in the
- // interface.
+ if (tmp != TAO_INVOKE_SUCCESS)
+ s = tmp;
#endif /*TAO_HAS_INTERCEPTORS */
}
ACE_CATCHANY