summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Mesnier <mesnier_p@ociweb.com>2005-02-07 19:27:21 +0000
committerPhil Mesnier <mesnier_p@ociweb.com>2005-02-07 19:27:21 +0000
commit6e0189583c233bd510520ec65c7ee9316948b53c (patch)
treefe4d97090f4b41f906de9ccd82330163eaffb6aa
parent73c945bd23b8f7a0559585ff750c215ccf2a91e9 (diff)
downloadATCD-6e0189583c233bd510520ec65c7ee9316948b53c.tar.gz
ChangeLog
-rw-r--r--TAO/tao/Remote_Invocation.cpp8
-rw-r--r--TAO/tao/Transport.cpp15
-rw-r--r--TAO/tao/Transport.h5
3 files changed, 25 insertions, 3 deletions
diff --git a/TAO/tao/Remote_Invocation.cpp b/TAO/tao/Remote_Invocation.cpp
index 0efdef2dfb0..c19332acb84 100644
--- a/TAO/tao/Remote_Invocation.cpp
+++ b/TAO/tao/Remote_Invocation.cpp
@@ -108,6 +108,8 @@ namespace TAO
TAO_OutputCDR &out_stream
ACE_ENV_ARG_DECL)
{
+ this->resolver_.transport ()->clear_translators (0,
+ &out_stream);
// Send the request for the header
if (this->resolver_.transport ()->generate_request_header (this->details_,
spec,
@@ -141,16 +143,16 @@ namespace TAO
{
TAO_Protocols_Hooks *tph =
this->resolver_.stub ()->orb_core ()->get_protocols_hooks ();
-
+
CORBA::Boolean set_client_network_priority =
tph->set_client_network_priority (this->resolver_.transport ()->tag (),
this->resolver_.stub ()
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (TAO_INVOKE_FAILURE);
-
+
TAO_Connection_Handler *connection_handler =
this->resolver_.transport ()->connection_handler ();
-
+
connection_handler->set_dscp_codepoint (set_client_network_priority);
const int retval =
diff --git a/TAO/tao/Transport.cpp b/TAO/tao/Transport.cpp
index d4d6f4c520d..d0386a9744e 100644
--- a/TAO/tao/Transport.cpp
+++ b/TAO/tao/Transport.cpp
@@ -2339,6 +2339,21 @@ TAO_Transport::assign_translators (TAO_InputCDR *inp, TAO_OutputCDR *outp)
}
}
+void
+TAO_Transport::clear_translators (TAO_InputCDR *inp, TAO_OutputCDR *outp)
+{
+ if (inp)
+ {
+ inp->char_translator (0);
+ inp->wchar_translator (0);
+ }
+ if (outp)
+ {
+ outp->char_translator (0);
+ outp->wchar_translator (0);
+ }
+}
+
ACE_Event_Handler::Reference_Count
TAO_Transport::add_reference (void)
{
diff --git a/TAO/tao/Transport.h b/TAO/tao/Transport.h
index 265e9c0a28c..259292a1eb2 100644
--- a/TAO/tao/Transport.h
+++ b/TAO/tao/Transport.h
@@ -729,6 +729,11 @@ public:
/// and output CDRs.
void assign_translators (TAO_InputCDR *, TAO_OutputCDR *);
+ /// It is necessary to clear the codeset translator when a CDR stream
+ /// is used for more than one GIOP message. This is required since the
+ /// header must not be translated, whereas the body must be.
+ void clear_translators (TAO_InputCDR *, TAO_OutputCDR *);
+
/// Return true if the tcs has been set
CORBA::Boolean is_tcs_set() const;