summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-04 18:01:18 +0000
committeralex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-04 18:01:18 +0000
commitb253bc589ff6e488cdceda71ae6ffc2e18608bc4 (patch)
tree0608c5d9aa5ba1b69b364f0a36a637bf126fc51a
parentb117ca35719d8838eefbf755ffe62df8eebabb60 (diff)
downloadATCD-b253bc589ff6e488cdceda71ae6ffc2e18608bc4.tar.gz
Sun Jul 4 13:00:38 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu>
-rw-r--r--TAO/tao/Asynch_Invocation.cpp119
-rw-r--r--TAO/tao/Asynch_Invocation.h19
-rw-r--r--TAO/tao/Asynch_Invocation.i34
-rw-r--r--TAO/tao/Client_Strategy_Factory.cpp2
-rw-r--r--TAO/tao/Client_Strategy_Factory.h3
-rw-r--r--TAO/tao/Invocation.cpp8
-rw-r--r--TAO/tao/Invocation.h4
-rw-r--r--TAO/tao/Invocation.i12
-rw-r--r--TAO/tao/Pluggable.cpp2
-rw-r--r--TAO/tao/Reply_Dispatcher.cpp26
-rw-r--r--TAO/tao/Reply_Dispatcher.h12
-rw-r--r--TAO/tao/Transport_Mux_Strategy.cpp28
-rw-r--r--TAO/tao/Transport_Mux_Strategy.h5
-rw-r--r--TAO/tao/default_client.cpp4
-rw-r--r--TAO/tao/default_client.h2
15 files changed, 73 insertions, 207 deletions
diff --git a/TAO/tao/Asynch_Invocation.cpp b/TAO/tao/Asynch_Invocation.cpp
index d81b84caec0..af1e13e09cc 100644
--- a/TAO/tao/Asynch_Invocation.cpp
+++ b/TAO/tao/Asynch_Invocation.cpp
@@ -53,10 +53,6 @@ TAO_GIOP_Twoway_Asynch_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
this->TAO_GIOP_Invocation::start (ACE_TRY_ENV);
ACE_CHECK;
- // If there was a previous reply, cleanup its state first.
- if (this->message_state_->message_size != 0)
- this->message_state_->reset ();
-
this->transport_->start_request (this->orb_core_,
this->profile_,
this->opname_,
@@ -76,62 +72,6 @@ TAO_GIOP_Twoway_Asynch_Invocation::invoke (CORBA::ExceptionList &exceptions,
int retval = this->invoke_i (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- // A TAO_INVOKE_EXCEPTION status, but no exception raised means that
- // we have a user exception.
- // @@ This is a bit brittle, think about a better implementation.
- if (retval == TAO_INVOKE_EXCEPTION)
- {
- // Match the exception interface repository id with the
- // exception in the exception list.
- // This is important to decode the exception.
-
- CORBA::String_var buf;
-
- // Pull the exception ID out of the marshaling buffer.
- if (this->inp_stream ().read_string (buf.inout ()) == 0)
- {
- ACE_THROW_RETURN (CORBA::MARSHAL (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES),
- TAO_INVOKE_EXCEPTION);
- }
-
- for (CORBA::ULong i = 0;
- i < exceptions.count ();
- i++)
- {
- CORBA::TypeCode_ptr tcp = exceptions.item (i, ACE_TRY_ENV);
- ACE_CHECK_RETURN (TAO_INVOKE_EXCEPTION);
-
- const char *xid = tcp->id (ACE_TRY_ENV);
- ACE_CHECK_RETURN (TAO_INVOKE_EXCEPTION);
-
- if (ACE_OS::strcmp (buf.in (), xid) != 0)
- continue;
-
- const ACE_Message_Block* cdr =
- this->inp_stream ().start ();
- CORBA_Any any (tcp, 0, cdr);
- CORBA_Exception *exception;
- ACE_NEW_THROW_EX (exception,
- CORBA_UnknownUserException (any),
- CORBA::NO_MEMORY (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES));
- ACE_CHECK_RETURN (TAO_INVOKE_EXCEPTION);
-
- // @@ Think about a better way to raise the exception here,
- // maybe we need some more macros?
- ACE_TRY_ENV.exception (exception);
- return TAO_INVOKE_EXCEPTION;
- }
-
- // If we couldn't find the right exception, report it as
- // CORBA::UNKNOWN.
-
- // @@ It would seem like if the remote exception is a
- // UserException we can assume that the request was
- // completed.
- ACE_THROW_RETURN (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES),
- TAO_INVOKE_EXCEPTION);
- }
-
return retval;
}
@@ -146,65 +86,6 @@ TAO_GIOP_Twoway_Asynch_Invocation::invoke (TAO_Exception_Data *excepts,
int retval = this->invoke_i (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- // A TAO_INVOKE_EXCEPTION status, but no exception raised means that
- // we have a user exception.
- // @@ This is a bit brittle, think about a better implementation.
- if (retval == TAO_INVOKE_EXCEPTION)
- {
- // Match the exception interface repository id with the
- // exception in the exception list.
- // This is important to decode the exception.
-
- CORBA::String_var buf;
-
- // Pull the exception ID out of the marshaling buffer.
- if (this->inp_stream ().read_string (buf.inout ()) == 0)
- {
- ACE_THROW_RETURN (CORBA::MARSHAL (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES),
- TAO_INVOKE_EXCEPTION);
- }
-
- for (CORBA::ULong i = 0;
- i < except_count;
- i++)
- {
- CORBA::TypeCode_ptr tcp = excepts[i].tc;
- const char *xid = tcp->id (ACE_TRY_ENV);
- ACE_CHECK_RETURN (TAO_INVOKE_EXCEPTION);
-
- if (ACE_OS::strcmp (buf.in (), xid) != 0)
- continue;
-
- // Match.
- CORBA::Exception_ptr exception = excepts[i].alloc ();
-
- if (exception == 0)
- ACE_THROW_RETURN (CORBA::NO_MEMORY (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES),
- TAO_INVOKE_EXCEPTION);
-
- this->inp_stream ().decode (exception->_type (),
- exception, 0,
- ACE_TRY_ENV);
- ACE_CHECK_RETURN (TAO_INVOKE_EXCEPTION);
-
- if (TAO_debug_level > 5)
- ACE_DEBUG ((LM_DEBUG,
- "TAO: (%P|%t) Raising exception %s\n",
- buf.in ()));
-
- // @@ Think about a better way to raise the exception here,
- // maybe we need some more macros?
- ACE_TRY_ENV.exception (exception);
- return TAO_INVOKE_EXCEPTION;
- }
-
- // If we couldn't find the right exception, report it as
- // CORBA::UNKNOWN.
-
- ACE_THROW_RETURN (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES),
- TAO_INVOKE_EXCEPTION);
- }
-
return retval;
}
diff --git a/TAO/tao/Asynch_Invocation.h b/TAO/tao/Asynch_Invocation.h
index d14755c52d0..fe318e91aa6 100644
--- a/TAO/tao/Asynch_Invocation.h
+++ b/TAO/tao/Asynch_Invocation.h
@@ -64,14 +64,14 @@ public:
// Exceptions are allocated and decoded here. This reduces the
// footprint of the generated stubs.
- void get_value (CORBA::TypeCode_ptr tc,
- void *value,
- CORBA_Environment &TAO_IN_ENV =
- TAO_default_environment ());
- // No CORBA::Context support (deprecated).
-
- TAO_InputCDR &inp_stream (void);
- // Return the underlying input stream.
+ // TAO_InputCDR &inp_stream (void);
+ // // Return the underlying input stream.
+ //
+ // void get_value (CORBA::TypeCode_ptr tc,
+ // void *value,
+ // CORBA_Environment &TAO_IN_ENV =
+ // TAO_default_environment ());
+ // // No CORBA::Context support (deprecated).
private:
int invoke_i (CORBA::Environment &ACE_TRY_ENV)
@@ -80,9 +80,6 @@ private:
// send/reply code and the system exceptions.
private:
- TAO_GIOP_Message_State *message_state_;
- // Stream into which the reply is placed.
-
TAO_Asynch_Reply_Dispatcher *rd_;
// Reply dispatcher for the current synchronous Asynch_Invocation.
};
diff --git a/TAO/tao/Asynch_Invocation.i b/TAO/tao/Asynch_Invocation.i
index f0ee0f78404..800b5f14595 100644
--- a/TAO/tao/Asynch_Invocation.i
+++ b/TAO/tao/Asynch_Invocation.i
@@ -11,30 +11,24 @@ TAO_GIOP_Twoway_Asynch_Invocation (TAO_Stub *stub,
const TAO_Reply_Handler_Skeleton &reply_handler_skel,
Messaging::ReplyHandler_ptr reply_handler_ptr)
: TAO_GIOP_Invocation (stub, operation, orb_core),
- message_state_ (0),
rd_ (0)
{
- // Make a new message state.
- ACE_NEW (message_state_,
- TAO_GIOP_Message_State (orb_core));
-
// New Reply Dispatcher.
ACE_NEW (rd_,
- TAO_Asynch_Reply_Dispatcher (message_state_,
- reply_handler_skel,
+ TAO_Asynch_Reply_Dispatcher (reply_handler_skel,
reply_handler_ptr));
}
-ACE_INLINE TAO_InputCDR &
-TAO_GIOP_Twoway_Asynch_Invocation::inp_stream (void)
-{
- return this->message_state_->cdr;
-}
-
-ACE_INLINE void
-TAO_GIOP_Twoway_Asynch_Invocation::get_value (CORBA::TypeCode_ptr tc,
- void *value,
- CORBA::Environment &ACE_TRY_ENV)
-{
- (void) this->inp_stream ().decode (tc, value, 0, ACE_TRY_ENV);
-}
+// ACE_INLINE TAO_InputCDR &
+// TAO_GIOP_Twoway_Asynch_Invocation::inp_stream (void)
+// {
+// return this->message_state_->cdr;
+// }
+//
+// ACE_INLINE void
+// TAO_GIOP_Twoway_Asynch_Invocation::get_value (CORBA::TypeCode_ptr tc,
+// void *value,
+// CORBA::Environment &ACE_TRY_ENV)
+// {
+// (void) this->inp_stream ().decode (tc, value, 0, ACE_TRY_ENV);
+// }
diff --git a/TAO/tao/Client_Strategy_Factory.cpp b/TAO/tao/Client_Strategy_Factory.cpp
index cf3a34b4b83..0514f80438a 100644
--- a/TAO/tao/Client_Strategy_Factory.cpp
+++ b/TAO/tao/Client_Strategy_Factory.cpp
@@ -19,7 +19,7 @@ TAO_Client_Strategy_Factory::create_iiop_profile_lock (void)
}
TAO_Transport_Mux_Strategy *
-TAO_Client_Strategy_Factory::create_transport_mux_strategy (void)
+TAO_Client_Strategy_Factory::create_transport_mux_strategy (TAO_ORB_Core *orb_core)
{
return 0;
}
diff --git a/TAO/tao/Client_Strategy_Factory.h b/TAO/tao/Client_Strategy_Factory.h
index 609a20fa79e..9c4d13eb83d 100644
--- a/TAO/tao/Client_Strategy_Factory.h
+++ b/TAO/tao/Client_Strategy_Factory.h
@@ -25,6 +25,7 @@ class ACE_Lock;
class TAO_Transport_Mux_Strategy;
class TAO_Wait_Strategy;
class TAO_Transport;
+class TAO_ORB_Core;
class TAO_Export TAO_Client_Strategy_Factory : public ACE_Service_Object
{
@@ -44,7 +45,7 @@ public:
// <TAO_GIOP_Invocation::location_forward> and the
// <TAO_GIOP_Invocation::start>.
- virtual TAO_Transport_Mux_Strategy *create_transport_mux_strategy (void);
+ virtual TAO_Transport_Mux_Strategy *create_transport_mux_strategy (TAO_ORB_Core *orb_core);
// Create the correct client request muxing strategy.
virtual TAO_Wait_Strategy *create_wait_strategy (TAO_Transport *transport);
diff --git a/TAO/tao/Invocation.cpp b/TAO/tao/Invocation.cpp
index f2e4967a9cc..fe90d77a19a 100644
--- a/TAO/tao/Invocation.cpp
+++ b/TAO/tao/Invocation.cpp
@@ -374,10 +374,6 @@ TAO_GIOP_Twoway_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
this->TAO_GIOP_Invocation::start (ACE_TRY_ENV);
ACE_CHECK;
- // If there was a previous reply, cleanup its state first.
- if (this->message_state_.message_size != 0)
- this->message_state_.reset ();
-
this->transport_->start_request (this->orb_core_,
this->profile_,
this->opname_,
@@ -746,10 +742,6 @@ TAO_GIOP_Locate_Request_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
this->TAO_GIOP_Invocation::start (ACE_TRY_ENV);
ACE_CHECK;
- // If there was a previous reply, cleanup its state first.
- if (this->message_state_.message_size != 0)
- this->message_state_.reset ();
-
this->transport_->start_locate (this->orb_core_,
this->profile_,
this->request_id_,
diff --git a/TAO/tao/Invocation.h b/TAO/tao/Invocation.h
index 9bc171d7df3..d287244a923 100644
--- a/TAO/tao/Invocation.h
+++ b/TAO/tao/Invocation.h
@@ -211,7 +211,7 @@ private:
// send/reply code and the system exceptions.
private:
- TAO_GIOP_Message_State message_state_;
+ // TAO_GIOP_Message_State message_state_;
// Stream into which the reply is placed.
TAO_Synch_Reply_Dispatcher rd_;
@@ -274,7 +274,7 @@ public:
// return the underlying input stream
private:
- TAO_GIOP_Message_State message_state_;
+ // TAO_GIOP_Message_State message_state_;
// Stream into which the request is placed.
TAO_Synch_Reply_Dispatcher rd_;
diff --git a/TAO/tao/Invocation.i b/TAO/tao/Invocation.i
index d4dad8ee56f..96375b29bec 100644
--- a/TAO/tao/Invocation.i
+++ b/TAO/tao/Invocation.i
@@ -24,16 +24,14 @@ TAO_GIOP_Twoway_Invocation::
TAO_GIOP_Twoway_Invocation (TAO_Stub *stub,
const char *operation,
TAO_ORB_Core *orb_core)
- : TAO_GIOP_Invocation (stub, operation, orb_core),
- message_state_ (orb_core),
- rd_ (&message_state_)
+ : TAO_GIOP_Invocation (stub, operation, orb_core)
{
}
ACE_INLINE TAO_InputCDR &
TAO_GIOP_Twoway_Invocation::inp_stream (void)
{
- return this->message_state_.cdr;
+ return this->rd_.message_state ()->cdr;
}
ACE_INLINE void
@@ -68,14 +66,12 @@ ACE_INLINE
TAO_GIOP_Locate_Request_Invocation::
TAO_GIOP_Locate_Request_Invocation (TAO_Stub *stub,
TAO_ORB_Core *orb_core)
- : TAO_GIOP_Invocation (stub, 0, orb_core),
- message_state_ (orb_core),
- rd_ (&message_state_)
+ : TAO_GIOP_Invocation (stub, 0, orb_core)
{
}
ACE_INLINE TAO_InputCDR &
TAO_GIOP_Locate_Request_Invocation::inp_stream (void)
{
- return this->message_state_.cdr;
+ return this->rd_.message_state ()->cdr;
}
diff --git a/TAO/tao/Pluggable.cpp b/TAO/tao/Pluggable.cpp
index 528a1b38a95..47c879073a1 100644
--- a/TAO/tao/Pluggable.cpp
+++ b/TAO/tao/Pluggable.cpp
@@ -162,7 +162,7 @@ TAO_Transport::TAO_Transport (CORBA::ULong tag,
this->ws_ = orb_core->client_factory ()->create_wait_strategy (this);
// Create TMS now.
- this->tms_ = orb_core->client_factory ()->create_transport_mux_strategy ();
+ this->tms_ = orb_core->client_factory ()->create_transport_mux_strategy (orb_core);
}
TAO_Transport::~TAO_Transport (void)
diff --git a/TAO/tao/Reply_Dispatcher.cpp b/TAO/tao/Reply_Dispatcher.cpp
index b9d4f42e1ac..caa019766bc 100644
--- a/TAO/tao/Reply_Dispatcher.cpp
+++ b/TAO/tao/Reply_Dispatcher.cpp
@@ -26,8 +26,8 @@ TAO_Reply_Dispatcher::message_state (void) const
// *********************************************************************
// Constructor.
-TAO_Synch_Reply_Dispatcher::TAO_Synch_Reply_Dispatcher (TAO_GIOP_Message_State* message_state)
- : message_state_ (message_state)
+TAO_Synch_Reply_Dispatcher::TAO_Synch_Reply_Dispatcher (void)
+ : message_state_ (0)
{
}
@@ -43,14 +43,9 @@ TAO_Synch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status,
TAO_GIOP_ServiceContextList &reply_ctx,
TAO_GIOP_Message_State *message_state)
{
- ACE_ASSERT (message_state == this->message_state_);
- // @@ Notice that the message is ignored because we assume that
- // the message_state is the same we are giving down to the ORB to
- // use.... I.E. this class cannot be used with Muxed stream, but
- // chances are that the way to implement that will change several
- // times in the next few weeks.
this->reply_status_ = reply_status;
this->version_ = version;
+ this->message_state_ = message_state;
// Steal the buffer, that way we don't do any unnecesary copies of
// this data.
@@ -71,11 +66,9 @@ TAO_Synch_Reply_Dispatcher::message_state (void) const
// *********************************************************************
// Constructor.
-TAO_Asynch_Reply_Dispatcher::TAO_Asynch_Reply_Dispatcher (TAO_GIOP_Message_State *message_state,
- const TAO_Reply_Handler_Skeleton &reply_handler_skel,
+TAO_Asynch_Reply_Dispatcher::TAO_Asynch_Reply_Dispatcher (const TAO_Reply_Handler_Skeleton &reply_handler_skel,
Messaging::ReplyHandler_ptr reply_handler_ptr)
- : message_state_ (message_state),
- reply_handler_skel_ (reply_handler_skel),
+ : reply_handler_skel_ (reply_handler_skel),
reply_handler_ (reply_handler_ptr)
{
}
@@ -83,8 +76,6 @@ TAO_Asynch_Reply_Dispatcher::TAO_Asynch_Reply_Dispatcher (TAO_GIOP_Message_State
// Destructor.
TAO_Asynch_Reply_Dispatcher::~TAO_Asynch_Reply_Dispatcher (void)
{
- delete message_state_;
- message_state_ = 0;
}
// Dispatch the reply.
@@ -94,14 +85,9 @@ TAO_Asynch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status,
TAO_GIOP_ServiceContextList &reply_ctx,
TAO_GIOP_Message_State *message_state)
{
- ACE_ASSERT (message_state == this->message_state_);
- // @@ Notice that the message is ignored because we assume that
- // the message_state is the same we are giving down to the ORB to
- // use.... I.E. this class cannot be used with Muxed stream, but
- // chances are that the way to implement that will change several
- // times in the next few weeks.
this->reply_status_ = reply_status;
this->version_ = version;
+ this->message_state_ = message_state;
// Steal the buffer, that way we don't do any unnecesary copies of
// this data.
diff --git a/TAO/tao/Reply_Dispatcher.h b/TAO/tao/Reply_Dispatcher.h
index 983467f7b46..d1d00d35ab5 100644
--- a/TAO/tao/Reply_Dispatcher.h
+++ b/TAO/tao/Reply_Dispatcher.h
@@ -48,10 +48,7 @@ public:
// Dispatch the reply.
virtual TAO_GIOP_Message_State *message_state (void) const;
- // Get the Message State
- // By default it returns <0> but if the request can pre-allocate one
- // for us then we can return it and pass it along for non-Muxed
- // transports.
+ // Get the Message State into which the reply has been read.
};
// *********************************************************************
@@ -66,7 +63,7 @@ class TAO_Export TAO_Synch_Reply_Dispatcher : public TAO_Reply_Dispatcher
//
public:
- TAO_Synch_Reply_Dispatcher (TAO_GIOP_Message_State* message_state);
+ TAO_Synch_Reply_Dispatcher (void);
// Constructor.
virtual ~TAO_Synch_Reply_Dispatcher (void);
@@ -76,7 +73,7 @@ public:
// Get the reply status.
const TAO_GIOP_Version& version (void) const;
- // Get the GIOP version
+ // Get the GIOP version.
TAO_GIOP_ServiceContextList& reply_ctx (void);
// Get the reply context
@@ -118,8 +115,7 @@ class TAO_Export TAO_Asynch_Reply_Dispatcher : public TAO_Reply_Dispatcher
//
public:
- TAO_Asynch_Reply_Dispatcher (TAO_GIOP_Message_State* message_state,
- const TAO_Reply_Handler_Skeleton &reply_handler_skel,
+ TAO_Asynch_Reply_Dispatcher (const TAO_Reply_Handler_Skeleton &reply_handler_skel,
Messaging::ReplyHandler_ptr reply_handler_ptr);
// Constructor.
diff --git a/TAO/tao/Transport_Mux_Strategy.cpp b/TAO/tao/Transport_Mux_Strategy.cpp
index 1e6f6349f1d..58bd1ffaea3 100644
--- a/TAO/tao/Transport_Mux_Strategy.cpp
+++ b/TAO/tao/Transport_Mux_Strategy.cpp
@@ -22,10 +22,11 @@ TAO_Transport_Mux_Strategy::~TAO_Transport_Mux_Strategy (void)
// *********************************************************************
-TAO_Exclusive_TMS::TAO_Exclusive_TMS (void)
+TAO_Exclusive_TMS::TAO_Exclusive_TMS (TAO_ORB_Core *orb_core)
: request_id_generator_ (0),
request_id_ (0),
- rd_ (0)
+ rd_ (0),
+ message_state_ (orb_core)
{
}
@@ -49,6 +50,15 @@ TAO_Exclusive_TMS::bind_dispatcher (CORBA::ULong request_id,
{
this->request_id_ = request_id;
this->rd_ = rd;
+
+ // @@ Carlos: This method marks the <start> of an invocation. This
+ // should be the correct place to <reset> the message state. Do I
+ // make sense? (Alex).
+
+ // If there was a previous reply, cleanup its state first.
+ if (this->message_state_.message_size != 0)
+ this->message_state_.reset ();
+
return 0;
}
@@ -59,6 +69,11 @@ TAO_Exclusive_TMS::dispatch_reply (CORBA::ULong request_id,
TAO_GIOP_ServiceContextList& reply_ctx,
TAO_GIOP_Message_State* message_state)
{
+ // There can be only one message state possible. Just do a sanity
+ // check here.
+ ACE_ASSERT (message_state == &(this->message_state_));
+
+ // Check the ids.
if (this->request_id_ != request_id)
{
if (TAO_debug_level > 0)
@@ -84,13 +99,18 @@ TAO_Exclusive_TMS::get_message_state (void)
if (this->rd_ == 0)
return 0;
- return this->rd_->message_state ();
+ return &(this->message_state_);
}
-// NOOP function.
void
TAO_Exclusive_TMS::destroy_message_state (TAO_GIOP_Message_State *)
{
+ // We dont have to delete the message state. But we can reset it to
+ // receive the next incoming message.
+ // If there was a previous reply, cleanup its state first.
+ // if (this->message_state_.message_size != 0)
+ // this->message_state_.reset ();
+ // @@ We do this already in the <bind_dispatcher>.
}
// *********************************************************************
diff --git a/TAO/tao/Transport_Mux_Strategy.h b/TAO/tao/Transport_Mux_Strategy.h
index d1163ddc6e8..592135b2b5e 100644
--- a/TAO/tao/Transport_Mux_Strategy.h
+++ b/TAO/tao/Transport_Mux_Strategy.h
@@ -90,7 +90,7 @@ class TAO_Export TAO_Exclusive_TMS : public TAO_Transport_Mux_Strategy
//
public:
- TAO_Exclusive_TMS (void);
+ TAO_Exclusive_TMS (TAO_ORB_Core *orb_core);
// Constructor.
virtual ~TAO_Exclusive_TMS (void);
@@ -128,6 +128,9 @@ protected:
TAO_Reply_Dispatcher *rd_;
// Reply Dispatcher corresponding to the request.
+
+ TAO_GIOP_Message_State message_state_;
+ // Message state to read the incoming message.
};
// *********************************************************************
diff --git a/TAO/tao/default_client.cpp b/TAO/tao/default_client.cpp
index 022e915d6a5..ab994a64462 100644
--- a/TAO/tao/default_client.cpp
+++ b/TAO/tao/default_client.cpp
@@ -136,7 +136,7 @@ TAO_Default_Client_Strategy_Factory::create_iiop_profile_lock (void)
// Create the correct client transport muxing strategy.
TAO_Transport_Mux_Strategy *
-TAO_Default_Client_Strategy_Factory::create_transport_mux_strategy (void)
+TAO_Default_Client_Strategy_Factory::create_transport_mux_strategy (TAO_ORB_Core *orb_core)
{
TAO_Transport_Mux_Strategy *tms = 0;
@@ -148,7 +148,7 @@ TAO_Default_Client_Strategy_Factory::create_transport_mux_strategy (void)
// @@ Alex: Always creating Exclusive TMS. (Alex).
ACE_NEW_RETURN (tms,
- TAO_Exclusive_TMS,
+ TAO_Exclusive_TMS (orb_core),
0);
return tms;
diff --git a/TAO/tao/default_client.h b/TAO/tao/default_client.h
index 23ba486d815..1eb7a101d17 100644
--- a/TAO/tao/default_client.h
+++ b/TAO/tao/default_client.h
@@ -47,7 +47,7 @@ public:
// the TAO_GIOP_Invocation::location_forward and the
// TAO_GIOP_Invocation::start
- TAO_Transport_Mux_Strategy *create_transport_mux_strategy (void);
+ TAO_Transport_Mux_Strategy *create_transport_mux_strategy (TAO_ORB_Core *orb_core);
// Create the correct client request muxing strategy.
TAO_Wait_Strategy *create_wait_strategy (TAO_Transport *transport);