summaryrefslogtreecommitdiff
path: root/TAO/tao/Invocation_Adapter.cpp
diff options
context:
space:
mode:
authorfrehberger <frehberger@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2006-03-29 06:26:35 +0000
committerfrehberger <frehberger@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2006-03-29 06:26:35 +0000
commitefef0e599c98ce8f02194b8b4a7f4a50a2d176a3 (patch)
treedf940e25a0a4cb8300316ad185a91ffb0395b5ed /TAO/tao/Invocation_Adapter.cpp
parentbe40195a7eedc4e0f2e33886a5d71c8172143481 (diff)
downloadATCD-efef0e599c98ce8f02194b8b4a7f4a50a2d176a3.tar.gz
ChangeLogTag: Tue Mar 28 23:59:00 UTC 2006 Frank Rehberger <frehberger@prismtech.com>
Diffstat (limited to 'TAO/tao/Invocation_Adapter.cpp')
-rw-r--r--TAO/tao/Invocation_Adapter.cpp25
1 files changed, 19 insertions, 6 deletions
diff --git a/TAO/tao/Invocation_Adapter.cpp b/TAO/tao/Invocation_Adapter.cpp
index 9d2cdb49e55..26cf176af9e 100644
--- a/TAO/tao/Invocation_Adapter.cpp
+++ b/TAO/tao/Invocation_Adapter.cpp
@@ -11,7 +11,7 @@
#include "tao/Transport.h"
#include "tao/Transport_Mux_Strategy.h"
#include "tao/Collocation_Proxy_Broker.h"
-
+#include "tao/GIOP_Utils.h"
#if !defined (__ACE_INLINE__)
# include "tao/Invocation_Adapter.inl"
#endif /* __ACE_INLINE__ */
@@ -191,8 +191,12 @@ namespace TAO
effective_target =
coll_inv.steal_forwarded_reference ();
+ const bool is_permanent_forward =
+ (coll_inv.reply_status() == TAO_GIOP_LOCATION_FORWARD_PERM);
+
(void) this->object_forwarded (effective_target,
- stub
+ stub,
+ is_permanent_forward
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (TAO_INVOKE_FAILURE);
}
@@ -322,8 +326,12 @@ namespace TAO
effective_target =
synch.steal_forwarded_reference ();
+ const bool is_permanent_forward =
+ (synch.reply_status() == TAO_GIOP_LOCATION_FORWARD_PERM);
+
this->object_forwarded (effective_target,
- r.stub ()
+ r.stub (),
+ is_permanent_forward
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (TAO_INVOKE_FAILURE);
}
@@ -353,8 +361,12 @@ namespace TAO
effective_target =
synch.steal_forwarded_reference ();
+ const bool is_permanent_forward =
+ (synch.reply_status() == TAO_GIOP_LOCATION_FORWARD_PERM);
+
this->object_forwarded (effective_target,
- r.stub ()
+ r.stub (),
+ is_permanent_forward
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (TAO_INVOKE_FAILURE);
}
@@ -364,7 +376,8 @@ namespace TAO
void
Invocation_Adapter::object_forwarded (CORBA::Object_var &effective_target,
- TAO_Stub *stub
+ TAO_Stub *stub,
+ CORBA::Boolean permanent_forward
ACE_ENV_ARG_DECL)
{
// The object pointer has to be changed to a TAO_Stub pointer
@@ -381,7 +394,7 @@ namespace TAO
// Reset the profile in the stubs
- stub->add_forward_profiles (stubobj->base_profiles ());
+ stub->add_forward_profiles (stubobj->base_profiles (), permanent_forward);
if (stub->next_profile () == 0)
ACE_THROW (CORBA::TRANSIENT (