summaryrefslogtreecommitdiff
path: root/TAO/tao/Invocation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Invocation.cpp')
-rw-r--r--TAO/tao/Invocation.cpp28
1 files changed, 23 insertions, 5 deletions
diff --git a/TAO/tao/Invocation.cpp b/TAO/tao/Invocation.cpp
index 4c50530ee67..73e01cdf404 100644
--- a/TAO/tao/Invocation.cpp
+++ b/TAO/tao/Invocation.cpp
@@ -84,8 +84,6 @@ TAO_GIOP_Invocation::TAO_GIOP_Invocation (TAO_Stub *stub,
TAO_GIOP_Invocation::~TAO_GIOP_Invocation (void)
{
- if (this->transport_ != 0)
- this->transport_->idle_after_reply ();
}
// The public API involves creating an invocation, starting it, filling
@@ -152,7 +150,7 @@ TAO_GIOP_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
timeout->relative_expiry (ACE_TRY_ENV);
ACE_CHECK;
TimeBase::TimeT seconds = t / 10000000u;
- TimeBase::TimeT microseconds = (t % 10000000u) / 10;
+ TimeBase::TimeT microseconds = t % 10000000u;
this->max_wait_time_value_.set (ACE_U64_TO_U32(seconds),
ACE_U64_TO_U32(microseconds));
this->max_wait_time_ = &this->max_wait_time_value_;
@@ -393,6 +391,12 @@ TAO_GIOP_Invocation::location_forward (TAO_InputCDR &inp_stream,
// ****************************************************************
+TAO_GIOP_Twoway_Invocation::~TAO_GIOP_Twoway_Invocation (void)
+{
+ if (this->transport_ != 0)
+ this->transport_->idle ();
+}
+
void
TAO_GIOP_Twoway_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException))
@@ -638,7 +642,8 @@ TAO_GIOP_Twoway_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV)
}
int reply_error =
- this->transport_->wait_for_reply (this->max_wait_time_);
+ this->transport_->wait_for_reply (this->max_wait_time_,
+ this->rd_.reply_received ());
// Do the wait loop till we receive the reply for this invocation.
// while (reply_error != -1 &&
@@ -767,6 +772,12 @@ TAO_GIOP_Twoway_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV)
// ****************************************************************
+TAO_GIOP_Oneway_Invocation::~TAO_GIOP_Oneway_Invocation (void)
+{
+ if (this->transport_ != 0)
+ this->transport_->idle ();
+}
+
void
TAO_GIOP_Oneway_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException))
@@ -785,6 +796,12 @@ TAO_GIOP_Oneway_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
// ****************************************************************
+TAO_GIOP_Locate_Request_Invocation::~TAO_GIOP_Locate_Request_Invocation (void)
+{
+ if (this->transport_ != 0)
+ this->transport_->idle ();
+}
+
// Send request, block until any reply comes back.
void
TAO_GIOP_Locate_Request_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
@@ -860,7 +877,8 @@ TAO_GIOP_Locate_Request_Invocation::invoke (CORBA::Environment &ACE_TRY_ENV)
// Wait for the reply.
int reply_error =
- this->transport_->wait_for_reply (this->max_wait_time_);
+ this->transport_->wait_for_reply (this->max_wait_time_,
+ this->rd_.reply_received ());
// // Do the wait loop, till we receive the reply for this invocation.
// while (reply_error != -1 &&