summaryrefslogtreecommitdiff
path: root/TAO
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-06-16 20:15:25 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-06-16 20:15:25 +0000
commitabe3e4573eaf9e98a283cdc1326e9b645db010f9 (patch)
tree9d6733547f5f42ea89ded14110c3d1ae1e61d484 /TAO
parent43eb1b4028726e408e0926f4181423d474d6d583 (diff)
downloadATCD-abe3e4573eaf9e98a283cdc1326e9b645db010f9.tar.gz
ChangeLogTag:Fri Jun 16 12:07:39 2000 Carlos O'Ryan <coryan@uci.edu>
Diffstat (limited to 'TAO')
-rw-r--r--TAO/ChangeLogs/ChangeLog-02a196
-rw-r--r--TAO/tao/Asynch_Invocation.cpp75
-rw-r--r--TAO/tao/Asynch_Invocation.h66
-rw-r--r--TAO/tao/Asynch_Invocation.i26
-rw-r--r--TAO/tao/Asynch_Reply_Dispatcher.cpp147
-rw-r--r--TAO/tao/Asynch_Reply_Dispatcher.h105
-rw-r--r--TAO/tao/Asynch_Reply_Dispatcher.i21
-rw-r--r--TAO/tao/DII_Invocation.cpp78
-rw-r--r--TAO/tao/DII_Invocation.h87
-rw-r--r--TAO/tao/DII_Invocation.i24
-rw-r--r--TAO/tao/DII_Reply_Dispatcher.cpp123
-rw-r--r--TAO/tao/DII_Reply_Dispatcher.h102
-rw-r--r--TAO/tao/DII_Reply_Dispatcher.i26
-rw-r--r--TAO/tao/GIOP_Message_Acceptors.cpp3
-rw-r--r--TAO/tao/GIOP_Message_Lite.h6
-rw-r--r--TAO/tao/IIOP_Connect.cpp6
-rw-r--r--TAO/tao/IIOP_Profile.cpp27
-rw-r--r--TAO/tao/IIOP_Transport.cpp9
-rw-r--r--TAO/tao/InterfaceC.cpp6
-rw-r--r--TAO/tao/Invocation.h2
-rw-r--r--TAO/tao/Leader_Follower.h9
-rw-r--r--TAO/tao/Leader_Follower.i75
-rw-r--r--TAO/tao/Makefile2635
-rw-r--r--TAO/tao/Makefile.am26
-rw-r--r--TAO/tao/Makefile.bor9
-rw-r--r--TAO/tao/ORB_Core.cpp99
-rw-r--r--TAO/tao/Pluggable.cpp6
-rw-r--r--TAO/tao/Pluggable.h4
-rw-r--r--TAO/tao/Reply_Dispatcher.cpp289
-rw-r--r--TAO/tao/Reply_Dispatcher.h277
-rw-r--r--TAO/tao/Reply_Dispatcher.i65
-rw-r--r--TAO/tao/SHMIOP_Connect.cpp6
-rw-r--r--TAO/tao/SHMIOP_Transport.cpp26
-rw-r--r--TAO/tao/SHMIOP_Transport.h14
-rw-r--r--TAO/tao/Stub.cpp9
-rw-r--r--TAO/tao/Synch_Reply_Dispatcher.cpp108
-rw-r--r--TAO/tao/Synch_Reply_Dispatcher.h107
-rw-r--r--TAO/tao/Synch_Reply_Dispatcher.i8
-rw-r--r--TAO/tao/Transport_Mux_Strategy.cpp355
-rw-r--r--TAO/tao/Transport_Mux_Strategy.h151
-rw-r--r--TAO/tao/UIOP_Connect.cpp6
-rw-r--r--TAO/tao/UIOP_Transport.cpp6
-rw-r--r--TAO/tao/UIOP_Transport.h16
-rw-r--r--TAO/tao/Wait_On_Leader_Follower.cpp337
-rw-r--r--TAO/tao/Wait_On_Leader_Follower.h60
-rw-r--r--TAO/tao/Wait_On_Reactor.cpp79
-rw-r--r--TAO/tao/Wait_On_Reactor.h49
-rw-r--r--TAO/tao/Wait_On_Read.cpp41
-rw-r--r--TAO/tao/Wait_On_Read.h47
-rw-r--r--TAO/tao/Wait_Strategy.cpp946
-rw-r--r--TAO/tao/Wait_Strategy.h225
-rw-r--r--TAO/tao/default_client.cpp26
-rw-r--r--TAO/tests/Connection_Purging/Connection_Purging.cpp20
-rw-r--r--TAO/tests/Endpoint_Per_Priority/client.cpp2
-rw-r--r--TAO/tests/Endpoint_Per_Priority/server.cpp11
-rw-r--r--TAO/tests/InterOp-Naming/Makefile56
-rw-r--r--TAO/tests/LongUpcalls/AMI_Manager.cpp172
-rw-r--r--TAO/tests/LongUpcalls/AMI_Manager.h98
-rw-r--r--TAO/tests/LongUpcalls/Controller.cpp44
-rw-r--r--TAO/tests/LongUpcalls/Controller.h44
-rw-r--r--TAO/tests/LongUpcalls/LongUpcalls.dsw65
-rw-r--r--TAO/tests/LongUpcalls/Makefile1939
-rw-r--r--TAO/tests/LongUpcalls/Manager.cpp78
-rw-r--r--TAO/tests/LongUpcalls/Manager.h64
-rw-r--r--TAO/tests/LongUpcalls/Manager_Handler.cpp53
-rw-r--r--TAO/tests/LongUpcalls/Manager_Handler.h47
-rw-r--r--TAO/tests/LongUpcalls/Test.idl25
-rw-r--r--TAO/tests/LongUpcalls/ami_client.cpp121
-rw-r--r--TAO/tests/LongUpcalls/ami_client.dsp219
-rw-r--r--TAO/tests/LongUpcalls/ami_server.cpp104
-rw-r--r--TAO/tests/LongUpcalls/ami_server.dsp211
-rw-r--r--TAO/tests/LongUpcalls/blocking_client.cpp111
-rw-r--r--TAO/tests/LongUpcalls/blocking_client.dsp211
-rw-r--r--TAO/tests/LongUpcalls/blocking_server.cpp104
-rw-r--r--TAO/tests/LongUpcalls/blocking_server.dsp211
-rwxr-xr-xTAO/tests/LongUpcalls/run_test.pl84
-rw-r--r--TAO/tests/LongUpcalls/svc.conf5
-rw-r--r--TAO/tests/MT_Client/client.conf2
-rw-r--r--TAO/tests/Makefile3
79 files changed, 8267 insertions, 3088 deletions
diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a
index b637a7191da..af417b577ac 100644
--- a/TAO/ChangeLogs/ChangeLog-02a
+++ b/TAO/ChangeLogs/ChangeLog-02a
@@ -1,3 +1,199 @@
+Fri Jun 16 12:07:39 2000 Carlos O'Ryan <coryan@uci.edu>
+
+ * The following changes fix the [BUGID:175] and [BUGID:266] bugs.
+
+ * tao/Makefile:
+ * tao/Makefile.am:
+ * tao/Makefile.bor:
+ Add new files to the Makefiles
+
+ * tao/Reply_Dispatcher.h:
+ * tao/Reply_Dispatcher.i:
+ * tao/Reply_Dispatcher.cpp:
+ Moved each one of the reply dispatcher implementations to a
+ separate file.
+ Removed the leader_follower_condition_variable method because it
+ only make sense for synchronous reply dispatchers.
+ Add new methods to:
+ + get a callback when the dispatcher is bound to the transport
+ muxing strategy: this simplifies the interactions with other
+ components in the pluggable protocol framework.
+ + get a callback is the connection is closed: this is the main
+ change to fix [BUGID:266]
+
+ * tao/Asynch_Reply_Dispatcher.h:
+ * tao/Asynch_Reply_Dispatcher.i:
+ * tao/Asynch_Reply_Dispatcher.cpp:
+ The asynchronous reply dispatchers.
+ When the connection_closed() method is invoked a COMM_FAILURE
+ exception is raised.
+
+ * tao/Synch_Reply_Dispatcher.h:
+ * tao/Synch_Reply_Dispatcher.i:
+ * tao/Synch_Reply_Dispatcher.cpp:
+ The synchornous reply dispatchers.
+ The connection_closed() method simply sets the reply_received
+ flag and signals the waiting thread (throught the
+ Waiting_Strategy).
+ Then the dispatcher is bound to the waiting thread the right
+ condition variable is fetched.
+
+ * tao/DII_Reply_Dispatcher.h:
+ * tao/DII_Reply_Dispatcher.i:
+ * tao/DII_Reply_Dispatcher.cpp:
+ Very similar to the asynchornous reply dispatchers, but using
+ DII under the hood.
+
+ * tao/Leader_Follower.h:
+ * tao/Leader_Follower.i:
+ Add new set_upcall_thread. If the leader thread is invoking a
+ possibly long running upcall (such as a Request, LocateRequest
+ or AMI Reply) the method should be invoked to elect a new leader
+ thread and avoid dead-locks.
+ Refactor the reset_event_loop_thread() to a separate method.
+ Moved some of the inline methods around so they are defined in
+ the right order.
+
+ * tao/GIOP_Message_Acceptors.cpp:
+ Whenever an upcall is received the set_upcall_thread() method is
+ invoked on the leader follower set.
+ That give us an opportunity to wake up another thread to become
+ the leader.
+ This is part of the fixes for [BUGID:175]
+
+ * tao/Invocation.h:
+ This file needs to include Synch_Reply_Dispatcher now.
+
+ * tao/Asynch_Invocation.h:
+ * tao/Asynch_Invocation.i:
+ * tao/Asynch_Invocation.cpp:
+ Move the DII Invocation to its own file.
+
+ * tao/DII_Invocation.h:
+ * tao/DII_Invocation.i:
+ * tao/DII_Invocation.cpp:
+ New file for the DII (deferred) invocations. This decouples
+ other components in the ORB from the DII support.
+
+ * tao/Transport_Mux_Strategy.cpp:
+ * tao/Transport_Mux_Strategy.h:
+
+ * tao/Wait_Strategy.h:
+ * tao/Wait_Strategy.cpp:
+ * tao/Wait_On_Read.h:
+ * tao/Wait_On_Read.cpp:
+ * tao/Wait_On_Reactor.h:
+ * tao/Wait_On_Reactor.cpp:
+ * tao/Wait_On_Leader_Follower.h:
+ * tao/Wait_On_Leader_Follower.cpp:
+ Move the waiting strategies to separate files.
+ Remove the handle_input() method.
+ The Event_Handlers for each protocol call the Transport's
+ handle_client_input directly.
+ In the old days the handle_input method ensured that the leader
+ follower mutex was acquired during the event processing, so when
+ signaling a Synch_Reply_Dispatcher the changes were protected by
+ the right mutex. Now we just acquire the mutex when needed,
+ the Reply_Dispatcher invokes the new <reply_dispatched> method
+ to let us change the state and signal the condition variables in
+ a thread safe way.
+
+ So in the old days we had the following control flow:
+ Reactor -> Event_Handler
+ -> Wait_Strategy (acquire lock)
+ -> Transport (read data)
+ -> Reply_Dispatcher
+ now we have
+ Reactor -> Event_Handler
+ -> Transport
+ -> Reply_Dispatcher
+ -> Wait_Strategy (lock and signal)
+ <- return to Reply Dispatcher
+
+ the new path is easier to analyze and understand. It could be
+ simplified even further, but that would require more classes and
+ a better understanding of how we will implement pluggable
+ messaging.
+ Add a new connection_closed() method to wake up any threads when
+ the connection is suddenly closed, in the old days we did this
+ by detecting that the handle_client_input() method returned an
+ error.
+
+ * tao/ORB_Core.cpp:
+ The event loop thread can loose its leader role as part of
+ making an upcall (see the new set_upcall_thread) method.
+ We need to acquire the event loop thread role after each return
+ from handle_events().
+ This is part of the fixes for [BUGID:175]
+
+ * tao/IIOP_Connect.cpp:
+ * tao/SHMIOP_Connect.cpp:
+ * tao/UIOP_Connect.cpp:
+ Must invoke the transport's handle_client_input directly.
+
+ * tao/IIOP_Transport.cpp:
+ * tao/SHMIOP_Transport.cpp:
+ * tao/UIOP_Transport.cpp:
+ If the connection is closed invoke the connection_closed()
+ callback on the transport muxing strategy.
+
+ * tao/default_client.cpp:
+ This is the only place where the new header files for all the
+ strategies (Wait, Muxing, etc.) are needed.
+
+ * tao/Stub.cpp:
+ Neeeds the new DII_Invocation header file.
+
+ * tao/GIOP_Message_Lite.h:
+ * tao/IIOP_Profile.cpp:
+ * tao/Pluggable.h:
+ * tao/Pluggable.cpp:
+ * tao/UIOP_Transport.h:
+ * tao/SHMIOP_Transport.h:
+ * tests/Connection_Purging/Connection_Purging.cpp:
+ Cosmetic fixes, mostly white space at the end of lines.
+
+ * tao/InterfaceC.cpp:
+ After cleaning up some header files this #include was missing.
+
+ * tests/Makefile:
+ * tests/LongUpcalls/Makefile:
+ * tests/LongUpcalls/Test.idl:
+ * tests/LongUpcalls/run_test.pl:
+ * tests/LongUpcalls/svc.conf:
+ * tests/LongUpcalls/LongUpcalls.dsw:
+ * tests/LongUpcalls/AMI_Manager.h:
+ * tests/LongUpcalls/AMI_Manager.cpp:
+ * tests/LongUpcalls/Controller.h:
+ * tests/LongUpcalls/Controller.cpp:
+ * tests/LongUpcalls/Manager.h:
+ * tests/LongUpcalls/Manager.cpp:
+ * tests/LongUpcalls/Manager_Handler.h:
+ * tests/LongUpcalls/Manager_Handler.cpp:
+ * tests/LongUpcalls/ami_client.cpp:
+ * tests/LongUpcalls/ami_client.dsp:
+ * tests/LongUpcalls/ami_server.cpp:
+ * tests/LongUpcalls/ami_server.dsp:
+ * tests/LongUpcalls/blocking_client.cpp:
+ * tests/LongUpcalls/blocking_client.dsp:
+ * tests/LongUpcalls/blocking_server.cpp:
+ * tests/LongUpcalls/blocking_server.dsp:
+ New test to check that there are no dead-locks during long
+ callbaks.
+ One of the tests (ami_client) is not working, but is not part of
+ the bugs that I tried to fix. We need something like
+ [BUGID:575] to get this one right.
+
+ * tests/InterOp-Naming/Makefile:
+ Update dependencies
+
+ * tests/Endpoint_Per_Priority/client.cpp:
+ * tests/Endpoint_Per_Priority/server.cpp:
+ Fixed comments and debug messages.
+
+ * tests/MT_Client/client.conf:
+ Using a null lock is not a good idea here.
+
Fri Jun 16 13:16:49 2000 Angelo Corsaro <corsaro@cs.wustl.edu>
* tao/RT_Policy_i.cpp:
diff --git a/TAO/tao/Asynch_Invocation.cpp b/TAO/tao/Asynch_Invocation.cpp
index 4f884f084fa..1d057a495a4 100644
--- a/TAO/tao/Asynch_Invocation.cpp
+++ b/TAO/tao/Asynch_Invocation.cpp
@@ -3,19 +3,19 @@
#include "tao/Asynch_Invocation.h"
+ACE_RCSID(tao, Asynch_Invocation, "$Id$")
+
+#if (TAO_HAS_AMI_CALLBACK == 1) || (TAO_HAS_AMI_POLLER == 1)
+
#include "tao/Timeprobe.h"
#include "tao/Stub.h"
-#include "tao/Principal.h"
#include "tao/Object_KeyC.h"
#include "tao/Transport_Mux_Strategy.h"
-#include "tao/debug.h"
#if !defined (__ACE_INLINE__)
# include "tao/Asynch_Invocation.i"
#endif /* ! __ACE_INLINE__ */
-ACE_RCSID(tao, Asynch_Invocation, "$Id$")
-
#if defined (ACE_ENABLE_TIMEPROBES)
static const char *TAO_Asynch_Invocation_Timeprobe_Description[] =
@@ -49,8 +49,6 @@ ACE_TIMEPROBE_EVENT_DESCRIPTIONS (TAO_Asynch_Invocation_Timeprobe_Description,
#endif /* ACE_ENABLE_TIMEPROBES */
-#if (TAO_HAS_AMI_CALLBACK == 1) || (TAO_HAS_AMI_POLLER == 1)
-
void
TAO_GIOP_Twoway_Asynch_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException))
@@ -110,68 +108,3 @@ TAO_GIOP_Twoway_Asynch_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV)
}
#endif /* TAO_HAS_AMI_CALLBACK == 1 || TAO_HAS_AMI_POLLER == 1 */
-
-//**************************************************************************
-
-#if (TAO_HAS_MINIMUM_CORBA == 0)
-
-void
-TAO_GIOP_DII_Deferred_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- this->TAO_GIOP_Invocation::start (ACE_TRY_ENV);
- ACE_CHECK;
-
- this->target_spec_.target_specifier (this->profile_->object_key ());
- this->transport_->start_request (this->orb_core_,
- this->target_spec_,
- this->out_stream_,
- ACE_TRY_ENV);
- ACE_CHECK;
-}
-
-int
-TAO_GIOP_DII_Deferred_Invocation::invoke (CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- TAO_FUNCTION_PP_TIMEPROBE (TAO_GIOP_ASYNCH_INVOCATION_INVOKE_START);
-
- return this->invoke_i (ACE_TRY_ENV);
-}
-
-
-int
-TAO_GIOP_DII_Deferred_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- // Register a reply dispatcher for this Asynch_Invocation. Use the
- // heap allocated reply dispatcher.
-
- int retval =
- this->transport_->tms ()->bind_dispatcher (this->op_details_.request_id (),
- this->rd_);
- if (retval == -1)
- {
- // @@ What is the right way to handle this error?
- this->close_connection ();
- ACE_THROW_RETURN (CORBA::INTERNAL (TAO_DEFAULT_MINOR_CODE,
- CORBA::COMPLETED_NO),
- TAO_INVOKE_EXCEPTION);
- }
-
- // Just send the request, without trying to wait for the reply.
- retval = TAO_GIOP_Invocation::invoke (0,
- ACE_TRY_ENV);
- ACE_CHECK_RETURN (retval);
-
- if (retval != TAO_INVOKE_OK)
- return retval;
-
- // Everything executed ok; lets remember the transport for later.
- this->rd_->transport (this->transport_);
-
- // We do not wait for the reply. Let us return.
- return TAO_INVOKE_OK;
-}
-
-#endif /* TAO_HAS_MINIMUM_CORBA */
diff --git a/TAO/tao/Asynch_Invocation.h b/TAO/tao/Asynch_Invocation.h
index 1a341f24b6f..805e7315175 100644
--- a/TAO/tao/Asynch_Invocation.h
+++ b/TAO/tao/Asynch_Invocation.h
@@ -1,15 +1,11 @@
// This may look like C, but it's really -*- C++ -*-
// $Id$
-
// ============================================================================
//
// = LIBRARY
// TAO
//
-// = FILENAME
-// Asynch_Invocation.h
-//
// = DESCRIPTION
// Encapsulate the logic for remote Asynchronous Invocations.
//
@@ -29,10 +25,11 @@
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
-#include "tao/MessagingC.h"
-
#if (TAO_HAS_AMI_CALLBACK == 1) || (TAO_HAS_AMI_POLLER == 1)
+#include "tao/MessagingC.h"
+#include "tao/Asynch_Reply_Dispatcher.h"
+
class TAO_Export TAO_GIOP_Twoway_Asynch_Invocation : public TAO_GIOP_Invocation
{
// = TITLE
@@ -82,64 +79,11 @@ private:
// Reply dispatcher for the current synchronous Asynch_Invocation.
};
-#endif /* TAO_HAS_AMI_CALLBACK == 1 || TAO_HAS_AMI_POLLER == 1 */
-
-
-//***********************************************************************
-
-#if (TAO_HAS_MINIMUM_CORBA == 0)
-
-class TAO_Export TAO_GIOP_DII_Deferred_Invocation : public TAO_GIOP_Invocation
-{
- // = TITLE
- // Sends a two-way request does not expect the reply.
- //
- // = DESCRIPTION
- // This class connects (or lookups a connection from the cache) to
- // the remote server, builds the CDR stream for the Request, send
- // the CDR stream and returns.
- //
-public:
- TAO_GIOP_DII_Deferred_Invocation (TAO_Stub *data,
- TAO_ORB_Core* orb_core,
- const CORBA::Request_ptr req);
- // Constructor.
-
- void start (CORBA_Environment &TAO_IN_ENV =
- TAO_default_environment ())
- ACE_THROW_SPEC ((CORBA::SystemException));
- // Calls TAO_GIOP_Asynch_Invocation::start.
-
- int invoke (CORBA_Environment &TAO_IN_ENV =
- TAO_default_environment ())
- ACE_THROW_SPEC ((CORBA::SystemException));
- // Send request, block until any reply comes back, and unmarshal
- // reply parameters as appropriate.
-
-
- // TAO_InputCDR &inp_stream (void);
- // // Return the underlying input stream.
- //
-
- const IOP::ServiceContextList& reply_service_info (void) const;
- // Accessor to the reply ServiceContextList.
-
-private:
- int invoke_i (CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException));
- // Implementation of the invoke() methods, handles the basic
- // send/reply code and the system exceptions.
-
-private:
- TAO_DII_Deferred_Reply_Dispatcher *rd_;
- // Reply dispatcher for the current synchronous Asynch_Invocation.
-};
-
-#endif /* TAO_HAS_MINIMUM_CORBA */
-
#if defined (__ACE_INLINE__)
# include "tao/Asynch_Invocation.i"
#endif /* __ACE_INLINE__ */
+#endif /* TAO_HAS_AMI_CALLBACK == 1 || TAO_HAS_AMI_POLLER == 1 */
+
#include "ace/post.h"
#endif /* TAO_ASYNCH_INVOCATION_H */
diff --git a/TAO/tao/Asynch_Invocation.i b/TAO/tao/Asynch_Invocation.i
index c36219613ab..e4d3fa79e05 100644
--- a/TAO/tao/Asynch_Invocation.i
+++ b/TAO/tao/Asynch_Invocation.i
@@ -30,29 +30,3 @@ TAO_GIOP_Twoway_Asynch_Invocation (TAO_Stub *stub,
}
#endif /* TAO_HAS_AMI_CALLBACK == 1 || TAO_HAS_AMI_POLLER == 1 */
-
-//****************************************************************************
-
-#if (TAO_HAS_MINIMUM_CORBA == 0)
-
-ACE_INLINE
-TAO_GIOP_DII_Deferred_Invocation::
-TAO_GIOP_DII_Deferred_Invocation (TAO_Stub *stub,
- TAO_ORB_Core *orb_core,
- const CORBA::Request_ptr req)
- : TAO_GIOP_Invocation (stub,
- req->operation (),
- ACE_OS::strlen (req->operation ()),
- orb_core),
- rd_ (0)
-{
- // New reply dispatcher on the heap, because
- // we will go out of scope and hand over the
- // reply dispatcher to the ORB.
- // So this->rd_ is 0, because we do not need to
- // hold a pointer to it.
- ACE_NEW (rd_,
- TAO_DII_Deferred_Reply_Dispatcher (req));
-}
-
-#endif /* TAO_HAS_MINIMUM_CORBA */
diff --git a/TAO/tao/Asynch_Reply_Dispatcher.cpp b/TAO/tao/Asynch_Reply_Dispatcher.cpp
new file mode 100644
index 00000000000..b627d96074b
--- /dev/null
+++ b/TAO/tao/Asynch_Reply_Dispatcher.cpp
@@ -0,0 +1,147 @@
+// $Id$
+
+
+#include "tao/Asynch_Reply_Dispatcher.h"
+
+ACE_RCSID(tao, Asynch_Reply_Dispatcher, "$Id$")
+
+#if (TAO_HAS_AMI_CALLBACK == 1) || (TAO_HAS_AMI_POLLER == 1)
+
+#include "tao/GIOP_Message_State.h"
+#include "tao/ORB_Core.h"
+#include "tao/Leader_Follower.h"
+#include "tao/debug.h"
+
+#if !defined (__ACE_INLINE__)
+#include "tao/Asynch_Reply_Dispatcher.i"
+#endif /* __ACE_INLINE__ */
+
+// Constructor.
+TAO_Asynch_Reply_Dispatcher::
+ TAO_Asynch_Reply_Dispatcher (const TAO_Reply_Handler_Skeleton &reply_handler_skel,
+ Messaging::ReplyHandler_ptr reply_handler)
+ : reply_handler_skel_ (reply_handler_skel),
+ reply_handler_ (Messaging::ReplyHandler::_duplicate (reply_handler)),
+ transport_ (0)
+{
+}
+
+// Destructor.
+TAO_Asynch_Reply_Dispatcher::~TAO_Asynch_Reply_Dispatcher (void)
+{
+ if (this->transport_ != 0)
+ this->transport_->idle_after_reply ();
+}
+
+// Dispatch the reply.
+int
+TAO_Asynch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status,
+ const TAO_GIOP_Version & /*version*/,
+ IOP::ServiceContextList &reply_ctx,
+ TAO_GIOP_Message_State *message_state)
+{
+ 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.
+ CORBA::ULong max = reply_ctx.maximum ();
+ CORBA::ULong len = reply_ctx.length ();
+ IOP::ServiceContext* context_list = reply_ctx.get_buffer (1);
+ this->reply_service_info_.replace (max, len, context_list, 1);
+
+
+ if (TAO_debug_level >= 4)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P | %t):TAO_Asynch_Reply_Dispatcher::dispatch_reply:\n"));
+ }
+
+ CORBA::ULong reply_error = TAO_AMI_REPLY_NOT_OK;
+ switch (reply_status)
+ {
+ case TAO_PLUGGABLE_MESSAGE_NO_EXCEPTION:
+ reply_error = TAO_AMI_REPLY_OK;
+ break;
+ case TAO_PLUGGABLE_MESSAGE_USER_EXCEPTION:
+ reply_error = TAO_AMI_REPLY_USER_EXCEPTION;
+ break;
+ case TAO_PLUGGABLE_MESSAGE_SYSTEM_EXCEPTION:
+ reply_error = TAO_AMI_REPLY_SYSTEM_EXCEPTION;
+ break;
+ default:
+ case TAO_PLUGGABLE_MESSAGE_LOCATION_FORWARD:
+ // @@ Michael: Not even the spec mentions this case.
+ // We have to think about this case.
+ // Handle the forwarding and return so the stub restarts the
+ // request!
+ reply_error = TAO_AMI_REPLY_NOT_OK;
+ break;
+ }
+
+ ACE_TRY_NEW_ENV
+ {
+ // Call the Reply Handler's skeleton.
+ reply_handler_skel_ (this->message_state_->cdr,
+ this->reply_handler_.in (),
+ reply_error,
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ if (TAO_debug_level >= 4)
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception during reply handler");
+ }
+ ACE_ENDTRY;
+
+ // This was dynamically allocated. Now the job is done. Commit
+ // suicide here.
+ delete this;
+
+ return 1;
+}
+
+TAO_GIOP_Message_State *
+TAO_Asynch_Reply_Dispatcher::message_state (void)
+{
+ return this->message_state_;
+}
+
+void
+TAO_Asynch_Reply_Dispatcher::dispatcher_bound (TAO_Transport*)
+{
+}
+
+void
+TAO_Asynch_Reply_Dispatcher::connection_closed (void)
+{
+ ACE_TRY_NEW_ENV
+ {
+ // Generate a fake exception....
+ CORBA::COMM_FAILURE comm_failure (0, CORBA::COMPLETED_MAYBE);
+ TAO_OutputCDR out_cdr;
+ comm_failure._tao_encode (out_cdr, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ // Turn into an output CDR
+ TAO_InputCDR cdr (out_cdr);
+
+ this->reply_handler_skel_ (cdr,
+ this->reply_handler_.in (),
+ TAO_AMI_REPLY_SYSTEM_EXCEPTION,
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ if (TAO_debug_level >= 4)
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Asynch_Reply_Dispacher::connection_closed");
+
+ }
+ ACE_ENDTRY;
+}
+
+#endif /* TAO_HAS_AMI_CALLBACK == 1 || TAO_HAS_AMI_POLLER == 1 */
diff --git a/TAO/tao/Asynch_Reply_Dispatcher.h b/TAO/tao/Asynch_Reply_Dispatcher.h
new file mode 100644
index 00000000000..fd524ed7af4
--- /dev/null
+++ b/TAO/tao/Asynch_Reply_Dispatcher.h
@@ -0,0 +1,105 @@
+// This may look like C, but it's really -*- C++ -*-
+// $Id$
+
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO
+//
+// = DESCRIPTION
+// Dispatch the reply appropriately.
+//
+// = AUTHOR
+// Alexander Babu Arulanthu <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#ifndef TAO_ASYNCH_REPLY_DISPATCHER_H
+#define TAO_ASYNCH_REPLY_DISPATCHER_H
+#include "ace/pre.h"
+
+#include "tao/orbconf.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+// *********************************************************************
+
+#if (TAO_HAS_AMI_CALLBACK == 1) || (TAO_HAS_AMI_POLLER == 1)
+
+#include "tao/Reply_Dispatcher.h"
+#include "tao/MessagingC.h"
+
+class TAO_Export TAO_Asynch_Reply_Dispatcher : public TAO_Reply_Dispatcher
+{
+ // = TITLE
+ //
+ // Reply dispatcher for Asynchoronous Method Invocation (AMI)s.
+ //
+ // = DESCRIPTION
+ //
+
+public:
+ TAO_Asynch_Reply_Dispatcher (const TAO_Reply_Handler_Skeleton &reply_handler_skel,
+ Messaging::ReplyHandler_ptr reply_handler_ptr);
+ // Constructor.
+
+ virtual ~TAO_Asynch_Reply_Dispatcher (void);
+ // Destructor.
+
+ CORBA::ULong reply_status (void) const;
+ // Get the reply status.
+
+ const TAO_GIOP_Version& version (void) const;
+ // Get the GIOP version
+
+ void transport (TAO_Transport *t);
+ // Sets the transport for this invocation.
+
+ // = The Reply Dispatcher methods
+ virtual int dispatch_reply (CORBA::ULong reply_status,
+ const TAO_GIOP_Version& version,
+ IOP::ServiceContextList& reply_ctx,
+ TAO_GIOP_Message_State* message_state);
+ virtual TAO_GIOP_Message_State *message_state (void);
+ virtual void dispatcher_bound (TAO_Transport *t);
+ virtual void connection_closed (void);
+
+protected:
+ IOP::ServiceContextList reply_service_info_;
+ // The service context list
+ // Note, that this is not a reference as in
+ // the synchronous case. We own the reply_service_info
+ // because our TAO_Asynch_Invocation will go out
+ // of scope before we are done.
+
+private:
+ CORBA::ULong reply_status_;
+ // Reply or LocateReply status.
+
+ // TAO_GIOP_Version version_;
+ // The version
+
+ TAO_GIOP_Message_State *message_state_;
+ // CDR stream for reading the input.
+
+ const TAO_Reply_Handler_Skeleton reply_handler_skel_;
+ // Skeleton for the call back method in the Reply Handler.
+
+ Messaging::ReplyHandler_var reply_handler_;
+ // Reply Handler passed in the Asynchronous Invocation.
+
+ TAO_Transport *transport_;
+ // This invocation is using this transport, may change...
+};
+
+#endif /* TAO_HAS_AMI_CALLBACK == 1 || TAO_HAS_AMI_POLLER == 1 */
+
+#if defined (__ACE_INLINE__)
+#include "tao/Asynch_Reply_Dispatcher.i"
+#endif /* __ACE_INLINE__ */
+
+#include "ace/post.h"
+#endif /* TAO_ASYNCH_REPLY_DISPATCHER_H */
diff --git a/TAO/tao/Asynch_Reply_Dispatcher.i b/TAO/tao/Asynch_Reply_Dispatcher.i
new file mode 100644
index 00000000000..ede940e4e63
--- /dev/null
+++ b/TAO/tao/Asynch_Reply_Dispatcher.i
@@ -0,0 +1,21 @@
+// $Id$
+
+
+ACE_INLINE CORBA::ULong
+TAO_Asynch_Reply_Dispatcher::reply_status (void) const
+{
+ return this->reply_status_;
+}
+
+#if 0
+ACE_INLINE const TAO_GIOP_Version &
+TAO_Asynch_Reply_Dispatcher::version (void) const
+{
+ return this->version_;
+}
+#endif /*if 0*/
+ACE_INLINE void
+TAO_Asynch_Reply_Dispatcher::transport (TAO_Transport *t)
+{
+ this->transport_ = t;
+}
diff --git a/TAO/tao/DII_Invocation.cpp b/TAO/tao/DII_Invocation.cpp
new file mode 100644
index 00000000000..f6a480f27b0
--- /dev/null
+++ b/TAO/tao/DII_Invocation.cpp
@@ -0,0 +1,78 @@
+// $Id$
+
+
+#include "tao/DII_Invocation.h"
+
+ACE_RCSID(tao, DII_Invocation, "$Id$")
+
+#if (TAO_HAS_MINIMUM_CORBA == 0)
+
+#include "tao/Stub.h"
+#include "tao/Principal.h"
+#include "tao/Object_KeyC.h"
+#include "tao/Transport_Mux_Strategy.h"
+#include "tao/debug.h"
+
+#if !defined (__ACE_INLINE__)
+# include "tao/DII_Invocation.i"
+#endif /* ! __ACE_INLINE__ */
+
+
+void
+TAO_GIOP_DII_Deferred_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ this->TAO_GIOP_Invocation::start (ACE_TRY_ENV);
+ ACE_CHECK;
+
+ this->target_spec_.target_specifier (this->profile_->object_key ());
+ this->transport_->start_request (this->orb_core_,
+ this->target_spec_,
+ this->out_stream_,
+ ACE_TRY_ENV);
+ ACE_CHECK;
+}
+
+int
+TAO_GIOP_DII_Deferred_Invocation::invoke (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->invoke_i (ACE_TRY_ENV);
+}
+
+
+int
+TAO_GIOP_DII_Deferred_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // Register a reply dispatcher for this Asynch_Invocation. Use the
+ // heap allocated reply dispatcher.
+
+ int retval =
+ this->transport_->tms ()->bind_dispatcher (this->op_details_.request_id (),
+ this->rd_);
+ if (retval == -1)
+ {
+ // @@ What is the right way to handle this error?
+ this->close_connection ();
+ ACE_THROW_RETURN (CORBA::INTERNAL (TAO_DEFAULT_MINOR_CODE,
+ CORBA::COMPLETED_NO),
+ TAO_INVOKE_EXCEPTION);
+ }
+
+ // Just send the request, without trying to wait for the reply.
+ retval = TAO_GIOP_Invocation::invoke (0,
+ ACE_TRY_ENV);
+ ACE_CHECK_RETURN (retval);
+
+ if (retval != TAO_INVOKE_OK)
+ return retval;
+
+ // Everything executed ok; lets remember the transport for later.
+ this->rd_->transport (this->transport_);
+
+ // We do not wait for the reply. Let us return.
+ return TAO_INVOKE_OK;
+}
+
+#endif /* TAO_HAS_MINIMUM_CORBA */
diff --git a/TAO/tao/DII_Invocation.h b/TAO/tao/DII_Invocation.h
new file mode 100644
index 00000000000..e7b89201025
--- /dev/null
+++ b/TAO/tao/DII_Invocation.h
@@ -0,0 +1,87 @@
+// This may look like C, but it's really -*- C++ -*-
+// $Id$
+
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO
+//
+// = DESCRIPTION
+// Encapsulate the logic for remote Asynchronous Invocations.
+//
+// = AUTHOR
+// Carlos O'Ryan <coryan@cs.wustl.edu> and Alexander Babu Arulanthu
+// <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#ifndef TAO_DII_INVOCATION_H
+#define TAO_DII_INVOCATION_H
+#include "ace/pre.h"
+
+#include "tao/Invocation.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#if (TAO_HAS_MINIMUM_CORBA == 0)
+
+#include "tao/DII_Reply_Dispatcher.h"
+#include "tao/Request.h"
+
+class TAO_Export TAO_GIOP_DII_Deferred_Invocation : public TAO_GIOP_Invocation
+{
+ // = TITLE
+ // Sends a two-way request does not expect the reply.
+ //
+ // = DESCRIPTION
+ // This class connects (or lookups a connection from the cache) to
+ // the remote server, builds the CDR stream for the Request, send
+ // the CDR stream and returns.
+ //
+public:
+ TAO_GIOP_DII_Deferred_Invocation (TAO_Stub *data,
+ TAO_ORB_Core* orb_core,
+ const CORBA::Request_ptr req);
+ // Constructor.
+
+ void start (CORBA_Environment &TAO_IN_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Calls TAO_GIOP_Asynch_Invocation::start.
+
+ int invoke (CORBA_Environment &TAO_IN_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Send request, block until any reply comes back, and unmarshal
+ // reply parameters as appropriate.
+
+
+ // TAO_InputCDR &inp_stream (void);
+ // // Return the underlying input stream.
+ //
+
+ const IOP::ServiceContextList& reply_service_info (void) const;
+ // Accessor to the reply ServiceContextList.
+
+private:
+ int invoke_i (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Implementation of the invoke() methods, handles the basic
+ // send/reply code and the system exceptions.
+
+private:
+ TAO_DII_Deferred_Reply_Dispatcher *rd_;
+ // Reply dispatcher for the current synchronous Asynch_Invocation.
+};
+
+#if defined (__ACE_INLINE__)
+# include "tao/DII_Invocation.i"
+#endif /* __ACE_INLINE__ */
+
+#endif /* TAO_HAS_MINIMUM_CORBA */
+
+#include "ace/post.h"
+#endif /* TAO_ASYNCH_INVOCATION_H */
diff --git a/TAO/tao/DII_Invocation.i b/TAO/tao/DII_Invocation.i
new file mode 100644
index 00000000000..70a21a36a73
--- /dev/null
+++ b/TAO/tao/DII_Invocation.i
@@ -0,0 +1,24 @@
+// This may look like C, but it's really -*- C++ -*-
+//
+// $Id$
+//
+
+ACE_INLINE
+TAO_GIOP_DII_Deferred_Invocation::
+TAO_GIOP_DII_Deferred_Invocation (TAO_Stub *stub,
+ TAO_ORB_Core *orb_core,
+ const CORBA::Request_ptr req)
+ : TAO_GIOP_Invocation (stub,
+ req->operation (),
+ ACE_OS::strlen (req->operation ()),
+ orb_core),
+ rd_ (0)
+{
+ // New reply dispatcher on the heap, because
+ // we will go out of scope and hand over the
+ // reply dispatcher to the ORB.
+ // So this->rd_ is 0, because we do not need to
+ // hold a pointer to it.
+ ACE_NEW (rd_,
+ TAO_DII_Deferred_Reply_Dispatcher (req));
+}
diff --git a/TAO/tao/DII_Reply_Dispatcher.cpp b/TAO/tao/DII_Reply_Dispatcher.cpp
new file mode 100644
index 00000000000..bd09d4e74b0
--- /dev/null
+++ b/TAO/tao/DII_Reply_Dispatcher.cpp
@@ -0,0 +1,123 @@
+// $Id$
+
+
+#include "tao/DII_Reply_Dispatcher.h"
+
+ACE_RCSID(tao, DII_Reply_Dispatcher, "$Id$")
+
+#if (TAO_HAS_MINIMUM_CORBA == 0)
+
+#include "tao/Pluggable.h"
+#include "tao/Environment.h"
+#include "tao/GIOP_Message_State.h"
+#include "tao/Request.h"
+#include "tao/debug.h"
+
+#if !defined (__ACE_INLINE__)
+#include "tao/DII_Reply_Dispatcher.i"
+#endif /* __ACE_INLINE__ */
+
+// Constructor.
+TAO_DII_Deferred_Reply_Dispatcher::TAO_DII_Deferred_Reply_Dispatcher (const CORBA::Request_ptr req)
+ : req_ (req),
+ transport_ (0)
+{
+}
+
+// Destructor.
+TAO_DII_Deferred_Reply_Dispatcher::~TAO_DII_Deferred_Reply_Dispatcher (void)
+{
+ if (this->transport_ != 0)
+ this->transport_->idle_after_reply ();
+}
+
+// Dispatch the reply.
+int
+TAO_DII_Deferred_Reply_Dispatcher::dispatch_reply (
+ CORBA::ULong reply_status,
+ const TAO_GIOP_Version & /*version*/,
+ IOP::ServiceContextList &reply_ctx,
+ TAO_GIOP_Message_State *message_state
+ )
+{
+ 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.
+ CORBA::ULong max = reply_ctx.maximum ();
+ CORBA::ULong len = reply_ctx.length ();
+ IOP::ServiceContext* context_list = reply_ctx.get_buffer (1);
+ this->reply_service_info_.replace (max, len, context_list, 1);
+
+
+ if (TAO_debug_level >= 4)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P | %t):TAO_Asynch_Reply_Dispatcher::dispatch_reply:\n")));
+ }
+
+ ACE_TRY_NEW_ENV
+ {
+ // Call the Request back and send the reply data.
+ this->req_->handle_response (this->message_state_->cdr,
+ reply_status,
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ if (TAO_debug_level >= 4)
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception during reply handler");
+ }
+ ACE_ENDTRY;
+
+ // This was dynamically allocated. Now the job is done. Commit
+ // suicide here.
+ delete this;
+
+ return 1;
+}
+
+TAO_GIOP_Message_State *
+TAO_DII_Deferred_Reply_Dispatcher::message_state (void)
+{
+ return this->message_state_;
+}
+
+void
+TAO_DII_Deferred_Reply_Dispatcher::dispatcher_bound (TAO_Transport*)
+{
+}
+
+void
+TAO_DII_Deferred_Reply_Dispatcher::connection_closed (void)
+{
+ ACE_TRY_NEW_ENV
+ {
+ // Generate a fake exception....
+ CORBA::COMM_FAILURE comm_failure (0, CORBA::COMPLETED_MAYBE);
+ TAO_OutputCDR out_cdr;
+ comm_failure._tao_encode (out_cdr, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ // Turn into an output CDR
+ TAO_InputCDR cdr (out_cdr);
+
+ this->req_->handle_response (cdr,
+ TAO_PLUGGABLE_MESSAGE_SYSTEM_EXCEPTION,
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ if (TAO_debug_level >= 4)
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "DII_Deferred_Reply_Dispacher::connection_closed");
+
+ }
+ ACE_ENDTRY;
+}
+
+#endif /* TAO_HAS_MINIMUM_CORBA */
diff --git a/TAO/tao/DII_Reply_Dispatcher.h b/TAO/tao/DII_Reply_Dispatcher.h
new file mode 100644
index 00000000000..a8ccb46e4fd
--- /dev/null
+++ b/TAO/tao/DII_Reply_Dispatcher.h
@@ -0,0 +1,102 @@
+// This may look like C, but it's really -*- C++ -*-
+// $Id$
+
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO
+//
+// = DESCRIPTION
+// Dispatch the reply appropriately.
+//
+// = AUTHOR
+// Alexander Babu Arulanthu <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#ifndef TAO_DII_REPLY_DISPATCHER_H
+#define TAO_DII_REPLY_DISPATCHER_H
+#include "ace/pre.h"
+
+#include "tao/orbconf.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#if (TAO_HAS_MINIMUM_CORBA == 0)
+
+#include "tao/Reply_Dispatcher.h"
+
+class TAO_Export TAO_DII_Deferred_Reply_Dispatcher : public TAO_Reply_Dispatcher
+{
+ // = TITLE
+ //
+ // Reply dispatcher for DII deferred requests.
+ //
+ // = DESCRIPTION
+ //
+
+public:
+ TAO_DII_Deferred_Reply_Dispatcher (const CORBA::Request_ptr req);
+ // Constructor.
+
+ virtual ~TAO_DII_Deferred_Reply_Dispatcher (void);
+ // Destructor.
+
+ CORBA::ULong reply_status (void) const;
+ // Get the reply status.
+
+ const TAO_GIOP_Version& version (void) const;
+ // Get the GIOP version
+
+ void transport (TAO_Transport *t);
+ // Sets the transport for this invocation.
+
+ // = The Reply_Dispatcher methods
+ virtual int dispatch_reply (CORBA::ULong reply_status,
+ const TAO_GIOP_Version& version,
+ IOP::ServiceContextList& reply_ctx,
+ TAO_GIOP_Message_State* message_state);
+ virtual TAO_GIOP_Message_State *message_state (void);
+ virtual void dispatcher_bound (TAO_Transport*);
+ virtual void connection_closed (void);
+
+protected:
+ IOP::ServiceContextList reply_service_info_;
+ // The service context list
+ // Note, that this is not a reference as in
+ // the synchronous case. We own the reply_service_info
+ // because our TAO_Asynch_Invocation will go out
+ // of scope before we are done.
+
+private:
+ CORBA::ULong reply_status_;
+ // Reply or LocateReply status.
+
+ //TAO_GIOP_Version version_;
+ // The version
+
+ TAO_GIOP_Message_State *message_state_;
+ // CDR stream for reading the input.
+ // @@ Carlos : message_state should go away. All we need is the reply
+ // cdr. Is that right? (Alex).
+
+ const CORBA::Request_ptr req_;
+ // Where the reply needs to go.
+
+ TAO_Transport *transport_;
+ // This invocation is using this transport, may change...
+};
+
+#endif /* TAO_HAS_MINIMUM_CORBA */
+
+// *********************************************************************
+
+#if defined (__ACE_INLINE__)
+#include "tao/DII_Reply_Dispatcher.i"
+#endif /* __ACE_INLINE__ */
+
+#include "ace/post.h"
+#endif /* TAO_REPLY_DISPATCHER_H */
diff --git a/TAO/tao/DII_Reply_Dispatcher.i b/TAO/tao/DII_Reply_Dispatcher.i
new file mode 100644
index 00000000000..d1b661944c4
--- /dev/null
+++ b/TAO/tao/DII_Reply_Dispatcher.i
@@ -0,0 +1,26 @@
+// $Id$
+
+#if (TAO_HAS_MINIMUM_CORBA == 0)
+
+ACE_INLINE CORBA::ULong
+TAO_DII_Deferred_Reply_Dispatcher::reply_status (void) const
+{
+ return this->reply_status_;
+}
+
+#if 0
+ACE_INLINE const TAO_GIOP_Version&
+TAO_DII_Deferred_Reply_Dispatcher::version (void) const
+{
+ return this->version_;
+}
+
+#endif /*If 0 */
+
+ACE_INLINE void
+TAO_DII_Deferred_Reply_Dispatcher::transport (TAO_Transport *t)
+{
+ this->transport_ = t;
+}
+
+#endif /* TAO_HAS_MINIMUM_CORBA */
diff --git a/TAO/tao/GIOP_Message_Acceptors.cpp b/TAO/tao/GIOP_Message_Acceptors.cpp
index ba15f22cba3..623a5012829 100644
--- a/TAO/tao/GIOP_Message_Acceptors.cpp
+++ b/TAO/tao/GIOP_Message_Acceptors.cpp
@@ -6,6 +6,7 @@
#include "tao/debug.h"
#include "tao/GIOP_Utils.h"
#include "tao/GIOP_Server_Request.h"
+#include "tao/Leader_Follower.h"
#if !defined (__ACE_INLINE__)
# include "tao/GIOP_Message_Acceptors.i"
@@ -20,6 +21,8 @@ TAO_GIOP_Message_Acceptors::
TAO_InputCDR &input,
CORBA::Octet message_type)
{
+ orb_core->leader_follower ().set_upcall_thread ();
+
this->output_->reset ();
switch (message_type)
{
diff --git a/TAO/tao/GIOP_Message_Lite.h b/TAO/tao/GIOP_Message_Lite.h
index 5928868ef55..226880834fd 100644
--- a/TAO/tao/GIOP_Message_Lite.h
+++ b/TAO/tao/GIOP_Message_Lite.h
@@ -94,7 +94,7 @@ public:
CORBA::Octet message_type);
// Processes the messages from the connectors so that they can be
// passed on to the appropriate states.
-
+
CORBA::Boolean write_reply_header (TAO_OutputCDR &cdr,
TAO_Pluggable_Reply_Params &reply,
CORBA::Environment &ACE_TRY_ENV =
@@ -166,7 +166,7 @@ private:
const u_char *ptr,
size_t len);
// Print out the contents of the buffer.
-
+
ACE_Allocator *cdr_buffer_alloc_;
ACE_Allocator *cdr_dblock_alloc_;
// Allocators for the outpur CDR that we hold. As we cannot rely on
@@ -174,7 +174,7 @@ private:
// reason that we cannot believe the ORB core is that, for a
// multi-threaded servers it dishes out resources cached in
// TSS. This would be dangerous as TSS gets destroyed before we
- // would. So we have our own memory that we can rely on.
+ // would. So we have our own memory that we can rely on.
TAO_OutputCDR *output_;
// The output cdr for the GIOP lite message
diff --git a/TAO/tao/IIOP_Connect.cpp b/TAO/tao/IIOP_Connect.cpp
index 87c4dc79625..93356ae0be4 100644
--- a/TAO/tao/IIOP_Connect.cpp
+++ b/TAO/tao/IIOP_Connect.cpp
@@ -460,8 +460,10 @@ TAO_IIOP_Client_Connection_Handler::close (u_long)
int
TAO_IIOP_Client_Connection_Handler::handle_input (ACE_HANDLE)
{
- // Call the waiter to handle the input.
- return this->transport ()->wait_strategy ()->handle_input ();
+ int r = this->transport ()->handle_client_input ();
+ if (r == -1)
+ return -1;
+ return 0;
}
int
diff --git a/TAO/tao/IIOP_Profile.cpp b/TAO/tao/IIOP_Profile.cpp
index 8f71c2dd386..cea4fc9f718 100644
--- a/TAO/tao/IIOP_Profile.cpp
+++ b/TAO/tao/IIOP_Profile.cpp
@@ -450,7 +450,7 @@ TAO_IIOP_Profile::encode (TAO_OutputCDR &stream) const
// Create the profile body
this->create_profile_body (encap);
-
+
// write the encapsulation as an octet sequence...
stream << CORBA::ULong (encap.total_length ());
stream.write_octet_array_mb (encap.begin ());
@@ -465,9 +465,9 @@ TAO_IIOP_Profile::create_tagged_profile (void)
// Check whether we have already created the TaggedProfile
if (this->tagged_profile_.profile_data.get_buffer () == 0)
{
- // As we have not created we will now create the TaggedProfile
+ // As we have not created we will now create the TaggedProfile
this->tagged_profile_.tag = TAO_TAG_IIOP_PROFILE;
-
+
// Create the encapsulation....
TAO_OutputCDR encap (ACE_CDR::DEFAULT_BUFSIZE,
TAO_ENCAP_BYTE_ORDER,
@@ -476,17 +476,17 @@ TAO_IIOP_Profile::create_tagged_profile (void)
this->orb_core_->orb_params ()->cdr_memcpy_tradeoff (),
this->orb_core_->to_iso8859 (),
this->orb_core_->to_unicode ());
-
+
// Create the profile body
this->create_profile_body (encap);
-
+
// Place the message block in to the Sequence of Octets that we
- // have
+ // have
this->tagged_profile_.profile_data.replace (
(CORBA::ULong) encap.total_length (),
encap.begin ());
}
-
+
return this->tagged_profile_;
}
@@ -494,24 +494,21 @@ void
TAO_IIOP_Profile::create_profile_body (TAO_OutputCDR &encap) const
{
encap.write_octet (TAO_ENCAP_BYTE_ORDER);
-
+
// The GIOP version
encap.write_octet (this->version_.major);
encap.write_octet (this->version_.minor);
-
+
// STRING hostname from profile
encap.write_string (this->host_.in ());
-
+
// UNSIGNED SHORT port number
encap.write_ushort (this->port_);
-
+
// OCTET SEQUENCE for object key
encap << this->object_key_;
-
+
if (this->version_.major > 1
|| this->version_.minor > 0)
this->tagged_components ().encode (encap);
}
-
-
-
diff --git a/TAO/tao/IIOP_Transport.cpp b/TAO/tao/IIOP_Transport.cpp
index c63eaeb9e5a..0fb3a7f926f 100644
--- a/TAO/tao/IIOP_Transport.cpp
+++ b/TAO/tao/IIOP_Transport.cpp
@@ -210,6 +210,10 @@ TAO_IIOP_Client_Transport::send_request (TAO_Stub *stub,
// Return 0, when the reply is not read fully, 1 if it is read fully.
// @@ This code should go in the TAO_Transport class is repeated for
// each transport!!
+// @@ Carlos says: no, the code should be factored out in GIOP helper
+// classes, but not in Transport. Transport must deal with
+// non-GIOP protocols, that may have completely different behavior.
+//
int
TAO_IIOP_Client_Transport::handle_client_input (int /* block */,
ACE_Time_Value *max_wait_time)
@@ -229,6 +233,7 @@ TAO_IIOP_Client_Transport::handle_client_input (int /* block */,
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("TAO (%P|%t) IIOP_Transport::handle_client_input -")
ACE_TEXT (" nil message state\n")));
+ this->tms_->connection_closed ();
return -1;
}
@@ -243,6 +248,8 @@ TAO_IIOP_Client_Transport::handle_client_input (int /* block */,
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("TAO (%P|%t) - %p\n"),
ACE_TEXT ("IIOP_Transport::handle_client_input, handle_input")));
+
+ this->tms_->connection_closed ();
return -1;
}
if (result == 0)
@@ -259,6 +266,7 @@ TAO_IIOP_Client_Transport::handle_client_input (int /* block */,
ACE_TEXT ("TAO (%P|%t) - %p\n"),
ACE_TEXT ("IIOP_Transport::handle_client_input, parse reply")));
message_state->reset ();
+ this->tms_->connection_closed ();
return -1;
}
@@ -277,6 +285,7 @@ TAO_IIOP_Client_Transport::handle_client_input (int /* block */,
ACE_TEXT ("handle_client_input - ")
ACE_TEXT ("dispatch reply failed\n")));
message_state->reset ();
+ this->tms_->connection_closed ();
return -1;
}
diff --git a/TAO/tao/InterfaceC.cpp b/TAO/tao/InterfaceC.cpp
index fb55bc32b90..0c21176d71e 100644
--- a/TAO/tao/InterfaceC.cpp
+++ b/TAO/tao/InterfaceC.cpp
@@ -8,11 +8,13 @@
// http://www.cs.wustl.edu/~schmidt/TAO.html
#include "InterfaceC.h"
-#include "tao/Stub.h"
-#include "tao/Invocation.h"
#if (TAO_HAS_INTERFACE_REPOSITORY == 1)
+#include "tao/Stub.h"
+#include "tao/Invocation.h"
+#include "tao/NVList.h"
+
#if !defined (__ACE_INLINE__)
#include "InterfaceC.i"
#endif /* !defined INLINE */
diff --git a/TAO/tao/Invocation.h b/TAO/tao/Invocation.h
index fb53122021e..92d7cd21b6d 100644
--- a/TAO/tao/Invocation.h
+++ b/TAO/tao/Invocation.h
@@ -38,7 +38,7 @@
#include "tao/ORB_Core.h"
#include "tao/Any.h"
-#include "tao/Reply_Dispatcher.h"
+#include "tao/Synch_Reply_Dispatcher.h"
#include "tao/TAOC.h"
#include "tao/operation_details.h"
#include "tao/target_specification.h"
diff --git a/TAO/tao/Leader_Follower.h b/TAO/tao/Leader_Follower.h
index 89d310e97bb..a6bfca1c025 100644
--- a/TAO/tao/Leader_Follower.h
+++ b/TAO/tao/Leader_Follower.h
@@ -42,6 +42,10 @@ public:
// The current thread is not a server thread anymore, reset any
// flags and counters.
+ void set_upcall_thread (void);
+ // This thread is going to perform an upcall, it will no longer be
+ // an event loop thread.
+
int leader_available (void) const;
// Is there any thread running as a leader?
@@ -106,6 +110,11 @@ private:
int wait_for_client_leader_to_complete (ACE_Time_Value *max_wait_time);
// Wait for the client leader to complete.
+ void reset_event_loop_thread_i (TAO_ORB_Core_TSS_Resources *tss);
+ // Implement the reset_event_loop_thread() method, once the TSS
+ // resources have been acquired.
+ // Also used in the set_upcall_thread.
+
private:
TAO_ORB_Core *orb_core_;
// The orb core
diff --git a/TAO/tao/Leader_Follower.i b/TAO/tao/Leader_Follower.i
index fcfac12cad6..6f63b0f61ba 100644
--- a/TAO/tao/Leader_Follower.i
+++ b/TAO/tao/Leader_Follower.i
@@ -23,6 +23,31 @@ TAO_Leader_Follower::get_tss_resources (void) const
}
ACE_INLINE int
+TAO_Leader_Follower::follower_available (void) const
+{
+ return !this->follower_set_.is_empty ();
+}
+
+ACE_INLINE int
+TAO_Leader_Follower::elect_new_leader (void)
+{
+ if (this->leaders_ == 0)
+ {
+ if (this->event_loop_threads_waiting_)
+ {
+ return this->event_loop_threads_condition_.broadcast ();
+ }
+ else if (this->follower_available ())
+ {
+ ACE_SYNCH_CONDITION* condition_ptr = this->get_next_follower ();
+ if (condition_ptr == 0 || condition_ptr->signal () == -1)
+ return -1;
+ }
+ }
+ return 0;
+}
+
+ACE_INLINE int
TAO_Leader_Follower::set_event_loop_thread (ACE_Time_Value *max_wait_time)
{
TAO_ORB_Core_TSS_Resources *tss = this->get_tss_resources ();
@@ -56,7 +81,7 @@ TAO_Leader_Follower::set_event_loop_thread (ACE_Time_Value *max_wait_time)
}
ACE_INLINE void
-TAO_Leader_Follower::reset_event_loop_thread (void)
+TAO_Leader_Follower::reset_event_loop_thread_i (TAO_ORB_Core_TSS_Resources *tss)
{
// Always decrement <event_loop_thread_>. If <event_loop_thread_>
// reaches 0 and we are not a client leader, we are done with our
@@ -64,7 +89,6 @@ TAO_Leader_Follower::reset_event_loop_thread (void)
// leaders. Otherwise, we just got done with a nested call to the
// event loop or a call to the event loop when we were the client
// leader.
- TAO_ORB_Core_TSS_Resources *tss = this->get_tss_resources ();
--tss->event_loop_thread_;
if (tss->event_loop_thread_ == 0 &&
@@ -72,6 +96,28 @@ TAO_Leader_Follower::reset_event_loop_thread (void)
--this->leaders_;
}
+ACE_INLINE void
+TAO_Leader_Follower::reset_event_loop_thread (void)
+{
+ TAO_ORB_Core_TSS_Resources *tss = this->get_tss_resources ();
+ if (tss->event_loop_thread_ > 0)
+ this->reset_event_loop_thread_i (tss);
+}
+
+ACE_INLINE void
+TAO_Leader_Follower::set_upcall_thread (void)
+{
+ TAO_ORB_Core_TSS_Resources *tss = this->get_tss_resources ();
+
+ if (tss->event_loop_thread_ > 0)
+ {
+ ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, this->lock ());
+ this->reset_event_loop_thread_i (tss);
+
+ this->elect_new_leader ();
+ }
+}
+
ACE_INLINE int
TAO_Leader_Follower::leader_available (void) const
{
@@ -149,31 +195,6 @@ TAO_Leader_Follower::is_client_leader_thread (void) const
}
ACE_INLINE int
-TAO_Leader_Follower::follower_available (void) const
-{
- return !this->follower_set_.is_empty ();
-}
-
-ACE_INLINE int
-TAO_Leader_Follower::elect_new_leader (void)
-{
- if (this->leaders_ == 0)
- {
- if (this->event_loop_threads_waiting_)
- {
- return this->event_loop_threads_condition_.broadcast ();
- }
- else if (this->follower_available ())
- {
- ACE_SYNCH_CONDITION* condition_ptr = this->get_next_follower ();
- if (condition_ptr == 0 || condition_ptr->signal () == -1)
- return -1;
- }
- }
- return 0;
-}
-
-ACE_INLINE int
TAO_Leader_Follower::add_follower (ACE_SYNCH_CONDITION *follower_ptr)
{
return this->follower_set_.insert (follower_ptr);
diff --git a/TAO/tao/Makefile b/TAO/tao/Makefile
index 0f77eca01ac..e13e333299a 100644
--- a/TAO/tao/Makefile
+++ b/TAO/tao/Makefile
@@ -32,9 +32,10 @@ PUB_HDRS = \
SHMIOP_Connector \
SHMIOP_Acceptor \
SHMIOP_Connect \
- Invocation \
operation_details \
+ Invocation \
Asynch_Invocation \
+ DII_Invocation \
Params \
Marshal \
Debug \
@@ -47,8 +48,16 @@ PUB_HDRS = \
Reactor_Holder \
Single_Reactor \
Wait_Strategy \
+ Wait_On_Read \
+ Wait_On_Reactor \
+ Wait_On_Leader_Follower \
Transport_Mux_Strategy \
+ Exclusive_TMS \
+ Muxed_TMS \
Reply_Dispatcher \
+ Synch_Reply_Dispatcher \
+ Asynch_Reply_Dispatcher \
+ DII_Reply_Dispatcher \
IORC \
IORS \
IORManipulation \
@@ -160,11 +169,12 @@ ORB_CORE_FILES = \
debug \
Object_KeyC \
Invocation \
+ Asynch_Invocation \
+ DII_Invocation \
operation_details \
Interceptor \
InterceptorC \
Smart_Proxies \
- Asynch_Invocation \
ORB_Core \
Leader_Follower \
Reactor_Registry \
@@ -179,8 +189,16 @@ ORB_CORE_FILES = \
IOR_LookupTable \
TAO \
Wait_Strategy \
+ Wait_On_Read \
+ Wait_On_Reactor \
+ Wait_On_Leader_Follower \
Transport_Mux_Strategy \
+ Exclusive_TMS \
+ Muxed_TMS \
Reply_Dispatcher \
+ Synch_Reply_Dispatcher \
+ Asynch_Reply_Dispatcher \
+ DII_Reply_Dispatcher \
IOPC \
IOPS \
PollableC \
@@ -584,6 +602,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
POAS.i \
Active_Object_Map.h \
Active_Object_Map.i \
@@ -810,7 +831,8 @@ realclean:
POAC.i \
Key_Adapters.i
-.obj/POA.o .obj/POA.so .shobj/POA.o .shobj/POA.so: POA.cpp $(ACE_ROOT)/ace/Auto_Ptr.h \
+.obj/POA.o .obj/POA.so .shobj/POA.o .shobj/POA.so: POA.cpp \
+ $(ACE_ROOT)/ace/Auto_Ptr.h \
$(ACE_ROOT)/ace/pre.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/post.h \
@@ -982,6 +1004,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
POAS.i \
Active_Object_Map.h \
Active_Object_Map.i \
@@ -1083,7 +1108,8 @@ realclean:
Acceptor_Registry.i \
Forwarding_Servant.h
-.obj/POAC.o .obj/POAC.so .shobj/POAC.o .shobj/POAC.so: POAC.cpp POAC.h \
+.obj/POAC.o .obj/POAC.so .shobj/POAC.o .shobj/POAC.so: POAC.cpp \
+ POAC.h \
$(ACE_ROOT)/ace/pre.h \
PolicyC.h \
CurrentC.h \
@@ -1205,6 +1231,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
POAS.i \
POA.h \
$(ACE_ROOT)/ace/Hash_Map_Manager.h \
@@ -1315,28 +1344,16 @@ realclean:
ORB_Core.i \
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ Synch_Reply_Dispatcher.h \
Reply_Dispatcher.h \
- Request.h \
- NVList.h \
- NVList.i \
- Context.h \
- Context.i \
- MessagingC.h \
- ValueBase.h \
- ValueBase.i \
- ValueFactory.h \
- ValueFactory.i \
- PollableC.h \
- PollableC.i \
- MessagingC.i \
- Request.i \
+ Reply_Dispatcher.i \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
- Reply_Dispatcher.i \
+ Synch_Reply_Dispatcher.i \
TAOC.h \
TAOC.i \
operation_details.h \
@@ -1355,7 +1372,8 @@ realclean:
MProfile.i \
Stub.i
-.obj/POAS.o .obj/POAS.so .shobj/POAS.o .shobj/POAS.so: POAS.cpp POAS.h \
+.obj/POAS.o .obj/POAS.so .shobj/POAS.o .shobj/POAS.so: POAS.cpp \
+ POAS.h \
$(ACE_ROOT)/ace/pre.h \
POAC.h \
PolicyC.h \
@@ -1477,6 +1495,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
POAS.i \
Server_Request.h \
IOPC.h \
@@ -1685,6 +1706,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
POAS.i \
poa_macros.h \
POAManager.i \
@@ -2078,6 +2102,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -2429,7 +2456,8 @@ realclean:
Any.h \
Typecode.h \
Typecode.i \
- Any.i ImplRepoC.i \
+ Any.i \
+ ImplRepoC.i \
Stub.h \
Pluggable.h \
$(ACE_ROOT)/ace/Message_Queue.h \
@@ -2522,6 +2550,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -2534,29 +2565,19 @@ realclean:
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
Invocation.h \
+ Synch_Reply_Dispatcher.h \
Reply_Dispatcher.h \
- Request.h \
- Context.h \
- Context.i \
- MessagingC.h \
- ValueBase.h \
- ValueBase.i \
- ValueFactory.h \
- ValueFactory.i \
- TimeBaseC.h \
- TimeBaseC.i \
- PollableC.h \
- PollableC.i \
- MessagingC.i \
- Request.i \
+ Reply_Dispatcher.i \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
- Reply_Dispatcher.i \
+ Synch_Reply_Dispatcher.i \
TAOC.h \
+ TimeBaseC.h \
+ TimeBaseC.i \
TAOC.i \
operation_details.h \
target_specification.h \
@@ -2567,7 +2588,8 @@ realclean:
Invocation.i
.obj/ImplRepoS.o .obj/ImplRepoS.so .shobj/ImplRepoS.o .shobj/ImplRepoS.so: ImplRepoS.cpp ImplRepoS.h \
- $(ACE_ROOT)/ace/pre.h ImplRepoC.h \
+ $(ACE_ROOT)/ace/pre.h \
+ ImplRepoC.h \
Object.h \
corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
@@ -2673,7 +2695,8 @@ realclean:
Any.h \
Typecode.h \
Typecode.i \
- Any.i ImplRepoC.i \
+ Any.i \
+ ImplRepoC.i \
POAC.h \
PolicyC.h \
CurrentC.h \
@@ -2743,6 +2766,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
POAS.i \
Active_Object_Map.h \
Active_Object_Map.i \
@@ -3021,6 +3047,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -3035,29 +3064,7 @@ realclean:
Client_Strategy_Factory.h \
Wait_Strategy.h \
Transport_Mux_Strategy.h \
- GIOP_Message_State.h \
- Pluggable_Messaging.h \
- Pluggable_Messaging_Utils.h \
- Pluggable_Messaging_Utils.i \
- Pluggable_Messaging.i \
- GIOP_Message_State.i \
Reply_Dispatcher.h \
- Request.h \
- NVList.h \
- NVList.i \
- Context.h \
- Context.i \
- MessagingC.h \
- ValueBase.h \
- ValueBase.i \
- ValueFactory.h \
- ValueFactory.i \
- TimeBaseC.h \
- TimeBaseC.i \
- PollableC.h \
- PollableC.i \
- MessagingC.i \
- Request.i \
Reply_Dispatcher.i \
debug.h \
target_specification.h \
@@ -3455,6 +3462,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -3697,6 +3707,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
params.h \
params.i \
@@ -4112,6 +4125,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
params.h \
@@ -4395,6 +4411,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
params.h \
@@ -4682,6 +4701,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -4984,6 +5006,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -5280,6 +5305,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
params.h \
params.i \
@@ -5532,6 +5560,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -5802,6 +5833,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -6086,6 +6120,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
params.h \
@@ -6371,6 +6408,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
params.h \
@@ -6660,6 +6700,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -6965,6 +7008,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -7266,6 +7312,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
params.h \
params.i \
@@ -7518,6 +7567,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -7785,6 +7837,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -8076,6 +8131,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
params.h \
@@ -8369,6 +8427,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -8677,6 +8738,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -8981,6 +9045,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
params.h \
params.i \
@@ -9237,6 +9304,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -9510,6 +9580,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -9552,7 +9625,8 @@ realclean:
GIOP_Utils.i \
GIOP_Message_Lite.i
-.obj/IORC.o .obj/IORC.so .shobj/IORC.o .shobj/IORC.so: IORC.cpp IORC.h \
+.obj/IORC.o .obj/IORC.so .shobj/IORC.o .shobj/IORC.so: IORC.cpp \
+ IORC.h \
$(ACE_ROOT)/ace/pre.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/post.h \
@@ -9750,6 +9824,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -9761,31 +9838,19 @@ realclean:
ORB_Core.i \
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ Synch_Reply_Dispatcher.h \
Reply_Dispatcher.h \
- Request.h \
- NVList.h \
- NVList.i \
- Context.h \
- Context.i \
- MessagingC.h \
- ValueBase.h \
- ValueBase.i \
- ValueFactory.h \
- ValueFactory.i \
- TimeBaseC.h \
- TimeBaseC.i \
- PollableC.h \
- PollableC.i \
- MessagingC.i \
- Request.i \
+ Reply_Dispatcher.i \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
- Reply_Dispatcher.i \
+ Synch_Reply_Dispatcher.i \
TAOC.h \
+ TimeBaseC.h \
+ TimeBaseC.i \
TAOC.i \
operation_details.h \
target_specification.h \
@@ -9795,7 +9860,8 @@ realclean:
operation_details.i \
Invocation.i
-.obj/IORS.o .obj/IORS.so .shobj/IORS.o .shobj/IORS.so: IORS.cpp IORS.h \
+.obj/IORS.o .obj/IORS.so .shobj/IORS.o .shobj/IORS.so: IORS.cpp \
+ IORS.h \
$(ACE_ROOT)/ace/pre.h \
IORC.h \
$(ACE_ROOT)/ace/OS.h \
@@ -10273,6 +10339,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -10307,14 +10376,19 @@ realclean:
ORB_Core.i \
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ Wait_On_Read.h \
Wait_Strategy.h \
+ Wait_On_Reactor.h \
+ Wait_On_Leader_Follower.h \
+ Exclusive_TMS.h \
Transport_Mux_Strategy.h \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
- GIOP_Message_State.i
+ GIOP_Message_State.i \
+ Muxed_TMS.h
.obj/default_server.o .obj/default_server.so .shobj/default_server.o .shobj/default_server.so: default_server.cpp \
default_server.h \
@@ -10484,6 +10558,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -10713,6 +10790,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
params.h \
params.i \
@@ -11890,7 +11970,8 @@ realclean:
Interceptor.i \
ORB.i
-.obj/Any.o .obj/Any.so .shobj/Any.o .shobj/Any.so: Any.cpp Any.h \
+.obj/Any.o .obj/Any.so .shobj/Any.o .shobj/Any.so: Any.cpp \
+ Any.h \
$(ACE_ROOT)/ace/pre.h \
CDR.h \
corbafwd.h \
@@ -12058,6 +12139,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -12289,7 +12373,10 @@ realclean:
DynAnyC.h \
DynAnyC.i \
DomainC.h \
- DomainC.i
+ DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i
.obj/CurrentS.o .obj/CurrentS.so .shobj/CurrentS.o .shobj/CurrentS.so: CurrentS.cpp \
CurrentC.h \
@@ -12439,6 +12526,9 @@ realclean:
POAC.h \
POAC.i \
Servant_Base.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Server_Request.h \
IOPC.h \
IOPC.i \
@@ -12810,6 +12900,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -13014,6 +13107,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
POAS.i \
Active_Object_Map.h \
Active_Object_Map.i \
@@ -13094,14 +13190,16 @@ realclean:
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
Invocation.h \
+ Synch_Reply_Dispatcher.h \
Reply_Dispatcher.h \
+ Reply_Dispatcher.i \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
- Reply_Dispatcher.i \
+ Synch_Reply_Dispatcher.i \
TAOC.h \
TAOC.i \
operation_details.h \
@@ -13286,6 +13384,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
POAS.i \
Active_Object_Map.h \
Active_Object_Map.i \
@@ -13366,14 +13467,16 @@ realclean:
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
Invocation.h \
+ Synch_Reply_Dispatcher.h \
Reply_Dispatcher.h \
+ Reply_Dispatcher.i \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
- Reply_Dispatcher.i \
+ Synch_Reply_Dispatcher.i \
TAOC.h \
TAOC.i \
operation_details.h \
@@ -13551,7 +13654,8 @@ realclean:
Any.h \
Any.i
-.obj/ORB.o .obj/ORB.so .shobj/ORB.o .shobj/ORB.so: ORB.cpp ORB.h \
+.obj/ORB.o .obj/ORB.so .shobj/ORB.o .shobj/ORB.so: ORB.cpp \
+ ORB.h \
$(ACE_ROOT)/ace/pre.h \
corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
@@ -13785,6 +13889,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
ORB_Core.h \
Policy_Manager.h \
Policy_Manager.i \
@@ -14138,6 +14245,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Invocation.h \
ORB_Core.h \
Policy_Manager.h \
@@ -14152,31 +14262,19 @@ realclean:
ORB_Core.i \
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ Synch_Reply_Dispatcher.h \
Reply_Dispatcher.h \
- Request.h \
- NVList.h \
- NVList.i \
- Context.h \
- Context.i \
- MessagingC.h \
- ValueBase.h \
- ValueBase.i \
- ValueFactory.h \
- ValueFactory.i \
- TimeBaseC.h \
- TimeBaseC.i \
- PollableC.h \
- PollableC.i \
- MessagingC.i \
- Request.i \
+ Reply_Dispatcher.i \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
- Reply_Dispatcher.i \
+ Synch_Reply_Dispatcher.i \
TAOC.h \
+ TimeBaseC.h \
+ TimeBaseC.i \
TAOC.i \
operation_details.h \
target_specification.h \
@@ -14340,6 +14438,9 @@ realclean:
POAC.h \
POAC.i \
Servant_Base.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
ORB.h \
IOR_LookupTable.h \
Services.h \
@@ -14784,6 +14885,9 @@ realclean:
POA_CORBA.h \
DynAnyC.h \
DynAnyC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -14795,31 +14899,19 @@ realclean:
ORB_Core.i \
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ Synch_Reply_Dispatcher.h \
Reply_Dispatcher.h \
- Request.h \
- NVList.h \
- NVList.i \
- Context.h \
- Context.i \
- MessagingC.h \
- ValueBase.h \
- ValueBase.i \
- ValueFactory.h \
- ValueFactory.i \
- TimeBaseC.h \
- TimeBaseC.i \
- PollableC.h \
- PollableC.i \
- MessagingC.i \
- Request.i \
+ Reply_Dispatcher.i \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
- Reply_Dispatcher.i \
+ Synch_Reply_Dispatcher.i \
TAOC.h \
+ TimeBaseC.h \
+ TimeBaseC.i \
TAOC.i \
operation_details.h \
target_specification.h \
@@ -14983,6 +15075,9 @@ realclean:
POAC.h \
POAC.i \
Servant_Base.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
ORB.h \
IOR_LookupTable.h \
Services.h \
@@ -15587,6 +15682,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -15794,7 +15892,8 @@ realclean:
Typecode.i \
Pluggable.i
-.obj/Stub.o .obj/Stub.so .shobj/Stub.o .shobj/Stub.so: Stub.cpp Stub.h \
+.obj/Stub.o .obj/Stub.so .shobj/Stub.o .shobj/Stub.so: Stub.cpp \
+ Stub.h \
$(ACE_ROOT)/ace/pre.h \
Pluggable.h \
corbafwd.h \
@@ -15994,6 +16093,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -16005,29 +16107,19 @@ realclean:
ORB_Core.i \
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ Synch_Reply_Dispatcher.h \
Reply_Dispatcher.h \
- Request.h \
- Context.h \
- Context.i \
- MessagingC.h \
- ValueBase.h \
- ValueBase.i \
- ValueFactory.h \
- ValueFactory.i \
- TimeBaseC.h \
- TimeBaseC.i \
- PollableC.h \
- PollableC.i \
- MessagingC.i \
- Request.i \
+ Reply_Dispatcher.i \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
- Reply_Dispatcher.i \
+ Synch_Reply_Dispatcher.i \
TAOC.h \
+ TimeBaseC.h \
+ TimeBaseC.i \
TAOC.i \
operation_details.h \
target_specification.h \
@@ -16037,20 +16129,35 @@ realclean:
operation_details.i \
Invocation.i \
Asynch_Invocation.h \
+ MessagingC.h \
+ ValueBase.h \
+ ValueBase.i \
+ ValueFactory.h \
+ ValueFactory.i \
+ PollableC.h \
+ PollableC.i \
+ MessagingC.i \
+ Asynch_Reply_Dispatcher.h \
+ Asynch_Reply_Dispatcher.i \
Asynch_Invocation.i \
+ DII_Invocation.h \
+ DII_Reply_Dispatcher.h \
+ DII_Reply_Dispatcher.i \
+ Request.h \
+ Context.h \
+ Context.i \
+ Request.i \
+ DII_Invocation.i \
Client_Strategy_Factory.h \
- debug.h \
Sync_Strategies.h \
Sync_Strategies.i \
- $(ACE_ROOT)/ace/Auto_Ptr.h \
- $(ACE_ROOT)/ace/Auto_Ptr.i \
- $(ACE_ROOT)/ace/Auto_Ptr.cpp \
Buffering_Constraint_Policy.h \
Buffering_Constraint_Policy.i \
Messaging_Policy_i.h \
Messaging_Policy_i.i \
Client_Priority_Policy.h \
Client_Priority_Policy.i \
+ debug.h \
RT_Policy_i.h \
RTCORBAS.h \
IOPS.h \
@@ -16069,7 +16176,10 @@ realclean:
RTCORBAS_T.i \
RTCORBAS_T.cpp \
RTCORBAS.i \
- RT_Policy_i.i
+ RT_Policy_i.i \
+ $(ACE_ROOT)/ace/Auto_Ptr.h \
+ $(ACE_ROOT)/ace/Auto_Ptr.i \
+ $(ACE_ROOT)/ace/Auto_Ptr.cpp
.obj/Typecode.o .obj/Typecode.so .shobj/Typecode.o .shobj/Typecode.so: Typecode.cpp \
Typecode.h \
@@ -16400,6 +16510,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -16855,6 +16968,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -17345,6 +17461,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -17379,31 +17498,19 @@ realclean:
ORB_Core.i \
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ Synch_Reply_Dispatcher.h \
Reply_Dispatcher.h \
- Request.h \
- NVList.h \
- NVList.i \
- Context.h \
- Context.i \
- MessagingC.h \
- ValueBase.h \
- ValueBase.i \
- ValueFactory.h \
- ValueFactory.i \
- TimeBaseC.h \
- TimeBaseC.i \
- PollableC.h \
- PollableC.i \
- MessagingC.i \
- Request.i \
+ Reply_Dispatcher.i \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
- Reply_Dispatcher.i \
+ Synch_Reply_Dispatcher.i \
TAOC.h \
+ TimeBaseC.h \
+ TimeBaseC.i \
TAOC.i \
operation_details.h \
target_specification.h \
@@ -17432,15 +17539,25 @@ realclean:
Wait_Strategy.h \
Transport_Mux_Strategy.h \
Messaging_Policy_i.h \
+ MessagingC.h \
+ ValueBase.h \
+ ValueBase.i \
+ ValueFactory.h \
+ ValueFactory.i \
+ PollableC.h \
+ PollableC.i \
+ MessagingC.i \
Messaging_Policy_i.i \
Client_Priority_Policy.h \
Client_Priority_Policy.i \
GIOP_Utils.h \
GIOP_Utils.i
-.obj/operation_details.o .obj/operation_details.so .shobj/operation_details.o .shobj/operation_details.so: operation_details.cpp \
- operation_details.h \
+.obj/Asynch_Invocation.o .obj/Asynch_Invocation.so .shobj/Asynch_Invocation.o .shobj/Asynch_Invocation.so: Asynch_Invocation.cpp \
+ Asynch_Invocation.h \
$(ACE_ROOT)/ace/pre.h \
+ Invocation.h \
+ CDR.h \
corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
$(ACE_ROOT)/ace/Message_Block.h \
@@ -17528,9 +17645,38 @@ realclean:
$(ACE_ROOT)/ace/CORBA_macros.h \
varbase.h \
corbafwd.i \
- IOPC.h \
- CDR.h \
CDR.i \
+ ORB_Core.h \
+ ORB.h \
+ Exception.h \
+ Exception.i \
+ IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ Services.h \
Sequence.h \
Managed_Types.h \
Managed_Types.i \
@@ -17538,16 +17684,131 @@ realclean:
Sequence_T.h \
Sequence_T.i \
Sequence_T.cpp \
+ Services.i \
+ IORManipulation.h \
+ Object.h \
+ Object.i \
+ IORS.h \
+ IORC.h \
+ Environment.h \
+ Environment.i \
+ IORC.i \
+ Servant_Base.h \
+ POAC.h \
+ PolicyC.h \
+ CurrentC.h \
+ CurrentC.i \
+ Encodable.h \
+ PolicyC.i \
+ POAC.i \
+ Servant_Base.i \
+ IORS.i \
+ Interceptor.h \
+ InterceptorC.h \
+ IOPC.h \
IOPC.i \
+ InterceptorC.i \
+ Interceptor.i \
+ ORB.i \
+ Policy_Manager.h \
+ POA_CORBA.h \
+ DynAnyC.h \
+ Any.h \
+ Typecode.h \
+ Typecode.i \
+ Any.i \
+ DynAnyC.i \
+ DomainC.h \
+ DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
+ Policy_Manager.i \
+ Resource_Factory.h \
+ Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ Pluggable.i \
+ Protocol_Factory.h \
+ params.h \
+ params.i \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ Synch_Reply_Dispatcher.h \
+ Reply_Dispatcher.h \
+ Reply_Dispatcher.i \
+ GIOP_Message_State.h \
+ Pluggable_Messaging.h \
+ Pluggable_Messaging_Utils.h \
+ Pluggable_Messaging_Utils.i \
+ Pluggable_Messaging.i \
+ GIOP_Message_State.i \
+ Synch_Reply_Dispatcher.i \
+ TAOC.h \
+ TimeBaseC.h \
+ TimeBaseC.i \
+ TAOC.i \
+ operation_details.h \
target_specification.h \
Object_KeyC.h \
Object_KeyC.i \
target_specification.i \
- operation_details.i
+ operation_details.i \
+ Invocation.i \
+ MessagingC.h \
+ ValueBase.h \
+ ValueBase.i \
+ ValueFactory.h \
+ ValueFactory.i \
+ PollableC.h \
+ PollableC.i \
+ MessagingC.i \
+ Asynch_Reply_Dispatcher.h \
+ Asynch_Reply_Dispatcher.i \
+ Asynch_Invocation.i \
+ Timeprobe.h \
+ $(ACE_ROOT)/ace/Timeprobe.h \
+ Stub.h \
+ MProfile.h \
+ Profile.h \
+ Tagged_Components.h \
+ CONV_FRAMEC.h \
+ CONV_FRAMEC.i \
+ Tagged_Components.i \
+ Profile.i \
+ MProfile.i \
+ Stub.i \
+ Transport_Mux_Strategy.h
-.obj/Interceptor.o .obj/Interceptor.so .shobj/Interceptor.o .shobj/Interceptor.so: Interceptor.cpp \
- corbafwd.h \
+.obj/DII_Invocation.o .obj/DII_Invocation.so .shobj/DII_Invocation.o .shobj/DII_Invocation.so: DII_Invocation.cpp \
+ DII_Invocation.h \
$(ACE_ROOT)/ace/pre.h \
+ Invocation.h \
+ CDR.h \
+ corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
$(ACE_ROOT)/ace/Message_Block.h \
$(ACE_ROOT)/ace/ACE.h \
@@ -17634,11 +17895,38 @@ realclean:
$(ACE_ROOT)/ace/CORBA_macros.h \
varbase.h \
corbafwd.i \
- Interceptor.h \
- InterceptorC.h \
- IOPC.h \
- CDR.h \
CDR.i \
+ ORB_Core.h \
+ ORB.h \
+ Exception.h \
+ Exception.i \
+ IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ Services.h \
Sequence.h \
Managed_Types.h \
Managed_Types.i \
@@ -17646,19 +17934,139 @@ realclean:
Sequence_T.h \
Sequence_T.i \
Sequence_T.cpp \
- IOPC.i \
+ Services.i \
+ IORManipulation.h \
Object.h \
Object.i \
- Exception.h \
- Exception.i \
+ IORS.h \
+ IORC.h \
Environment.h \
Environment.i \
+ IORC.i \
+ Servant_Base.h \
+ POAC.h \
+ PolicyC.h \
+ CurrentC.h \
+ CurrentC.i \
+ Encodable.h \
+ PolicyC.i \
+ POAC.i \
+ Servant_Base.i \
+ IORS.i \
+ Interceptor.h \
+ InterceptorC.h \
+ IOPC.h \
+ IOPC.i \
InterceptorC.i \
- Interceptor.i
+ Interceptor.i \
+ ORB.i \
+ Policy_Manager.h \
+ POA_CORBA.h \
+ DynAnyC.h \
+ Any.h \
+ Typecode.h \
+ Typecode.i \
+ Any.i \
+ DynAnyC.i \
+ DomainC.h \
+ DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
+ Policy_Manager.i \
+ Resource_Factory.h \
+ Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ Pluggable.i \
+ Protocol_Factory.h \
+ params.h \
+ params.i \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ Synch_Reply_Dispatcher.h \
+ Reply_Dispatcher.h \
+ Reply_Dispatcher.i \
+ GIOP_Message_State.h \
+ Pluggable_Messaging.h \
+ Pluggable_Messaging_Utils.h \
+ Pluggable_Messaging_Utils.i \
+ Pluggable_Messaging.i \
+ GIOP_Message_State.i \
+ Synch_Reply_Dispatcher.i \
+ TAOC.h \
+ TimeBaseC.h \
+ TimeBaseC.i \
+ TAOC.i \
+ operation_details.h \
+ target_specification.h \
+ Object_KeyC.h \
+ Object_KeyC.i \
+ target_specification.i \
+ operation_details.i \
+ Invocation.i \
+ DII_Reply_Dispatcher.h \
+ DII_Reply_Dispatcher.i \
+ Request.h \
+ NVList.h \
+ NVList.i \
+ Context.h \
+ Context.i \
+ MessagingC.h \
+ ValueBase.h \
+ ValueBase.i \
+ ValueFactory.h \
+ ValueFactory.i \
+ PollableC.h \
+ PollableC.i \
+ MessagingC.i \
+ Request.i \
+ DII_Invocation.i \
+ Stub.h \
+ MProfile.h \
+ Profile.h \
+ Tagged_Components.h \
+ CONV_FRAMEC.h \
+ CONV_FRAMEC.i \
+ Tagged_Components.i \
+ Profile.i \
+ MProfile.i \
+ Stub.i \
+ Principal.h \
+ Principal.i \
+ Transport_Mux_Strategy.h \
+ debug.h
-.obj/InterceptorC.o .obj/InterceptorC.so .shobj/InterceptorC.o .shobj/InterceptorC.so: InterceptorC.cpp InterceptorC.h \
- orbconf.h \
+.obj/operation_details.o .obj/operation_details.so .shobj/operation_details.o .shobj/operation_details.so: operation_details.cpp \
+ operation_details.h \
$(ACE_ROOT)/ace/pre.h \
+ corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/post.h \
$(ACE_ROOT)/ace/ace_wchar.h \
@@ -17679,12 +18087,112 @@ realclean:
$(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ try_macros.h \
+ orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ varbase.h \
+ corbafwd.i \
IOPC.h \
CDR.h \
+ CDR.i \
+ Sequence.h \
+ Managed_Types.h \
+ Managed_Types.i \
+ Sequence.i \
+ Sequence_T.h \
+ Sequence_T.i \
+ Sequence_T.cpp \
+ IOPC.i \
+ target_specification.h \
+ Object_KeyC.h \
+ Object_KeyC.i \
+ target_specification.i \
+ operation_details.i
+
+.obj/Interceptor.o .obj/Interceptor.so .shobj/Interceptor.o .shobj/Interceptor.so: Interceptor.cpp \
corbafwd.h \
+ $(ACE_ROOT)/ace/pre.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
$(ACE_ROOT)/ace/Message_Block.h \
$(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Malloc.h \
$(ACE_ROOT)/ace/Malloc_Base.h \
@@ -17744,9 +18252,14 @@ realclean:
$(ACE_ROOT)/ace/SString.i \
$(ACE_ROOT)/ace/CDR_Stream.i \
try_macros.h \
+ orbconf.h \
$(ACE_ROOT)/ace/CORBA_macros.h \
varbase.h \
corbafwd.i \
+ Interceptor.h \
+ InterceptorC.h \
+ IOPC.h \
+ CDR.h \
CDR.i \
Sequence.h \
Managed_Types.h \
@@ -17762,16 +18275,12 @@ realclean:
Exception.i \
Environment.h \
Environment.i \
- InterceptorC.i
+ InterceptorC.i \
+ Interceptor.i
-.obj/Smart_Proxies.o .obj/Smart_Proxies.so .shobj/Smart_Proxies.o .shobj/Smart_Proxies.so: Smart_Proxies.cpp \
- Smart_Proxies.h \
+.obj/InterceptorC.o .obj/InterceptorC.so .shobj/InterceptorC.o .shobj/InterceptorC.so: InterceptorC.cpp InterceptorC.h \
+ orbconf.h \
$(ACE_ROOT)/ace/pre.h \
- Object.h \
- corbafwd.h \
- $(ACE_ROOT)/ace/CDR_Stream.h \
- $(ACE_ROOT)/ace/Message_Block.h \
- $(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/post.h \
$(ACE_ROOT)/ace/ace_wchar.h \
@@ -17792,6 +18301,12 @@ realclean:
$(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/OS.i \
+ IOPC.h \
+ CDR.h \
+ corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Malloc.h \
$(ACE_ROOT)/ace/Malloc_Base.h \
@@ -17851,18 +18366,30 @@ realclean:
$(ACE_ROOT)/ace/SString.i \
$(ACE_ROOT)/ace/CDR_Stream.i \
try_macros.h \
- orbconf.h \
$(ACE_ROOT)/ace/CORBA_macros.h \
varbase.h \
corbafwd.i \
+ CDR.i \
+ Sequence.h \
+ Managed_Types.h \
+ Managed_Types.i \
+ Sequence.i \
+ Sequence_T.h \
+ Sequence_T.i \
+ Sequence_T.cpp \
+ IOPC.i \
+ Object.h \
Object.i \
- Smart_Proxies.i
+ Exception.h \
+ Exception.i \
+ Environment.h \
+ Environment.i \
+ InterceptorC.i
-.obj/Asynch_Invocation.o .obj/Asynch_Invocation.so .shobj/Asynch_Invocation.o .shobj/Asynch_Invocation.so: Asynch_Invocation.cpp \
- Asynch_Invocation.h \
+.obj/Smart_Proxies.o .obj/Smart_Proxies.so .shobj/Smart_Proxies.o .shobj/Smart_Proxies.so: Smart_Proxies.cpp \
+ Smart_Proxies.h \
$(ACE_ROOT)/ace/pre.h \
- Invocation.h \
- CDR.h \
+ Object.h \
corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
$(ACE_ROOT)/ace/Message_Block.h \
@@ -17950,165 +18477,8 @@ realclean:
$(ACE_ROOT)/ace/CORBA_macros.h \
varbase.h \
corbafwd.i \
- CDR.i \
- ORB_Core.h \
- ORB.h \
- Exception.h \
- Exception.i \
- IOR_LookupTable.h \
- $(ACE_ROOT)/ace/Hash_Map_Manager.h \
- $(ACE_ROOT)/ace/Functor.h \
- $(ACE_ROOT)/ace/Functor.i \
- $(ACE_ROOT)/ace/Functor_T.h \
- $(ACE_ROOT)/ace/Functor_T.i \
- $(ACE_ROOT)/ace/Functor_T.cpp \
- $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
- $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
- $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
- $(ACE_ROOT)/ace/Service_Config.h \
- $(ACE_ROOT)/ace/Service_Object.h \
- $(ACE_ROOT)/ace/Shared_Object.h \
- $(ACE_ROOT)/ace/Shared_Object.i \
- $(ACE_ROOT)/ace/Service_Object.i \
- $(ACE_ROOT)/ace/Service_Config.i \
- $(ACE_ROOT)/ace/Reactor.h \
- $(ACE_ROOT)/ace/Handle_Set.h \
- $(ACE_ROOT)/ace/Handle_Set.i \
- $(ACE_ROOT)/ace/Timer_Queue.h \
- $(ACE_ROOT)/ace/Timer_Queue_T.h \
- $(ACE_ROOT)/ace/Timer_Queue_T.i \
- $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
- $(ACE_ROOT)/ace/Reactor.i \
- $(ACE_ROOT)/ace/Reactor_Impl.h \
- $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
- Services.h \
- Sequence.h \
- Managed_Types.h \
- Managed_Types.i \
- Sequence.i \
- Sequence_T.h \
- Sequence_T.i \
- Sequence_T.cpp \
- Services.i \
- IORManipulation.h \
- Object.h \
Object.i \
- IORS.h \
- IORC.h \
- Environment.h \
- Environment.i \
- IORC.i \
- Servant_Base.h \
- POAC.h \
- PolicyC.h \
- CurrentC.h \
- CurrentC.i \
- Encodable.h \
- PolicyC.i \
- POAC.i \
- Servant_Base.i \
- IORS.i \
- Interceptor.h \
- InterceptorC.h \
- IOPC.h \
- IOPC.i \
- InterceptorC.i \
- Interceptor.i \
- ORB.i \
- Policy_Manager.h \
- POA_CORBA.h \
- DynAnyC.h \
- Any.h \
- Typecode.h \
- Typecode.i \
- Any.i \
- DynAnyC.i \
- DomainC.h \
- DomainC.i \
- Policy_Manager.i \
- Resource_Factory.h \
- Pluggable.h \
- $(ACE_ROOT)/ace/Message_Queue.h \
- $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
- $(ACE_ROOT)/ace/Message_Queue_T.h \
- $(ACE_ROOT)/ace/Message_Queue_T.i \
- $(ACE_ROOT)/ace/Message_Queue_T.cpp \
- $(ACE_ROOT)/ace/Strategies.h \
- $(ACE_ROOT)/ace/Strategies_T.h \
- $(ACE_ROOT)/ace/Synch_Options.h \
- $(ACE_ROOT)/ace/Synch_Options.i \
- $(ACE_ROOT)/ace/Thread_Manager.h \
- $(ACE_ROOT)/ace/Thread_Manager.i \
- $(ACE_ROOT)/ace/Strategies_T.i \
- $(ACE_ROOT)/ace/Strategies_T.cpp \
- $(ACE_ROOT)/ace/Service_Repository.h \
- $(ACE_ROOT)/ace/Service_Types.h \
- $(ACE_ROOT)/ace/Service_Types.i \
- $(ACE_ROOT)/ace/Service_Repository.i \
- $(ACE_ROOT)/ace/WFMO_Reactor.h \
- $(ACE_ROOT)/ace/WFMO_Reactor.i \
- $(ACE_ROOT)/ace/Strategies.i \
- $(ACE_ROOT)/ace/Message_Queue.i \
- Pluggable.i \
- Protocol_Factory.h \
- params.h \
- params.i \
- $(ACE_ROOT)/ace/Map_Manager.h \
- $(ACE_ROOT)/ace/Map_Manager.i \
- $(ACE_ROOT)/ace/Map_Manager.cpp \
- ORB_Core.i \
- $(ACE_ROOT)/ace/Dynamic_Service.h \
- $(ACE_ROOT)/ace/Dynamic_Service.cpp \
- Reply_Dispatcher.h \
- Request.h \
- NVList.h \
- NVList.i \
- Context.h \
- Context.i \
- MessagingC.h \
- ValueBase.h \
- ValueBase.i \
- ValueFactory.h \
- ValueFactory.i \
- TimeBaseC.h \
- TimeBaseC.i \
- PollableC.h \
- PollableC.i \
- MessagingC.i \
- Request.i \
- GIOP_Message_State.h \
- Pluggable_Messaging.h \
- Pluggable_Messaging_Utils.h \
- Pluggable_Messaging_Utils.i \
- Pluggable_Messaging.i \
- GIOP_Message_State.i \
- Reply_Dispatcher.i \
- TAOC.h \
- TAOC.i \
- operation_details.h \
- target_specification.h \
- Object_KeyC.h \
- Object_KeyC.i \
- target_specification.i \
- operation_details.i \
- Invocation.i \
- Asynch_Invocation.i \
- Timeprobe.h \
- $(ACE_ROOT)/ace/Timeprobe.h \
- Stub.h \
- MProfile.h \
- Profile.h \
- Tagged_Components.h \
- CONV_FRAMEC.h \
- CONV_FRAMEC.i \
- Tagged_Components.i \
- Profile.i \
- MProfile.i \
- Stub.i \
- Principal.h \
- Principal.i \
- Transport_Mux_Strategy.h \
- debug.h
+ Smart_Proxies.i
.obj/ORB_Core.o .obj/ORB_Core.so .shobj/ORB_Core.o .shobj/ORB_Core.so: ORB_Core.cpp \
ORB_Core.h \
@@ -18275,6 +18645,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -18549,6 +18922,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -18846,6 +19222,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -19055,6 +19434,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -19403,6 +19785,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
params.h \
params.i \
@@ -19713,6 +20098,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -20195,7 +20583,8 @@ realclean:
Environment.i \
debug.h
-.obj/TAO.o .obj/TAO.so .shobj/TAO.o .shobj/TAO.so: TAO.cpp TAO.h \
+.obj/TAO.o .obj/TAO.so .shobj/TAO.o .shobj/TAO.so: TAO.cpp \
+ TAO.h \
$(ACE_ROOT)/ace/pre.h \
corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
@@ -20439,6 +20828,253 @@ realclean:
orbconf.h \
$(ACE_ROOT)/ace/CORBA_macros.h \
varbase.h \
+ corbafwd.i
+
+.obj/Wait_On_Read.o .obj/Wait_On_Read.so .shobj/Wait_On_Read.o .shobj/Wait_On_Read.so: Wait_On_Read.cpp \
+ Wait_On_Read.h \
+ $(ACE_ROOT)/ace/pre.h \
+ Wait_Strategy.h \
+ corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ try_macros.h \
+ orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ varbase.h \
+ corbafwd.i \
+ Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ Sequence.h \
+ Managed_Types.h \
+ Managed_Types.i \
+ Sequence.i \
+ Sequence_T.h \
+ Sequence_T.i \
+ Sequence_T.cpp \
+ Typecode.h \
+ Exception.h \
+ Exception.i \
+ Typecode.i \
+ IOPC.h \
+ CDR.h \
+ CDR.i \
+ IOPC.i \
+ Pluggable.i
+
+.obj/Wait_On_Reactor.o .obj/Wait_On_Reactor.so .shobj/Wait_On_Reactor.o .shobj/Wait_On_Reactor.so: Wait_On_Reactor.cpp \
+ Wait_On_Reactor.h \
+ $(ACE_ROOT)/ace/pre.h \
+ Wait_Strategy.h \
+ corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ try_macros.h \
+ orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ varbase.h \
corbafwd.i \
Pluggable.h \
$(ACE_ROOT)/ace/Message_Queue.h \
@@ -20539,6 +21175,214 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
+ Policy_Manager.i \
+ Resource_Factory.h \
+ Protocol_Factory.h \
+ params.h \
+ params.i \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp
+
+.obj/Wait_On_Leader_Follower.o .obj/Wait_On_Leader_Follower.so .shobj/Wait_On_Leader_Follower.o .shobj/Wait_On_Leader_Follower.so: Wait_On_Leader_Follower.cpp \
+ Wait_On_Leader_Follower.h \
+ $(ACE_ROOT)/ace/pre.h \
+ Wait_Strategy.h \
+ corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ try_macros.h \
+ orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ varbase.h \
+ corbafwd.i \
+ Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ Sequence.h \
+ Managed_Types.h \
+ Managed_Types.i \
+ Sequence.i \
+ Sequence_T.h \
+ Sequence_T.i \
+ Sequence_T.cpp \
+ Typecode.h \
+ Exception.h \
+ Exception.i \
+ Typecode.i \
+ IOPC.h \
+ CDR.h \
+ CDR.i \
+ IOPC.i \
+ Pluggable.i \
+ ORB_Core.h \
+ ORB.h \
+ IOR_LookupTable.h \
+ Services.h \
+ Services.i \
+ IORManipulation.h \
+ Object.h \
+ Object.i \
+ IORS.h \
+ IORC.h \
+ Environment.h \
+ Environment.i \
+ IORC.i \
+ Servant_Base.h \
+ POAC.h \
+ PolicyC.h \
+ CurrentC.h \
+ CurrentC.i \
+ Encodable.h \
+ PolicyC.i \
+ POAC.i \
+ Servant_Base.i \
+ IORS.i \
+ Interceptor.h \
+ InterceptorC.h \
+ InterceptorC.i \
+ Interceptor.i \
+ ORB.i \
+ Policy_Manager.h \
+ POA_CORBA.h \
+ DynAnyC.h \
+ Any.h \
+ Any.i \
+ DynAnyC.i \
+ DomainC.h \
+ DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -20557,9 +21401,6 @@ realclean:
.obj/Transport_Mux_Strategy.o .obj/Transport_Mux_Strategy.so .shobj/Transport_Mux_Strategy.o .shobj/Transport_Mux_Strategy.so: Transport_Mux_Strategy.cpp \
Transport_Mux_Strategy.h \
$(ACE_ROOT)/ace/pre.h \
- GIOP_Message_State.h \
- Pluggable_Messaging.h \
- Pluggable_Messaging_Utils.h \
IOPC.h \
CDR.h \
corbafwd.h \
@@ -20658,11 +21499,275 @@ realclean:
Sequence_T.i \
Sequence_T.cpp \
IOPC.i \
+ Reply_Dispatcher.h \
+ Reply_Dispatcher.i
+
+.obj/Exclusive_TMS.o .obj/Exclusive_TMS.so .shobj/Exclusive_TMS.o .shobj/Exclusive_TMS.so: Exclusive_TMS.cpp \
+ Exclusive_TMS.h \
+ $(ACE_ROOT)/ace/pre.h \
+ Transport_Mux_Strategy.h \
+ IOPC.h \
+ CDR.h \
+ corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ try_macros.h \
+ orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ varbase.h \
+ corbafwd.i \
+ CDR.i \
+ Sequence.h \
+ Managed_Types.h \
+ Managed_Types.i \
+ Sequence.i \
+ Sequence_T.h \
+ Sequence_T.i \
+ Sequence_T.cpp \
+ IOPC.i \
+ GIOP_Message_State.h \
+ Pluggable_Messaging.h \
+ Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Exception.h \
Exception.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
+ Reply_Dispatcher.h \
+ Reply_Dispatcher.i \
+ Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ Typecode.h \
+ Typecode.i \
+ Pluggable.i \
+ debug.h
+
+.obj/Muxed_TMS.o .obj/Muxed_TMS.so .shobj/Muxed_TMS.o .shobj/Muxed_TMS.so: Muxed_TMS.cpp \
+ Muxed_TMS.h \
+ $(ACE_ROOT)/ace/pre.h \
+ Transport_Mux_Strategy.h \
+ IOPC.h \
+ CDR.h \
+ corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ try_macros.h \
+ orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ varbase.h \
+ corbafwd.i \
+ CDR.i \
+ Sequence.h \
+ Managed_Types.h \
+ Managed_Types.i \
+ Sequence.i \
+ Sequence_T.h \
+ Sequence_T.i \
+ Sequence_T.cpp \
+ IOPC.i \
$(ACE_ROOT)/ace/Functor.h \
$(ACE_ROOT)/ace/Functor.i \
$(ACE_ROOT)/ace/Functor_T.h \
@@ -20689,55 +21794,7 @@ realclean:
$(ACE_ROOT)/ace/Reactor_Impl.h \
$(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
Reply_Dispatcher.h \
- Request.h \
- ORB.h \
- IOR_LookupTable.h \
- Services.h \
- Services.i \
- IORManipulation.h \
- Object.h \
- Object.i \
- IORS.h \
- IORC.h \
- Environment.h \
- Environment.i \
- IORC.i \
- Servant_Base.h \
- POAC.h \
- PolicyC.h \
- CurrentC.h \
- CurrentC.i \
- Encodable.h \
- PolicyC.i \
- POAC.i \
- Servant_Base.i \
- IORS.i \
- Interceptor.h \
- InterceptorC.h \
- InterceptorC.i \
- Interceptor.i \
- ORB.i \
- NVList.h \
- Any.h \
- Typecode.h \
- Typecode.i \
- Any.i \
- NVList.i \
- Context.h \
- Context.i \
- MessagingC.h \
- ValueBase.h \
- ValueBase.i \
- ValueFactory.h \
- ValueFactory.i \
- TimeBaseC.h \
- TimeBaseC.i \
- PollableC.h \
- PollableC.i \
- MessagingC.i \
- Request.i \
Reply_Dispatcher.i \
- debug.h \
Pluggable.h \
$(ACE_ROOT)/ace/Message_Queue.h \
$(ACE_ROOT)/ace/IO_Cntl_Msg.h \
@@ -20760,13 +21817,28 @@ realclean:
$(ACE_ROOT)/ace/WFMO_Reactor.i \
$(ACE_ROOT)/ace/Strategies.i \
$(ACE_ROOT)/ace/Message_Queue.i \
- Pluggable.i
+ Typecode.h \
+ Exception.h \
+ Exception.i \
+ Typecode.i \
+ Pluggable.i \
+ GIOP_Message_State.h \
+ Pluggable_Messaging.h \
+ Pluggable_Messaging_Utils.h \
+ Pluggable_Messaging_Utils.i \
+ Pluggable_Messaging.i \
+ GIOP_Message_State.i \
+ debug.h
.obj/Reply_Dispatcher.o .obj/Reply_Dispatcher.so .shobj/Reply_Dispatcher.o .shobj/Reply_Dispatcher.so: Reply_Dispatcher.cpp \
Reply_Dispatcher.h \
$(ACE_ROOT)/ace/pre.h \
- Request.h \
- orbconf.h \
+ IOPC.h \
+ CDR.h \
+ corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/post.h \
$(ACE_ROOT)/ace/ace_wchar.h \
@@ -20787,10 +21859,110 @@ realclean:
$(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ try_macros.h \
+ orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ varbase.h \
+ corbafwd.i \
+ CDR.i \
+ Sequence.h \
+ Managed_Types.h \
+ Managed_Types.i \
+ Sequence.i \
+ Sequence_T.h \
+ Sequence_T.i \
+ Sequence_T.cpp \
+ IOPC.i \
+ Reply_Dispatcher.i
+
+.obj/Synch_Reply_Dispatcher.o .obj/Synch_Reply_Dispatcher.so .shobj/Synch_Reply_Dispatcher.o .shobj/Synch_Reply_Dispatcher.so: Synch_Reply_Dispatcher.cpp \
+ Synch_Reply_Dispatcher.h \
+ $(ACE_ROOT)/ace/pre.h \
+ Reply_Dispatcher.h \
+ IOPC.h \
+ CDR.h \
corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
$(ACE_ROOT)/ace/Message_Block.h \
$(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Malloc.h \
$(ACE_ROOT)/ace/Malloc_Base.h \
@@ -20850,12 +22022,31 @@ realclean:
$(ACE_ROOT)/ace/SString.i \
$(ACE_ROOT)/ace/CDR_Stream.i \
try_macros.h \
+ orbconf.h \
$(ACE_ROOT)/ace/CORBA_macros.h \
varbase.h \
corbafwd.i \
- ORB.h \
+ CDR.i \
+ Sequence.h \
+ Managed_Types.h \
+ Managed_Types.i \
+ Sequence.i \
+ Sequence_T.h \
+ Sequence_T.i \
+ Sequence_T.cpp \
+ IOPC.i \
+ Reply_Dispatcher.i \
+ GIOP_Message_State.h \
+ Pluggable_Messaging.h \
+ Pluggable_Messaging_Utils.h \
+ Pluggable_Messaging_Utils.i \
Exception.h \
Exception.i \
+ Pluggable_Messaging.i \
+ GIOP_Message_State.i \
+ Synch_Reply_Dispatcher.i \
+ ORB_Core.h \
+ ORB.h \
IOR_LookupTable.h \
$(ACE_ROOT)/ace/Hash_Map_Manager.h \
$(ACE_ROOT)/ace/Functor.h \
@@ -20883,13 +22074,6 @@ realclean:
$(ACE_ROOT)/ace/Reactor_Impl.h \
$(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
Services.h \
- Sequence.h \
- Managed_Types.h \
- Managed_Types.i \
- Sequence.i \
- Sequence_T.h \
- Sequence_T.i \
- Sequence_T.cpp \
Services.i \
IORManipulation.h \
Object.h \
@@ -20898,8 +22082,6 @@ realclean:
IORC.h \
Environment.h \
Environment.i \
- CDR.h \
- CDR.i \
IORC.i \
Servant_Base.h \
POAC.h \
@@ -20913,44 +22095,246 @@ realclean:
IORS.i \
Interceptor.h \
InterceptorC.h \
- IOPC.h \
- IOPC.i \
InterceptorC.i \
Interceptor.i \
ORB.i \
- NVList.h \
+ Policy_Manager.h \
+ POA_CORBA.h \
+ DynAnyC.h \
Any.h \
Typecode.h \
Typecode.i \
Any.i \
- NVList.i \
- Context.h \
- Context.i \
+ DynAnyC.i \
+ DomainC.h \
+ DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
+ Policy_Manager.i \
+ Resource_Factory.h \
+ Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ Pluggable.i \
+ Protocol_Factory.h \
+ params.h \
+ params.i \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ Wait_Strategy.h
+
+.obj/Asynch_Reply_Dispatcher.o .obj/Asynch_Reply_Dispatcher.so .shobj/Asynch_Reply_Dispatcher.o .shobj/Asynch_Reply_Dispatcher.so: Asynch_Reply_Dispatcher.cpp \
+ Asynch_Reply_Dispatcher.h \
+ $(ACE_ROOT)/ace/pre.h \
+ orbconf.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ Reply_Dispatcher.h \
+ IOPC.h \
+ CDR.h \
+ corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ try_macros.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ varbase.h \
+ corbafwd.i \
+ CDR.i \
+ Sequence.h \
+ Managed_Types.h \
+ Managed_Types.i \
+ Sequence.i \
+ Sequence_T.h \
+ Sequence_T.i \
+ Sequence_T.cpp \
+ IOPC.i \
+ Reply_Dispatcher.i \
MessagingC.h \
ValueBase.h \
ValueBase.i \
ValueFactory.h \
ValueFactory.i \
+ Any.h \
+ Environment.h \
+ Environment.i \
+ Object.h \
+ Object.i \
+ Typecode.h \
+ Exception.h \
+ Exception.i \
+ Typecode.i \
+ Any.i \
TimeBaseC.h \
TimeBaseC.i \
+ PolicyC.h \
+ CurrentC.h \
+ CurrentC.i \
+ Encodable.h \
+ PolicyC.i \
PollableC.h \
PollableC.i \
MessagingC.i \
- Request.i \
+ Asynch_Reply_Dispatcher.i \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
- Reply_Dispatcher.i \
ORB_Core.h \
+ ORB.h \
+ IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ Services.h \
+ Services.i \
+ IORManipulation.h \
+ IORS.h \
+ IORC.h \
+ IORC.i \
+ Servant_Base.h \
+ POAC.h \
+ POAC.i \
+ Servant_Base.i \
+ IORS.i \
+ Interceptor.h \
+ InterceptorC.h \
+ InterceptorC.i \
+ Interceptor.i \
+ ORB.i \
Policy_Manager.h \
POA_CORBA.h \
DynAnyC.h \
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -20989,7 +22373,217 @@ realclean:
Leader_Follower.i \
debug.h
-.obj/IOPC.o .obj/IOPC.so .shobj/IOPC.o .shobj/IOPC.so: IOPC.cpp IOPC.h \
+.obj/DII_Reply_Dispatcher.o .obj/DII_Reply_Dispatcher.so .shobj/DII_Reply_Dispatcher.o .shobj/DII_Reply_Dispatcher.so: DII_Reply_Dispatcher.cpp \
+ DII_Reply_Dispatcher.h \
+ $(ACE_ROOT)/ace/pre.h \
+ orbconf.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ Reply_Dispatcher.h \
+ IOPC.h \
+ CDR.h \
+ corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ try_macros.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ varbase.h \
+ corbafwd.i \
+ CDR.i \
+ Sequence.h \
+ Managed_Types.h \
+ Managed_Types.i \
+ Sequence.i \
+ Sequence_T.h \
+ Sequence_T.i \
+ Sequence_T.cpp \
+ IOPC.i \
+ Reply_Dispatcher.i \
+ DII_Reply_Dispatcher.i \
+ Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ Typecode.h \
+ Exception.h \
+ Exception.i \
+ Typecode.i \
+ Pluggable.i \
+ Environment.h \
+ Environment.i \
+ GIOP_Message_State.h \
+ Pluggable_Messaging.h \
+ Pluggable_Messaging_Utils.h \
+ Pluggable_Messaging_Utils.i \
+ Pluggable_Messaging.i \
+ GIOP_Message_State.i \
+ Request.h \
+ ORB.h \
+ IOR_LookupTable.h \
+ Services.h \
+ Services.i \
+ IORManipulation.h \
+ Object.h \
+ Object.i \
+ IORS.h \
+ IORC.h \
+ IORC.i \
+ Servant_Base.h \
+ POAC.h \
+ PolicyC.h \
+ CurrentC.h \
+ CurrentC.i \
+ Encodable.h \
+ PolicyC.i \
+ POAC.i \
+ Servant_Base.i \
+ IORS.i \
+ Interceptor.h \
+ InterceptorC.h \
+ InterceptorC.i \
+ Interceptor.i \
+ ORB.i \
+ NVList.h \
+ Any.h \
+ Any.i \
+ NVList.i \
+ Context.h \
+ Context.i \
+ MessagingC.h \
+ ValueBase.h \
+ ValueBase.i \
+ ValueFactory.h \
+ ValueFactory.i \
+ TimeBaseC.h \
+ TimeBaseC.i \
+ PollableC.h \
+ PollableC.i \
+ MessagingC.i \
+ Request.i \
+ debug.h
+
+.obj/IOPC.o .obj/IOPC.so .shobj/IOPC.o .shobj/IOPC.so: IOPC.cpp \
+ IOPC.h \
$(ACE_ROOT)/ace/pre.h \
CDR.h \
corbafwd.h \
@@ -21099,7 +22693,8 @@ realclean:
Typecode.i \
Any.i
-.obj/IOPS.o .obj/IOPS.so .shobj/IOPS.o .shobj/IOPS.so: IOPS.cpp IOPS.h \
+.obj/IOPS.o .obj/IOPS.so .shobj/IOPS.o .shobj/IOPS.so: IOPS.cpp \
+ IOPS.h \
$(ACE_ROOT)/ace/pre.h \
IOPC.h \
CDR.h \
@@ -21298,7 +22893,8 @@ realclean:
Exception.h \
Exception.i \
CDR.h \
- CDR.i PollableC.i \
+ CDR.i \
+ PollableC.i \
POA_CORBA.h \
CurrentC.h \
Environment.h \
@@ -21326,6 +22922,9 @@ realclean:
POAC.h \
POAC.i \
Servant_Base.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Stub.h \
Pluggable.h \
$(ACE_ROOT)/ace/Message_Queue.h \
@@ -21414,30 +23013,19 @@ realclean:
ORB_Core.i \
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ Synch_Reply_Dispatcher.h \
Reply_Dispatcher.h \
- Request.h \
- NVList.h \
- NVList.i \
- Context.h \
- Context.i \
- MessagingC.h \
- ValueBase.h \
- ValueBase.i \
- ValueFactory.h \
- ValueFactory.i \
- TimeBaseC.h \
- TimeBaseC.i \
- PollableC.h \
- MessagingC.i \
- Request.i \
+ Reply_Dispatcher.i \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
- Reply_Dispatcher.i \
+ Synch_Reply_Dispatcher.i \
TAOC.h \
+ TimeBaseC.h \
+ TimeBaseC.i \
TAOC.i \
operation_details.h \
target_specification.h \
@@ -21541,8 +23129,8 @@ realclean:
Exception.h \
Exception.i \
CDR.h \
- CDR.i PollableC.i \
- PollableS_T.h PollableS_T.i PollableS_T.cpp PollableS.i
+ CDR.i \
+ PollableC.i PollableS_T.h PollableS_T.i PollableS_T.cpp PollableS.i
.obj/CONV_FRAMEC.o .obj/CONV_FRAMEC.so .shobj/CONV_FRAMEC.o .shobj/CONV_FRAMEC.so: CONV_FRAMEC.cpp \
CONV_FRAMEC.h \
@@ -22085,7 +23673,8 @@ realclean:
Any.i \
BoundsC.i
-.obj/TAOC.o .obj/TAOC.so .shobj/TAOC.o .shobj/TAOC.so: TAOC.cpp TAOC.h $(ACE_ROOT)/ace/pre.h \
+.obj/TAOC.o .obj/TAOC.so .shobj/TAOC.o .shobj/TAOC.so: TAOC.cpp TAOC.h \
+ $(ACE_ROOT)/ace/pre.h \
corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
$(ACE_ROOT)/ace/Message_Block.h \
@@ -22198,7 +23787,8 @@ realclean:
Typecode.h \
Typecode.i \
Any.i \
- TimeBaseC.i TAOC.i \
+ TimeBaseC.i \
+ TAOC.i \
TAOS.h \
TAOS_T.h \
TAOS_T.i \
@@ -22293,8 +23883,8 @@ realclean:
orbconf.h \
$(ACE_ROOT)/ace/CORBA_macros.h \
varbase.h \
- corbafwd.i TAOS_T.h \
- TAOS_T.i TAOS_T.cpp TAOS.i
+ corbafwd.i \
+ TAOS_T.h TAOS_T.i TAOS_T.cpp TAOS.i
.obj/Object_Loader.o .obj/Object_Loader.so .shobj/Object_Loader.o .shobj/Object_Loader.so: Object_Loader.cpp \
Object_Loader.h \
@@ -23187,7 +24777,8 @@ realclean:
IOPC.h \
IOPC.i \
PollableC.h \
- PollableC.i MessagingC.i \
+ PollableC.i \
+ MessagingC.i \
MessagingS.h \
TimeBaseS.h \
TimeBaseS_T.h \
@@ -23283,6 +24874,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -23294,20 +24888,16 @@ realclean:
ORB_Core.i \
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ Synch_Reply_Dispatcher.h \
Reply_Dispatcher.h \
- Request.h \
- NVList.h \
- NVList.i \
- Context.h \
- Context.i \
- Request.i \
+ Reply_Dispatcher.i \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
- Reply_Dispatcher.i \
+ Synch_Reply_Dispatcher.i \
TAOC.h \
TAOC.i \
operation_details.h \
@@ -23340,8 +24930,9 @@ realclean:
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/Trace.h \
- $(ACE_ROOT)/ace/OS.i MessagingS.h orbconf.h \
- TimeBaseS.h TimeBaseC.h \
+ $(ACE_ROOT)/ace/OS.i \
+ MessagingS.h orbconf.h TimeBaseS.h \
+ TimeBaseC.h \
Any.h \
CDR.h \
corbafwd.h \
@@ -23424,7 +25015,8 @@ realclean:
TimeBaseS_T.h \
TimeBaseS_T.i \
TimeBaseS_T.cpp \
- TimeBaseS.i MessagingC.h \
+ TimeBaseS.i \
+ MessagingC.h \
ValueBase.h \
ValueBase.i \
ValueFactory.h \
@@ -23444,9 +25036,11 @@ realclean:
IOPC.h \
IOPC.i \
PollableC.h \
- PollableC.i MessagingC.i \
- POAC.h POAC.i \
- Servant_Base.h POAC.h \
+ PollableC.i \
+ MessagingC.i POAC.h \
+ POAC.i \
+ Servant_Base.h \
+ POAC.h \
Servant_Base.i \
MessagingS_T.h MessagingS_T.i MessagingS_T.cpp MessagingS.i \
Operation_Table.h \
@@ -23478,7 +25072,8 @@ realclean:
Server_Request.h \
Object_KeyC.h \
Object_KeyC.i \
- Server_Request.i Stub.h \
+ Server_Request.i \
+ Stub.h \
Pluggable.h \
$(ACE_ROOT)/ace/Message_Queue.h \
$(ACE_ROOT)/ace/IO_Cntl_Msg.h \
@@ -23525,13 +25120,17 @@ realclean:
InterceptorC.i \
Interceptor.i \
ORB.i \
- Stub.i ORB_Core.h \
+ Stub.i \
+ ORB_Core.h \
Policy_Manager.h \
POA_CORBA.h \
DynAnyC.h \
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -23690,6 +25289,9 @@ realclean:
POAC.h \
POAC.i \
Servant_Base.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
ORB_Core.h \
ORB.h \
@@ -24768,6 +26370,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -25395,6 +27000,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -25442,7 +27050,8 @@ realclean:
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/Trace.h \
- $(ACE_ROOT)/ace/OS.i corbafwd.h \
+ $(ACE_ROOT)/ace/OS.i \
+ corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
$(ACE_ROOT)/ace/Message_Block.h \
$(ACE_ROOT)/ace/ACE.h \
@@ -25507,7 +27116,8 @@ realclean:
try_macros.h \
$(ACE_ROOT)/ace/CORBA_macros.h \
varbase.h \
- corbafwd.i IOPC.h \
+ corbafwd.i \
+ IOPC.h \
CDR.h \
corbafwd.h \
CDR.i \
@@ -25529,12 +27139,14 @@ realclean:
Environment.i \
CurrentC.i \
Encodable.h \
- PolicyC.i TimeBaseC.h \
+ PolicyC.i \
+ TimeBaseC.h \
Any.h \
Typecode.h \
Typecode.i \
Any.i \
- TimeBaseC.i RTCORBAC.i \
+ TimeBaseC.i \
+ RTCORBAC.i \
TAOS.h \
TAOS_T.h \
TAOS_T.i \
@@ -25563,8 +27175,9 @@ realclean:
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/Trace.h \
- $(ACE_ROOT)/ace/OS.i RTCORBAS.h orbconf.h \
- IOPS.h IOPC.h \
+ $(ACE_ROOT)/ace/OS.i \
+ RTCORBAS.h orbconf.h IOPS.h \
+ IOPC.h \
CDR.h \
corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
@@ -25644,7 +27257,8 @@ realclean:
IOPS_T.h \
IOPS_T.i \
IOPS_T.cpp \
- IOPS.i TimeBaseS.h \
+ IOPS.i \
+ TimeBaseS.h \
TimeBaseC.h \
Any.h \
Environment.h \
@@ -25660,14 +27274,15 @@ realclean:
TimeBaseS_T.h \
TimeBaseS_T.i \
TimeBaseS_T.cpp \
- TimeBaseS.i RTCORBAC.h \
- corbafwd.h IOPC.h \
+ TimeBaseS.i \
+ RTCORBAC.h corbafwd.h IOPC.h \
PolicyC.h \
CurrentC.h \
CurrentC.i \
Encodable.h \
- PolicyC.i TimeBaseC.h \
- RTCORBAC.i RTCORBAS_T.h RTCORBAS_T.i RTCORBAS_T.cpp RTCORBAS.i
+ PolicyC.i \
+ TimeBaseC.h RTCORBAC.i RTCORBAS_T.h RTCORBAS_T.i RTCORBAS_T.cpp \
+ RTCORBAS.i
.obj/DynAnyC.o .obj/DynAnyC.so .shobj/DynAnyC.o .shobj/DynAnyC.so: DynAnyC.cpp \
DynAnyC.h \
@@ -25864,7 +27479,10 @@ realclean:
Stub.i \
POA_CORBA.h \
DomainC.h \
- DomainC.i
+ DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i
.obj/DynAnyS.o .obj/DynAnyS.so .shobj/DynAnyS.o .shobj/DynAnyS.so: DynAnyS.cpp \
DynAnyC.h \
@@ -25987,7 +27605,10 @@ realclean:
Servant_Base.h \
POAC.h \
POAC.i \
- Servant_Base.i
+ Servant_Base.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i
.obj/DynAny_i.o .obj/DynAny_i.so .shobj/DynAny_i.o .shobj/DynAny_i.so: DynAny_i.cpp \
DynAny_i.h \
@@ -26112,6 +27733,9 @@ realclean:
POAC.h \
POAC.i \
Servant_Base.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
DynStruct_i.h \
DynSequence_i.h \
DynEnum_i.h \
@@ -26247,6 +27871,9 @@ realclean:
POAC.h \
POAC.i \
Servant_Base.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
DynArray_i.h \
InconsistentTypeCodeC.h \
Marshal.h \
@@ -26418,6 +28045,9 @@ realclean:
POAC.h \
POAC.i \
Servant_Base.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
DynEnum_i.h \
InconsistentTypeCodeC.h
@@ -26544,6 +28174,9 @@ realclean:
POAC.h \
POAC.i \
Servant_Base.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
DynSequence_i.h \
InconsistentTypeCodeC.h \
Marshal.h \
@@ -26715,6 +28348,9 @@ realclean:
POAC.h \
POAC.i \
Servant_Base.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
DynStruct_i.h \
InconsistentTypeCodeC.h \
ORB.h \
@@ -26886,6 +28522,9 @@ realclean:
POAC.h \
POAC.i \
Servant_Base.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
DynUnion_i.h \
DynUnion_i_T.h \
DynUnion_i_T.cpp \
@@ -27201,6 +28840,7 @@ realclean:
Sequence_T.h \
Sequence_T.i \
Sequence_T.cpp \
+ InterfaceC.i \
Stub.h \
Pluggable.h \
$(ACE_ROOT)/ace/Message_Queue.h \
@@ -27292,6 +28932,7 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
Policy_Manager.i \
Resource_Factory.h \
Protocol_Factory.h \
@@ -27303,31 +28944,19 @@ realclean:
ORB_Core.i \
$(ACE_ROOT)/ace/Dynamic_Service.h \
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ Synch_Reply_Dispatcher.h \
Reply_Dispatcher.h \
- Request.h \
- NVList.h \
- NVList.i \
- Context.h \
- Context.i \
- MessagingC.h \
- ValueBase.h \
- ValueBase.i \
- ValueFactory.h \
- ValueFactory.i \
- TimeBaseC.h \
- TimeBaseC.i \
- PollableC.h \
- PollableC.i \
- MessagingC.i \
- Request.i \
+ Reply_Dispatcher.i \
GIOP_Message_State.h \
Pluggable_Messaging.h \
Pluggable_Messaging_Utils.h \
Pluggable_Messaging_Utils.i \
Pluggable_Messaging.i \
GIOP_Message_State.i \
- Reply_Dispatcher.i \
+ Synch_Reply_Dispatcher.i \
TAOC.h \
+ TimeBaseC.h \
+ TimeBaseC.i \
TAOC.i \
operation_details.h \
target_specification.h \
@@ -27335,7 +28964,9 @@ realclean:
Object_KeyC.i \
target_specification.i \
operation_details.i \
- Invocation.i
+ Invocation.i \
+ NVList.h \
+ NVList.i
.obj/Pluggable_Messaging.o .obj/Pluggable_Messaging.so .shobj/Pluggable_Messaging.o .shobj/Pluggable_Messaging.so: Pluggable_Messaging.cpp \
Pluggable_Messaging.h \
@@ -28097,6 +29728,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -28171,7 +29805,9 @@ realclean:
Server_Request.i \
Principal.h \
Principal.i \
- GIOP_Server_Request.i
+ GIOP_Server_Request.i \
+ Leader_Follower.h \
+ Leader_Follower.i
.obj/GIOP_Message_Accept_State.o .obj/GIOP_Message_Accept_State.so .shobj/GIOP_Message_Accept_State.o .shobj/GIOP_Message_Accept_State.so: GIOP_Message_Accept_State.cpp \
GIOP_Message_Accept_State.h \
@@ -28533,6 +30169,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -28969,6 +30608,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -29216,6 +30858,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -29479,6 +31124,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
@@ -29685,6 +31333,9 @@ realclean:
DynAnyC.i \
DomainC.h \
DomainC.i \
+ InterfaceC.h \
+ ifrfwd.h \
+ InterfaceC.i \
Policy_Manager.i \
Resource_Factory.h \
Pluggable.h \
diff --git a/TAO/tao/Makefile.am b/TAO/tao/Makefile.am
index 63d952f998e..fd8779b47a3 100644
--- a/TAO/tao/Makefile.am
+++ b/TAO/tao/Makefile.am
@@ -115,6 +115,7 @@ ORB_CORE_FILES = \
Interceptor.cpp \
InterceptorC.cpp \
Asynch_Invocation.cpp \
+ DII_Invocation.cpp \
ORB_Core.cpp \
Leader_Follower.cpp \
Reactor_Registry.cpp \
@@ -129,8 +130,16 @@ ORB_CORE_FILES = \
IOR_LookupTable.cpp \
TAO.cpp \
Wait_Strategy.cpp \
+ Wait_On_Read.cpp \
+ Wait_On_Reactor.cpp \
+ Wait_On_Leader_Follower.cpp \
Transport_Mux_Strategy.cpp \
+ Muxed_TMS.cpp \
+ Exclusive_TMS.cpp \
Reply_Dispatcher.cpp \
+ Synch_Reply_Dispatcher.cpp \
+ Asynch_Reply_Dispatcher.cpp \
+ DII_Reply_Dispatcher.cpp \
IOPC.cpp \
IOPS.cpp \
PollableC.cpp \
@@ -247,6 +256,7 @@ HEADER_FILES = \
Active_Object_Map.h \
Any.h \
Asynch_Invocation.h \
+ DII_Invocation.h \
BoundsC.h \
Buffering_Constraint_Policy.h \
CDR.h \
@@ -332,7 +342,6 @@ HEADER_FILES = \
RT_Current.h \
Reactor_Per_Priority.h \
Reactor_Registry.h \
- Reply_Dispatcher.h \
Request.h \
Resource_Factory.h \
Sequence.h \
@@ -354,7 +363,6 @@ HEADER_FILES = \
TimeBaseS.h \
TimeBaseS_T.h \
Timeprobe.h \
- Transport_Mux_Strategy.h \
Typecode.h \
UIOP_Acceptor.h \
UIOP_Connect.h \
@@ -367,6 +375,16 @@ HEADER_FILES = \
ValueFactory_Map.h \
Version.h \
Wait_Strategy.h \
+ Wait_On_Read.h \
+ Wait_On_Reactor.h \
+ Wait_On_Leader_Follower.h \
+ Transport_Mux_Strategy.h \
+ Muxed_TMS.h \
+ Exclusive_TMS.h \
+ Reply_Dispatcher.h \
+ Synch_Reply_Dispatcher.h \
+ Asynch_Reply_Dispatcher.h \
+ DII_Reply_Dispatcher.h \
WrongTransactionC.h \
corba.h \
corbafwd.h \
@@ -388,6 +406,7 @@ INLINE_FILES = \
Active_Object_Map.i \
Any.i \
Asynch_Invocation.i \
+ DII_Invocation.i \
BoundsC.i \
Buffering_Constraint_Policy.i \
CDR.i \
@@ -455,6 +474,9 @@ INLINE_FILES = \
Reactor_Per_Priority.i \
Reactor_Registry.i \
Reply_Dispatcher.i \
+ Synch_Reply_Dispatcher.i \
+ Asynch_Reply_Dispatcher.i \
+ DII_Reply_Dispatcher.i \
Request.i \
Sequence.i \
Sequence_T.i \
diff --git a/TAO/tao/Makefile.bor b/TAO/tao/Makefile.bor
index b6d49f466fa..0728c48f8a4 100644
--- a/TAO/tao/Makefile.bor
+++ b/TAO/tao/Makefile.bor
@@ -10,6 +10,7 @@ OBJFILES = \
$(OBJDIR)\Any.obj \
$(OBJDIR)\append.obj \
$(OBJDIR)\Asynch_Invocation.obj \
+ $(OBJDIR)\DII_Invocation.obj \
$(OBJDIR)\BoundsC.obj \
$(OBJDIR)\Buffering_Constraint_Policy.obj \
$(OBJDIR)\CDR.obj \
@@ -112,6 +113,9 @@ OBJFILES = \
$(OBJDIR)\Reactor_Per_Priority.obj \
$(OBJDIR)\Reactor_Registry.obj \
$(OBJDIR)\Reply_Dispatcher.obj \
+ $(OBJDIR)\Synch_Reply_Dispatcher.obj \
+ $(OBJDIR)\Asynch_Reply_Dispatcher.obj \
+ $(OBJDIR)\DII_Reply_Dispatcher.obj \
$(OBJDIR)\Request.obj \
$(OBJDIR)\Resource_Factory.obj \
$(OBJDIR)\RT_Current.obj \
@@ -146,6 +150,8 @@ OBJFILES = \
$(OBJDIR)\TimeBaseC.obj \
$(OBJDIR)\TimeBaseS.obj \
$(OBJDIR)\Transport_Mux_Strategy.obj \
+ $(OBJDIR)\Muxed_TMS.obj \
+ $(OBJDIR)\Exclusive_TMS.obj \
$(OBJDIR)\Typecode.obj \
$(OBJDIR)\Typecode_Constants.obj \
$(OBJDIR)\UIOP_Acceptor.obj \
@@ -159,6 +165,9 @@ OBJFILES = \
$(OBJDIR)\ValueFactory.obj \
$(OBJDIR)\ValueFactory_Map.obj \
$(OBJDIR)\Wait_Strategy.obj \
+ $(OBJDIR)\Wait_On_Read.obj \
+ $(OBJDIR)\Wait_On_Reactor.obj \
+ $(OBJDIR)\Wait_On_Leader_Follower.obj \
$(OBJDIR)\WrongTransactionC.obj
RESOURCE = $(OBJDIR)\tao.res
diff --git a/TAO/tao/ORB_Core.cpp b/TAO/tao/ORB_Core.cpp
index ff4af3ad71c..db41bdf4138 100644
--- a/TAO/tao/ORB_Core.cpp
+++ b/TAO/tao/ORB_Core.cpp
@@ -1667,27 +1667,6 @@ TAO_ORB_Core::run (ACE_Time_Value *tv,
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("TAO (%P|%t) - start of run/perform_work\n")));
- TAO_Leader_Follower &leader_follower = this->leader_follower ();
- TAO_LF_Event_Loop_Thread_Helper event_loop_thread_helper (leader_follower);
-
- int result = event_loop_thread_helper.set_event_loop_thread (tv);
- if (result != 0)
- {
- if (errno == ETIME)
- return 0;
- else
- return result;
- }
-
- ACE_Reactor *r = this->reactor ();
-
- // @@ Do we really need to do this?
- // Set the owning thread of the Reactor to the one which we're
- // currently in. This is necessary b/c it's possible that the
- // application is calling us from a thread other than that in which
- // the Reactor's CTOR (which sets the owner) was called.
- r->owner (ACE_Thread::self ());
-
// This method should only be called by servers, so now we set up
// for listening!
@@ -1697,50 +1676,74 @@ TAO_ORB_Core::run (ACE_Time_Value *tv,
if (ret == -1)
return -1;
- result = 1;
+ int result = 1;
// 1 to detect that nothing went wrong
// Loop handling client requests until the ORB is shutdown.
- // @@ We could use the leader-follower lock to check for the state
- // of this variable or use the lock <create_event_loop_lock> in
- // the server strategy factory.
- // We don't need to do this because we use the Reactor
- // mechanisms to shutdown in a thread-safe way.
+ // We could use the leader-follower lock to check for the state
+ // if this variable or use the lock <create_event_loop_lock> in
+ // the server strategy factory.
+ // We don't need to do this because we use the Reactor
+ // mechanisms to shutdown in a thread-safe way.
while (this->has_shutdown () == 0)
{
+ // Every time we perform an interation we have to become the
+ // leader again, because it is possible that a client has
+ // acquired the leader role...
+
+ TAO_Leader_Follower &leader_follower =
+ this->leader_follower ();
+ TAO_LF_Event_Loop_Thread_Helper helper (leader_follower);
+
+ result = helper.set_event_loop_thread (tv);
+ if (result != 0)
+ {
+ if (errno == ETIME)
+ return 0;
+ else
+ return result;
+ }
+
+ ACE_Reactor *r = this->reactor ();
+
+ // Set the owning thread of the Reactor to the one which we're
+ // currently in. This is necessary b/c it's possible that the
+ // application is calling us from a thread other than that in which
+ // the Reactor's CTOR (which sets the owner) was called.
+ r->owner (ACE_Thread::self ());
+
if (TAO_debug_level >= 3)
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("TAO (%P|%t) - blocking on handle events\n")));
- switch (r->handle_events (tv))
+ result = r->handle_events (tv);
+
+ if (result == -1)
{
- case 0:
- // Make sure that a timed out occured. If so, we return to
- // caller.
- if (tv != 0 && *tv == ACE_Time_Value::zero)
- result = 0;
- break;
- /* NOTREACHED */
- case -1: // Something else has gone wrong, so return to caller.
- result = -1;
+ // An error, terminate the loop
break;
- /* NOTREACHED */
- default:
- // Some handlers were dispatched, so keep on processing
- // requests until we're told to shutdown .
+ }
+ if (result == 0
+ && tv != 0
+ && *tv == ACE_Time_Value::zero)
+ {
+ // A timeout, terminate the loop...
break;
- /* NOTREACHED */
}
- if (result == 0 || result == -1)
- break;
-
- // In perform_work, we only run the loop once.
if (perform_work)
- break;
+ {
+ // This is running on behalf of a perform_work() call,
+ // The loop should run only once.
+ break;
+ }
+ // Otherwise just continue..
}
if (TAO_debug_level >= 3)
- ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TAO (%P|%t) - end of run/perform_work %d\n"), result));
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("TAO (%P|%t) - "
+ "end of run/perform_work %d\n"),
+ result));
return result;
}
diff --git a/TAO/tao/Pluggable.cpp b/TAO/tao/Pluggable.cpp
index 1ce675d2ee0..4b1d28c56c9 100644
--- a/TAO/tao/Pluggable.cpp
+++ b/TAO/tao/Pluggable.cpp
@@ -220,12 +220,6 @@ TAO_Transport::idle_after_reply (void)
return this->tms ()->idle_after_reply ();
}
-// int
-// TAO_Transport::reply_received (const CORBA::ULong request_id)
-// {
-// return this->tms ()->reply_received (request_id);
-// }
-
ACE_SYNCH_CONDITION *
TAO_Transport::leader_follower_condition_variable (void)
{
diff --git a/TAO/tao/Pluggable.h b/TAO/tao/Pluggable.h
index 03aa32a993b..feac0efb969 100644
--- a/TAO/tao/Pluggable.h
+++ b/TAO/tao/Pluggable.h
@@ -146,13 +146,13 @@ public:
// Using this method, instead of send(), allows the transport (and
// wait strategy) to take appropiate action.
- virtual CORBA::Boolean
+ virtual CORBA::Boolean
send_request_header (TAO_Operation_Details &op_details,
TAO_Target_Specification &spec,
TAO_OutputCDR &msg) = 0;
// This is a request for the transport object to write a request
// header before it sends out a request
-
+
TAO_ORB_Core *orb_core (void) const;
// Access the ORB that owns this connection.
diff --git a/TAO/tao/Reply_Dispatcher.cpp b/TAO/tao/Reply_Dispatcher.cpp
index bfb2fab061f..4c82f3003c5 100644
--- a/TAO/tao/Reply_Dispatcher.cpp
+++ b/TAO/tao/Reply_Dispatcher.cpp
@@ -2,9 +2,8 @@
#include "tao/Reply_Dispatcher.h"
-#include "tao/ORB_Core.h"
-#include "tao/Leader_Follower.h"
-#include "tao/debug.h"
+
+ACE_RCSID(tao, DII_Reply_Dispatcher, "$Id$")
#if !defined (__ACE_INLINE__)
#include "tao/Reply_Dispatcher.i"
@@ -25,287 +24,3 @@ TAO_Reply_Dispatcher::message_state (void)
{
return 0;
}
-
-int
-TAO_Reply_Dispatcher::leader_follower_condition_variable (TAO_Transport *)
-{
- // no-op.
- return 0;
-}
-
-// *********************************************************************
-
-// Constructor.
-TAO_Synch_Reply_Dispatcher::TAO_Synch_Reply_Dispatcher (TAO_ORB_Core *orb_core,
- IOP::ServiceContextList &sc)
- : reply_service_info_ (sc),
- message_state_ (orb_core),
- reply_received_ (0),
- leader_follower_condition_variable_ (0),
- orb_core_ (orb_core)
-{
-}
-
-// Destructor.
-TAO_Synch_Reply_Dispatcher::~TAO_Synch_Reply_Dispatcher (void)
-{
-}
-
-// Dispatch the reply.
-int
-TAO_Synch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status,
- const TAO_GIOP_Version & /*version*/,
- IOP::ServiceContextList &reply_ctx,
- TAO_GIOP_Message_State *message_state)
-{
- this->reply_received_ = 1;
-
- this->reply_status_ = reply_status;
- //this->version_ = version;
-
- // Steal the buffer, that way we don't do any unnecesary copies of
- // this data.
- CORBA::ULong max = reply_ctx.maximum ();
- CORBA::ULong len = reply_ctx.length ();
- IOP::ServiceContext* context_list = reply_ctx.get_buffer (1);
- this->reply_service_info_.replace (max, len, context_list, 1);
-
- // Must reset the message state, it is possible that the same reply
- // dispatcher is used because the request must be re-sent.
- this->message_state_.reset (0);
-
- if (&this->message_state_ != message_state)
- {
- // The Transport Mux Strategy did not use our Message_State to
- // receive the event, possibly because it is muxing multiple
- // requests over the same connection.
-
- // Steal the buffer so that no copying is done.
- this->message_state_.cdr.steal_from (message_state->cdr);
-
- // There is no need to copy the other fields!
- }
-
- // If condition variable is present, then we are doing leader
- // follower model. Do all the necessary things.
- if (this->leader_follower_condition_variable_ != 0)
- {
- TAO_Leader_Follower& leader_follower =
- this->orb_core_->leader_follower ();
-
- // We *must* remove it when we signal it so the same condition
- // is not signalled for both wake up as a follower and as the
- // next leader.
- // The follower may not be there if the reply is received while
- // the consumer is not yet waiting for it (i.e. it send the
- // request but has not blocked to receive the reply yet).
- // Ignore errors.
- (void) leader_follower.remove_follower (this->leader_follower_condition_variable_);
-
- (void) this->leader_follower_condition_variable_->signal ();
- }
-
- return 1;
-}
-
-TAO_GIOP_Message_State *
-TAO_Synch_Reply_Dispatcher::message_state (void)
-{
- return &this->message_state_;
-}
-
-TAO_InputCDR &
-TAO_Synch_Reply_Dispatcher::reply_cdr (void)
-{
- return this->message_state_.cdr;
-}
-
-int &
-TAO_Synch_Reply_Dispatcher::reply_received (void)
-{
- return this->reply_received_;
-}
-
-int
-TAO_Synch_Reply_Dispatcher::leader_follower_condition_variable (TAO_Transport *transport)
-{
- this->leader_follower_condition_variable_ =
- transport->leader_follower_condition_variable ();
- return 0;
-}
-
-// *********************************************************************
-
-#if (TAO_HAS_AMI_CALLBACK == 1) || (TAO_HAS_AMI_POLLER == 1)
-
-// Constructor.
-TAO_Asynch_Reply_Dispatcher::
- TAO_Asynch_Reply_Dispatcher (const TAO_Reply_Handler_Skeleton &reply_handler_skel,
- Messaging::ReplyHandler_ptr reply_handler)
- : reply_handler_skel_ (reply_handler_skel),
- reply_handler_ (Messaging::ReplyHandler::_duplicate (reply_handler)),
- transport_ (0)
-{
-}
-
-// Destructor.
-TAO_Asynch_Reply_Dispatcher::~TAO_Asynch_Reply_Dispatcher (void)
-{
- if (this->transport_ != 0)
- this->transport_->idle_after_reply ();
-}
-
-// Dispatch the reply.
-int
-TAO_Asynch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status,
- const TAO_GIOP_Version & /*version*/,
- IOP::ServiceContextList &reply_ctx,
- TAO_GIOP_Message_State *message_state)
-{
- 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.
- CORBA::ULong max = reply_ctx.maximum ();
- CORBA::ULong len = reply_ctx.length ();
- IOP::ServiceContext* context_list = reply_ctx.get_buffer (1);
- this->reply_service_info_.replace (max, len, context_list, 1);
-
-
- if (TAO_debug_level >= 4)
- {
- ACE_DEBUG ((LM_DEBUG,
- "(%P | %t):TAO_Asynch_Reply_Dispatcher::dispatch_reply:\n"));
- }
-
- CORBA::ULong reply_error = TAO_AMI_REPLY_NOT_OK;
- switch (reply_status)
- {
- case TAO_PLUGGABLE_MESSAGE_NO_EXCEPTION:
- reply_error = TAO_AMI_REPLY_OK;
- break;
- case TAO_PLUGGABLE_MESSAGE_USER_EXCEPTION:
- reply_error = TAO_AMI_REPLY_USER_EXCEPTION;
- break;
- case TAO_PLUGGABLE_MESSAGE_SYSTEM_EXCEPTION:
- reply_error = TAO_AMI_REPLY_SYSTEM_EXCEPTION;
- break;
- default:
- case TAO_PLUGGABLE_MESSAGE_LOCATION_FORWARD:
- // @@ Michael: Not even the spec mentions this case.
- // We have to think about this case.
- // Handle the forwarding and return so the stub restarts the
- // request!
- reply_error = TAO_AMI_REPLY_NOT_OK;
- break;
- }
-
- ACE_TRY_NEW_ENV
- {
- // Call the Reply Handler's skeleton.
- reply_handler_skel_ (this->message_state_->cdr,
- this->reply_handler_.in (),
- reply_error,
- ACE_TRY_ENV);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- if (TAO_debug_level >= 4)
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Exception during reply handler");
- }
- ACE_ENDTRY;
-
- // This was dynamically allocated. Now the job is done. Commit
- // suicide here.
- delete this;
-
- return 1;
-}
-
-TAO_GIOP_Message_State *
-TAO_Asynch_Reply_Dispatcher::message_state (void)
-{
- return this->message_state_;
-}
-
-#endif /* TAO_HAS_AMI_CALLBACK == 1 || TAO_HAS_AMI_POLLER == 1 */
-
-// *********************************************************************
-
-#if (TAO_HAS_MINIMUM_CORBA == 0)
-
-// Constructor.
-TAO_DII_Deferred_Reply_Dispatcher::TAO_DII_Deferred_Reply_Dispatcher (const CORBA::Request_ptr req)
- : req_ (req),
- transport_ (0)
-{
-}
-
-// Destructor.
-TAO_DII_Deferred_Reply_Dispatcher::~TAO_DII_Deferred_Reply_Dispatcher (void)
-{
- if (this->transport_ != 0)
- this->transport_->idle_after_reply ();
-}
-
-// Dispatch the reply.
-int
-TAO_DII_Deferred_Reply_Dispatcher::dispatch_reply (
- CORBA::ULong reply_status,
- const TAO_GIOP_Version & /*version*/,
- IOP::ServiceContextList &reply_ctx,
- TAO_GIOP_Message_State *message_state
- )
-{
- 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.
- CORBA::ULong max = reply_ctx.maximum ();
- CORBA::ULong len = reply_ctx.length ();
- IOP::ServiceContext* context_list = reply_ctx.get_buffer (1);
- this->reply_service_info_.replace (max, len, context_list, 1);
-
-
- if (TAO_debug_level >= 4)
- {
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P | %t):TAO_Asynch_Reply_Dispatcher::dispatch_reply:\n")));
- }
-
- ACE_TRY_NEW_ENV
- {
- // Call the Request back and send the reply data.
- this->req_->handle_response (this->message_state_->cdr,
- reply_status,
- ACE_TRY_ENV);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- if (TAO_debug_level >= 4)
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Exception during reply handler");
- }
- ACE_ENDTRY;
-
- // This was dynamically allocated. Now the job is done. Commit
- // suicide here.
- delete this;
-
- return 1;
-}
-
-TAO_GIOP_Message_State *
-TAO_DII_Deferred_Reply_Dispatcher::message_state (void)
-{
- return this->message_state_;
-}
-
-#endif /* TAO_HAS_MINIMUM_CORBA */
diff --git a/TAO/tao/Reply_Dispatcher.h b/TAO/tao/Reply_Dispatcher.h
index a2016426128..48d56df63bc 100644
--- a/TAO/tao/Reply_Dispatcher.h
+++ b/TAO/tao/Reply_Dispatcher.h
@@ -7,11 +7,8 @@
// = LIBRARY
// TAO
//
-// = FILENAME
-// Reply_Dispatcher.h
-//
// = DESCRIPTION
-// Dispatch the reply appropriately.
+// Define the interface for the Reply_Dispatcher strategies.
//
// = AUTHOR
// Alexander Babu Arulanthu <alex@cs.wustl.edu>
@@ -22,28 +19,33 @@
#define TAO_REPLY_DISPATCHER_H
#include "ace/pre.h"
-#include "tao/Request.h"
-
-#include "tao/GIOP_Message_State.h"
-// This should not be here. Please see below for reasons
+#include "tao/IOPC.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
-#include "tao/MessagingC.h"
-
// Forward Declarations.
-
-class TAO_Stub;
-class TAO_InputCDR;
-
+class TAO_GIOP_Message_State;
+class TAO_GIOP_Version;
+class TAO_Transport;
class TAO_Export TAO_Reply_Dispatcher
{
// = TITLE
//
// = DESCRIPTION
+ // Different invocation modes process the Reply messages in
+ // different ways. Traditional synchronous replies simply receive
+ // the message and wake up the waiting thread (if any).
+ // Asynchronous Method Invocation (Callbacks) must process the
+ // message in the thread that receives it.
+ // Deferred Synchronous (DII) and AMI in the Poller mode save the
+ // reply for later processing in the application.
+ // The lower level components in the ORB only deal with this
+ // abstract interface, when the invocation is made the right type
+ // of Reply Dispatcher is instantiated and registered with the
+ // Transport object.
//
public:
@@ -58,241 +60,30 @@ public:
IOP::ServiceContextList& reply_ctx,
TAO_GIOP_Message_State* message_state) = 0;
// Dispatch the reply. Return 1 on sucess, -1 on error.
+ // @@ TODO Pluggable Messaging: this method has too many arguments,
+ // the "Right Thing"[tm] is for the Transport Object to create a
+ // "ClientReply" that encapsulates all we need to process a
+ // reply. Naturally it is possible that different messaging
+ // protocols implement different variants of such ClientReply
+ // class.
virtual TAO_GIOP_Message_State *message_state (void);
// Get the Message State into which the reply has been read.
- virtual int leader_follower_condition_variable (TAO_Transport *);
- // Obtain the condition variable used in the Leader Follower Wait
- // Strategy. This is valid only for the synchronous reply dispatcher
- // and only when the Leader Follower wait strategy is used.
-};
-
-// *********************************************************************
-
-class TAO_Export TAO_Synch_Reply_Dispatcher : public TAO_Reply_Dispatcher
-{
- // = TITLE
- //
- // Reply dispatcher for Synchoronous Method Invocation (SMI)s.
- //
- // = DESCRIPTION
- //
-
-public:
- TAO_Synch_Reply_Dispatcher (TAO_ORB_Core *orb_core,
- IOP::ServiceContextList &sc);
- // Constructor.
-
- virtual ~TAO_Synch_Reply_Dispatcher (void);
- // Destructor.
-
- CORBA::ULong reply_status (void) const;
- // Get the reply status.
-
- const TAO_GIOP_Version& version (void) const;
- // Get the GIOP version.
-
- virtual int dispatch_reply (CORBA::ULong reply_status,
- const TAO_GIOP_Version& version,
- IOP::ServiceContextList& reply_ctx,
- TAO_GIOP_Message_State* message_state);
- // Dispatch the reply. Copy the buffers and return. Since the
- // invocation is synchronous demarshalling will take place on the
- // stack.
- // Return 1 on sucess, -1 on error.
-
- virtual TAO_GIOP_Message_State *message_state (void);
- // Return the message state of this invocation.
-
- virtual TAO_InputCDR &reply_cdr (void);
- // Return the reply CDR.
-
- virtual int &reply_received (void);
- // Return the reference to the reply received flag. This will not
- // make sense in the Asynch Reply Dispatcher case, since the
- // reply will be dispatched as soon as it is available and the
- // dispatcher will go away immediately after that.
-
- virtual int leader_follower_condition_variable (TAO_Transport *);
- // Obtain the condition variable used in the Leader Follower Wait
- // Strategy.
-
-protected:
- IOP::ServiceContextList &reply_service_info_;
- // The service context list
-
-private:
- CORBA::ULong reply_status_;
- // Reply or LocateReply status.
-
- // TAO_GIOP_Version version_;
- // The version
-
- TAO_GIOP_Message_State message_state_;
- // All the state required to receive the input...
- // @@ Having members of type TAO_GIOP* indicates that we
- // (Reply_despatcher) are aware of the underlying messaging
- // protocol. But for the present let us close our eyes till we are
- // able to iterate on a use case - Bala.
-
- int reply_received_;
- // Flag that indicates the reply has been received.
-
- ACE_SYNCH_CONDITION *leader_follower_condition_variable_;
- // Condition variable used by the leader to notify the follower
- // about the availability of the response.
-
- TAO_ORB_Core *orb_core_;
- // Cache the ORB Core pointer.
-};
-
-// *********************************************************************
-
-#if (TAO_HAS_AMI_CALLBACK == 1) || (TAO_HAS_AMI_POLLER == 1)
-
-class TAO_Export TAO_Asynch_Reply_Dispatcher : public TAO_Reply_Dispatcher
-{
- // = TITLE
- //
- // Reply dispatcher for Asynchoronous Method Invocation (AMI)s.
- //
- // = DESCRIPTION
- //
-
-public:
- TAO_Asynch_Reply_Dispatcher (const TAO_Reply_Handler_Skeleton &reply_handler_skel,
- Messaging::ReplyHandler_ptr reply_handler_ptr);
- // Constructor.
-
- virtual ~TAO_Asynch_Reply_Dispatcher (void);
- // Destructor.
-
- CORBA::ULong reply_status (void) const;
- // Get the reply status.
-
- const TAO_GIOP_Version& version (void) const;
- // Get the GIOP version
-
- virtual int dispatch_reply (CORBA::ULong reply_status,
- const TAO_GIOP_Version& version,
- IOP::ServiceContextList& reply_ctx,
- TAO_GIOP_Message_State* message_state);
- // Dispatch the reply. This involves demarshalling the reply and
- // calling the appropriate call back hook method on the reply
- // handler.
- // Return 1 on sucess, -1 on error.
-
- virtual TAO_GIOP_Message_State *message_state (void);
- // Return the message state.
-
- void transport (TAO_Transport *t);
- // Sets the transport for this invocation.
-
-protected:
- IOP::ServiceContextList reply_service_info_;
- // The service context list
- // Note, that this is not a reference as in
- // the synchronous case. We own the reply_service_info
- // because our TAO_Asynch_Invocation will go out
- // of scope before we are done.
-
-private:
- CORBA::ULong reply_status_;
- // Reply or LocateReply status.
-
- // TAO_GIOP_Version version_;
- // The version
-
- TAO_GIOP_Message_State *message_state_;
- // CDR stream for reading the input.
- // @@ Carlos : message_state should go away. All we need is the reply
- // cdr. Is that right? (Alex).
-
- const TAO_Reply_Handler_Skeleton reply_handler_skel_;
- // Skeleton for the call back method in the Reply Handler.
-
- Messaging::ReplyHandler_var reply_handler_;
- // Reply Handler passed in the Asynchronous Invocation.
-
- TAO_Transport *transport_;
- // This invocation is using this transport, may change...
+ virtual void dispatcher_bound (TAO_Transport*) = 0;
+ // The dispatcher has been bound.
+ // Some dispatchers need to retain state to cooperate with other
+ // components, such as the waiting strategy.
+
+ virtual void connection_closed (void) = 0;
+ // The used for the pending reply has been closed.
+ // No reply is expected.
+ // @@ TODO: If the connection was closed due to a CloseConnection
+ // message then we could re-issue the request instead of raising
+ // the exception, it would a matter of simply adding a boolean
+ // argument to this function.
};
-#endif /* TAO_HAS_AMI_CALLBACK == 1 || TAO_HAS_AMI_POLLER == 1 */
-
-// *********************************************************************
-
-#if (TAO_HAS_MINIMUM_CORBA == 0)
-
-class TAO_Export TAO_DII_Deferred_Reply_Dispatcher : public TAO_Reply_Dispatcher
-{
- // = TITLE
- //
- // Reply dispatcher for DII deferred requests.
- //
- // = DESCRIPTION
- //
-
-public:
- TAO_DII_Deferred_Reply_Dispatcher (const CORBA::Request_ptr req);
- // Constructor.
-
- virtual ~TAO_DII_Deferred_Reply_Dispatcher (void);
- // Destructor.
-
- CORBA::ULong reply_status (void) const;
- // Get the reply status.
-
- const TAO_GIOP_Version& version (void) const;
- // Get the GIOP version
-
- virtual int dispatch_reply (CORBA::ULong reply_status,
- const TAO_GIOP_Version& version,
- IOP::ServiceContextList& reply_ctx,
- TAO_GIOP_Message_State* message_state);
- // Dispatch the reply. This involves demarshalling the reply and
- // calling the appropriate call back hook method on the reply
- // handler.
- // Return 1 on sucess, -1 on error.
-
- virtual TAO_GIOP_Message_State *message_state (void);
- // Return the message state.
-
- void transport (TAO_Transport *t);
- // Sets the transport for this invocation.
-
-protected:
- IOP::ServiceContextList reply_service_info_;
- // The service context list
- // Note, that this is not a reference as in
- // the synchronous case. We own the reply_service_info
- // because our TAO_Asynch_Invocation will go out
- // of scope before we are done.
-
-private:
- CORBA::ULong reply_status_;
- // Reply or LocateReply status.
-
- //TAO_GIOP_Version version_;
- // The version
-
- TAO_GIOP_Message_State *message_state_;
- // CDR stream for reading the input.
- // @@ Carlos : message_state should go away. All we need is the reply
- // cdr. Is that right? (Alex).
-
- const CORBA::Request_ptr req_;
- // Where the reply needs to go.
-
- TAO_Transport *transport_;
- // This invocation is using this transport, may change...
-};
-
-#endif /* TAO_HAS_MINIMUM_CORBA */
-
-// *********************************************************************
-
#if defined (__ACE_INLINE__)
#include "tao/Reply_Dispatcher.i"
#endif /* __ACE_INLINE__ */
diff --git a/TAO/tao/Reply_Dispatcher.i b/TAO/tao/Reply_Dispatcher.i
index 24a9f941779..cfa1da318d3 100644
--- a/TAO/tao/Reply_Dispatcher.i
+++ b/TAO/tao/Reply_Dispatcher.i
@@ -1,66 +1 @@
// $Id$
-
-
-ACE_INLINE CORBA::ULong
-TAO_Synch_Reply_Dispatcher::reply_status (void) const
-{
- return this->reply_status_;
-}
-
-#if 0
-ACE_INLINE const TAO_GIOP_Version&
-TAO_Synch_Reply_Dispatcher::version (void) const
-{
- return this->version_;
-}
-#endif /* if 0 */
-
-#if (TAO_HAS_AMI_CALLBACK == 1) || (TAO_HAS_AMI_POLLER == 1)
-
-ACE_INLINE CORBA::ULong
-TAO_Asynch_Reply_Dispatcher::reply_status (void) const
-{
- return this->reply_status_;
-}
-
-#if 0
-ACE_INLINE const TAO_GIOP_Version &
-TAO_Asynch_Reply_Dispatcher::version (void) const
-{
- return this->version_;
-}
-#endif /*if 0*/
-ACE_INLINE void
-TAO_Asynch_Reply_Dispatcher::transport (TAO_Transport *t)
-{
- this->transport_ = t;
-}
-
-#endif /* TAO_HAS_AMI_CALLBACK == 1 || TAO_HAS_AMI_POLLER == 1 */
-
-//*********************************************************************
-
-#if (TAO_HAS_MINIMUM_CORBA == 0)
-
-ACE_INLINE CORBA::ULong
-TAO_DII_Deferred_Reply_Dispatcher::reply_status (void) const
-{
- return this->reply_status_;
-}
-
-#if 0
-ACE_INLINE const TAO_GIOP_Version&
-TAO_DII_Deferred_Reply_Dispatcher::version (void) const
-{
- return this->version_;
-}
-
-#endif /*If 0 */
-
-ACE_INLINE void
-TAO_DII_Deferred_Reply_Dispatcher::transport (TAO_Transport *t)
-{
- this->transport_ = t;
-}
-
-#endif /* TAO_HAS_MINIMUM_CORBA */
diff --git a/TAO/tao/SHMIOP_Connect.cpp b/TAO/tao/SHMIOP_Connect.cpp
index 32b92d452c1..886c9dafb2f 100644
--- a/TAO/tao/SHMIOP_Connect.cpp
+++ b/TAO/tao/SHMIOP_Connect.cpp
@@ -453,8 +453,10 @@ TAO_SHMIOP_Client_Connection_Handler::close (u_long)
int
TAO_SHMIOP_Client_Connection_Handler::handle_input (ACE_HANDLE)
{
- // Call the waiter to handle the input.
- return this->transport ()->wait_strategy ()->handle_input ();
+ int r = this->transport ()->handle_client_input ();
+ if (r == -1)
+ return -1;
+ return 0;
}
int
diff --git a/TAO/tao/SHMIOP_Transport.cpp b/TAO/tao/SHMIOP_Transport.cpp
index ef5548d5e0f..0c8b8b41751 100644
--- a/TAO/tao/SHMIOP_Transport.cpp
+++ b/TAO/tao/SHMIOP_Transport.cpp
@@ -157,7 +157,7 @@ TAO_SHMIOP_Client_Transport::start_request (TAO_ORB_Core * /*orb_core*/,
orb_core) == 0)
ACE_THROW (CORBA::MARSHAL ());*/
if (this->client_mesg_factory_->write_protocol_header
- (TAO_PLUGGABLE_MESSAGE_REQUEST,
+ (TAO_PLUGGABLE_MESSAGE_REQUEST,
output) == 0)
ACE_THROW (CORBA::MARSHAL ());
}
@@ -171,14 +171,14 @@ TAO_SHMIOP_Client_Transport::start_locate (TAO_ORB_Core * /*orb_core*/,
ACE_THROW_SPEC ((CORBA::SystemException))
{
// See this is GIOP way of doing this..But anyway SHMIOP will be tied
- // up with GIOP.
+ // up with GIOP.
if (this->client_mesg_factory_->write_protocol_header
- (TAO_PLUGGABLE_MESSAGE_LOCATEREQUEST,
+ (TAO_PLUGGABLE_MESSAGE_LOCATEREQUEST,
output) == 0)
ACE_THROW (CORBA::MARSHAL ());
-
+
if (this->client_mesg_factory_->write_message_header (opdetails,
- TAO_PLUGGABLE_MESSAGE_LOCATE_REQUEST_HEADER,
+ TAO_PLUGGABLE_MESSAGE_LOCATE_REQUEST_HEADER,
spec,
output) == 0)
ACE_THROW (CORBA::MARSHAL ());
@@ -226,6 +226,7 @@ TAO_SHMIOP_Client_Transport::handle_client_input (int /* block */,
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("TAO (%P|%t) SHMIOP_Transport::handle_client_input -")
ACE_TEXT (" nil message state\n")));
+ this->tms_->connection_closed ();
return -1;
}
@@ -239,6 +240,7 @@ TAO_SHMIOP_Client_Transport::handle_client_input (int /* block */,
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("TAO (%P|%t) - %p\n"),
ACE_TEXT ("SHMIOP_Transport::handle_client_input, handle_input")));
+ this->tms_->connection_closed ();
return -1;
}
if (result == 0)
@@ -248,7 +250,7 @@ TAO_SHMIOP_Client_Transport::handle_client_input (int /* block */,
result = this->client_mesg_factory_->parse_reply (*message_state,
this->params_);
-
+
if (result == -1)
{
if (TAO_debug_level > 0)
@@ -256,6 +258,7 @@ TAO_SHMIOP_Client_Transport::handle_client_input (int /* block */,
ACE_TEXT ("TAO (%P|%t) - %p\n"),
ACE_TEXT ("SHMIOP_Transport::handle_client_input, parse reply")));
message_state->reset ();
+ this->tms_->connection_closed ();
return -1;
}
@@ -274,6 +277,7 @@ TAO_SHMIOP_Client_Transport::handle_client_input (int /* block */,
ACE_TEXT ("handle_client_input - ")
ACE_TEXT ("dispatch reply failed\n")));
message_state->reset ();
+ this->tms_->connection_closed ();
return -1;
}
@@ -350,12 +354,12 @@ TAO_SHMIOP_Client_Transport::messaging_init (CORBA::Octet major,
if (TAO_debug_level > 0)
{
ACE_ERROR_RETURN ((LM_ERROR,
- ACE_TEXT ("(%N|%l|%p|%t) No matching major version number \n")),
+ ACE_TEXT ("(%N|%l|%p|%t) No matching major version number \n")),
0);
}
}
}
-
+
return 1;
}
@@ -366,12 +370,12 @@ TAO_SHMIOP_Client_Transport::send_request_header (TAO_Operation_Details &opdetai
{
// We are going to pass on this request to the underlying messaging
// layer. It should take care of this request
- CORBA::Boolean retval =
+ CORBA::Boolean retval =
this->client_mesg_factory_->write_message_header (opdetails,
- TAO_PLUGGABLE_MESSAGE_REQUEST_HEADER,
+ TAO_PLUGGABLE_MESSAGE_REQUEST_HEADER,
spec,
msg);
-
+
return retval;
}
diff --git a/TAO/tao/SHMIOP_Transport.h b/TAO/tao/SHMIOP_Transport.h
index c288140152e..47a480f09aa 100644
--- a/TAO/tao/SHMIOP_Transport.h
+++ b/TAO/tao/SHMIOP_Transport.h
@@ -83,7 +83,7 @@ public:
TAO_OutputCDR &stream,
int twoway,
ACE_Time_Value *max_wait_time);
- virtual CORBA::Boolean
+ virtual CORBA::Boolean
send_request_header (TAO_Operation_Details &opdetails,
TAO_Target_Specification &spec,
TAO_OutputCDR &msg);
@@ -137,18 +137,18 @@ public:
ACE_Time_Value *max_time_value = 0);
virtual int register_handler (void);
- virtual CORBA::Boolean
+ virtual CORBA::Boolean
send_request_header (TAO_Operation_Details &opdetails,
TAO_Target_Specification &spec,
TAO_OutputCDR &msg);
-
+
int messaging_init (CORBA::Octet major,
CORBA::Octet minor);
// Initialising the messaging object
-
+
void use_lite (CORBA::Boolean flag);
// Sets the lite flag
-
+
private:
TAO_Pluggable_Messaging *client_mesg_factory_;
// The message_factor instance specific for this particular
@@ -159,7 +159,7 @@ private:
CORBA::Boolean lite_flag_;
// Are we using lite?
-
+
TAO_Pluggable_Reply_Params params_;
// The reply data that is sent back by the server
};
@@ -184,7 +184,7 @@ public:
~TAO_SHMIOP_Server_Transport (void);
// Default destructor
-
+
TAO_GIOP_Message_State message_state_;
// This keep the state of the current message, to enable
// non-blocking reads, fragment reassembly, etc.
diff --git a/TAO/tao/Stub.cpp b/TAO/tao/Stub.cpp
index 5ca562c1a15..53679ec4ec7 100644
--- a/TAO/tao/Stub.cpp
+++ b/TAO/tao/Stub.cpp
@@ -16,22 +16,21 @@
#include "tao/NVList.h"
#include "tao/Invocation.h"
#include "tao/Asynch_Invocation.h"
+#include "tao/DII_Invocation.h"
#include "tao/ORB_Core.h"
#include "tao/Client_Strategy_Factory.h"
-#include "tao/debug.h"
#include "tao/Sync_Strategies.h"
-#include "ace/Auto_Ptr.h"
-
#include "tao/Buffering_Constraint_Policy.h"
#include "tao/Messaging_Policy_i.h"
#include "tao/Client_Priority_Policy.h"
+#include "tao/debug.h"
#if (TAO_HAS_RT_CORBA == 1)
-
# include "tao/RT_Policy_i.h"
-
#endif /* TAO_HAS_RT_CORBA == 1 */
+#include "ace/Auto_Ptr.h"
+
#if !defined (__ACE_INLINE__)
# include "tao/Stub.i"
#endif /* ! __ACE_INLINE__ */
diff --git a/TAO/tao/Synch_Reply_Dispatcher.cpp b/TAO/tao/Synch_Reply_Dispatcher.cpp
new file mode 100644
index 00000000000..aeb509e2ccc
--- /dev/null
+++ b/TAO/tao/Synch_Reply_Dispatcher.cpp
@@ -0,0 +1,108 @@
+// $Id$
+
+#include "tao/Synch_Reply_Dispatcher.h"
+#include "tao/ORB_Core.h"
+#include "tao/Wait_Strategy.h"
+
+#if !defined (__ACE_INLINE__)
+#include "tao/Synch_Reply_Dispatcher.i"
+#endif /* __ACE_INLINE__ */
+
+ACE_RCSID(tao, Synch_Reply_Dispatcher, "$Id$")
+
+// Constructor.
+TAO_Synch_Reply_Dispatcher::TAO_Synch_Reply_Dispatcher (TAO_ORB_Core *orb_core,
+ IOP::ServiceContextList &sc)
+ : reply_service_info_ (sc),
+ message_state_ (orb_core),
+ reply_received_ (0),
+ orb_core_ (orb_core),
+ wait_strategy_ (0),
+ leader_follower_condition_variable_ (0)
+{
+}
+
+// Destructor.
+TAO_Synch_Reply_Dispatcher::~TAO_Synch_Reply_Dispatcher (void)
+{
+}
+
+TAO_InputCDR &
+TAO_Synch_Reply_Dispatcher::reply_cdr (void)
+{
+ return this->message_state_.cdr;
+}
+
+int&
+TAO_Synch_Reply_Dispatcher::reply_received (void)
+{
+ return this->reply_received_;
+}
+
+int
+TAO_Synch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status,
+ const TAO_GIOP_Version & /*version*/,
+ IOP::ServiceContextList &reply_ctx,
+ TAO_GIOP_Message_State *message_state)
+{
+ this->reply_status_ = reply_status;
+ //this->version_ = version;
+
+ // Steal the buffer, that way we don't do any unnecesary copies of
+ // this data.
+ CORBA::ULong max = reply_ctx.maximum ();
+ CORBA::ULong len = reply_ctx.length ();
+ IOP::ServiceContext* context_list = reply_ctx.get_buffer (1);
+ this->reply_service_info_.replace (max, len, context_list, 1);
+
+ // Must reset the message state, it is possible that the same reply
+ // dispatcher is used because the request must be re-sent.
+ this->message_state_.reset (0);
+
+ if (&this->message_state_ != message_state)
+ {
+ // The Transport Mux Strategy did not use our Message_State to
+ // receive the event, possibly because it is muxing multiple
+ // requests over the same connection.
+
+ // Steal the buffer so that no copying is done.
+ this->message_state_.cdr.steal_from (message_state->cdr);
+
+ // There is no need to copy the other fields!
+ }
+
+ if (this->wait_strategy_ != 0)
+ {
+ if (this->wait_strategy_->reply_dispatched (
+ this->reply_received_,
+ this->leader_follower_condition_variable_) == -1)
+ return -1;
+ }
+
+ return 1;
+}
+
+TAO_GIOP_Message_State *
+TAO_Synch_Reply_Dispatcher::message_state (void)
+{
+ return &this->message_state_;
+}
+
+void
+TAO_Synch_Reply_Dispatcher::dispatcher_bound (TAO_Transport *transport)
+{
+ this->wait_strategy_ = transport->wait_strategy ();
+ this->leader_follower_condition_variable_ =
+ transport->wait_strategy ()->leader_follower_condition_variable ();
+}
+
+void
+TAO_Synch_Reply_Dispatcher::connection_closed (void)
+{
+ if (this->wait_strategy_ != 0)
+ {
+ this->wait_strategy_->connection_closed (
+ this->reply_received_,
+ this->leader_follower_condition_variable_);
+ }
+}
diff --git a/TAO/tao/Synch_Reply_Dispatcher.h b/TAO/tao/Synch_Reply_Dispatcher.h
new file mode 100644
index 00000000000..e42e825019b
--- /dev/null
+++ b/TAO/tao/Synch_Reply_Dispatcher.h
@@ -0,0 +1,107 @@
+// This may look like C, but it's really -*- C++ -*-
+// $Id$
+
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO
+//
+// = DESCRIPTION
+// Dispatch the reply appropriately.
+//
+// = AUTHOR
+// Alexander Babu Arulanthu <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#ifndef TAO_SYNCH_REPLY_DISPATCHER_H
+#define TAO_SYNCH_REPLY_DISPATCHER_H
+#include "ace/pre.h"
+
+#include "tao/Reply_Dispatcher.h"
+#include "tao/GIOP_Message_State.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_Wait_Strategy;
+
+class TAO_Export TAO_Synch_Reply_Dispatcher : public TAO_Reply_Dispatcher
+{
+ // = TITLE
+ // Reply dispatcher for Synchoronous Method Invocation (SMI)s.
+ //
+ // = DESCRIPTION
+ //
+
+public:
+ TAO_Synch_Reply_Dispatcher (TAO_ORB_Core *orb_core,
+ IOP::ServiceContextList &sc);
+ // Constructor.
+
+ virtual ~TAO_Synch_Reply_Dispatcher (void);
+ // Destructor.
+
+ CORBA::ULong reply_status (void) const;
+ // Get the reply status.
+
+ const TAO_GIOP_Version& version (void) const;
+ // Get the GIOP version.
+
+ TAO_InputCDR &reply_cdr (void);
+ // Return the reply CDR.
+
+ int &reply_received (void);
+ // A flag to check if the reply
+
+ virtual int dispatch_reply (CORBA::ULong reply_status,
+ const TAO_GIOP_Version& version,
+ IOP::ServiceContextList& reply_ctx,
+ TAO_GIOP_Message_State* message_state);
+ virtual TAO_GIOP_Message_State *message_state (void);
+ virtual void dispatcher_bound (TAO_Transport *);
+ virtual void connection_closed (void);
+
+protected:
+ IOP::ServiceContextList &reply_service_info_;
+ // The service context list
+
+private:
+ CORBA::ULong reply_status_;
+ // Reply or LocateReply status.
+
+ // TAO_GIOP_Version version_;
+ // The version
+
+ TAO_GIOP_Message_State message_state_;
+ // All the state required to receive the input...
+ // @@ Having members of type TAO_GIOP* indicates that we
+ // (Reply_despatcher) are aware of the underlying messaging
+ // protocol. But for the present let us close our eyes till we are
+ // able to iterate on a use case - Bala.
+
+ int reply_received_;
+ // Flag that indicates the reply has been received.
+
+ TAO_ORB_Core *orb_core_;
+ // Cache the ORB Core pointer.
+
+ TAO_Wait_Strategy *wait_strategy_;
+ // Save the wait strategy to signal the waiting threads (if
+ // appropriate).
+
+ ACE_SYNCH_CONDITION *leader_follower_condition_variable_;
+ // The condition variable used to signal the waiting thread in the
+ // Leader/Followers model. The variable is acquired in the thread
+ // that binds the Reply_Dispatcher to its transport, and then passed
+ // to the Waiting_Strategy to do the signalling, if needed.
+};
+
+#if defined (__ACE_INLINE__)
+#include "tao/Synch_Reply_Dispatcher.i"
+#endif /* __ACE_INLINE__ */
+
+#include "ace/post.h"
+#endif /* TAO_REPLY_DISPATCHER_H */
diff --git a/TAO/tao/Synch_Reply_Dispatcher.i b/TAO/tao/Synch_Reply_Dispatcher.i
new file mode 100644
index 00000000000..3e02a8bc13f
--- /dev/null
+++ b/TAO/tao/Synch_Reply_Dispatcher.i
@@ -0,0 +1,8 @@
+// $Id$
+
+
+ACE_INLINE CORBA::ULong
+TAO_Synch_Reply_Dispatcher::reply_status (void) const
+{
+ return this->reply_status_;
+}
diff --git a/TAO/tao/Transport_Mux_Strategy.cpp b/TAO/tao/Transport_Mux_Strategy.cpp
index 5d7d5e8b0ce..f6c93ddfa4c 100644
--- a/TAO/tao/Transport_Mux_Strategy.cpp
+++ b/TAO/tao/Transport_Mux_Strategy.cpp
@@ -2,8 +2,8 @@
#include "tao/Transport_Mux_Strategy.h"
#include "tao/Reply_Dispatcher.h"
-#include "tao/debug.h"
-#include "tao/Pluggable.h"
+
+ACE_RCSID(tao, Transport_Mut_Strategy, "$Id$")
TAO_Transport_Mux_Strategy::TAO_Transport_Mux_Strategy (TAO_Transport *transport)
: transport_ (transport)
@@ -19,358 +19,11 @@ int
TAO_Transport_Mux_Strategy::bind_dispatcher (CORBA::ULong,
TAO_Reply_Dispatcher *rd)
{
- // Help the Reply dispatcher to obtain leader follower condition
- // variable.
- return rd->leader_follower_condition_variable (this->transport_);
-}
-
-void
-TAO_Transport_Mux_Strategy::unbind_dispatcher (CORBA::ULong)
-{
-}
-
-// *********************************************************************
-
-TAO_Exclusive_TMS::TAO_Exclusive_TMS (TAO_Transport *transport)
- : TAO_Transport_Mux_Strategy (transport),
- request_id_generator_ (0),
- request_id_ (0),
- rd_ (0),
- message_state_ (transport->orb_core ())
-{
-}
-
-TAO_Exclusive_TMS::~TAO_Exclusive_TMS (void)
-{
-}
-
-// Generate and return an unique request id for the current
-// invocation. We can actually return a predecided ULong, since we
-// allow only one invocation over this connection at a time.
-CORBA::ULong
-TAO_Exclusive_TMS::request_id (void)
-{
- return this->request_id_generator_++;
-}
-
-// Bind the handler with the request id.
-int
-TAO_Exclusive_TMS::bind_dispatcher (CORBA::ULong request_id,
- TAO_Reply_Dispatcher *rd)
-{
- 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).
- // @@ Alex: the state must be reset, but the contents are always
- // clean because:
- // 1) it starts clean
- // 2) it is reset after each reply arrives...
-
- // If there was a previous reply, cleanup its state first.
- if (this->message_state_.message_size != 0)
- this->message_state_.reset (0);
-
- return TAO_Transport_Mux_Strategy::bind_dispatcher (request_id,
- rd);
-}
-
-void
-TAO_Exclusive_TMS::unbind_dispatcher (CORBA::ULong request_id)
-{
- if (this->request_id_ != request_id)
- return;
- this->request_id_ = 0xdeadbeef; // @@ What is a good value???
- this->rd_ = 0;
-}
-
-int
-TAO_Exclusive_TMS::dispatch_reply (CORBA::ULong request_id,
- CORBA::ULong reply_status,
- const TAO_GIOP_Version& version,
- IOP::ServiceContextList& reply_ctx,
- TAO_GIOP_Message_State* message_state)
-{
- // Check the ids.
- if (this->request_id_ != request_id)
- {
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO_Exclusive_TMS::dispatch_reply - <%d != %d>\n"),
- this->request_id_, request_id));
- return 0;
- }
-
- TAO_Reply_Dispatcher *rd = this->rd_;
- this->request_id_ = 0xdeadbeef; // @@ What is a good value???
- this->rd_ = 0;
-
- // Dispatch the reply.
- int result = rd->dispatch_reply (reply_status,
- version,
- reply_ctx,
- message_state);
-
- return result;
-}
-
-TAO_GIOP_Message_State *
-TAO_Exclusive_TMS::get_message_state (void)
-{
- if (this->rd_ != 0)
- {
- TAO_GIOP_Message_State* rd_message_state = this->rd_->message_state ();
- if (rd_message_state == 0)
- {
- // The Reply Dispatcher does not have one (the Asynch guys
- // don't) so go ahead and pass yours.
- return &this->message_state_;
- }
- }
- return &this->message_state_;
-}
-
-void
-TAO_Exclusive_TMS::destroy_message_state (TAO_GIOP_Message_State *)
-{
- // No Op.
-}
-
-int
-TAO_Exclusive_TMS::idle_after_send (void)
-{
- // No op.
- return 0;
-}
-
-int
-TAO_Exclusive_TMS::idle_after_reply (void)
-{
- if (this->transport_ != 0)
- return this->transport_->idle ();
-
+ rd->dispatcher_bound (this->transport_);
return 0;
}
-// int
-// TAO_Exclusive_TMS::reply_received (const CORBA::ULong request_id)
-// {
-// if (this->rd_ == 0)
-// {
-// // Reply should have been dispatched already.
-// return 1;
-// }
-// else if (this->request_id_ == request_id)
-// {
-// // Reply dispatcher is still here.
-// return 0;
-// }
-// else
-// {
-// // Error. Request id is not matching.
-//
-// if (TAO_debug_level > 0)
-// {
-// ACE_DEBUG ((LM_DEBUG,
-// "(%P | %t):TAO_Exclusive_TMS::reply_received:"
-// "Invalid request_id \n"));
-// }
-// return -1;
-// }
-// }
-
-// *********************************************************************
-
-TAO_Muxed_TMS::TAO_Muxed_TMS (TAO_Transport *transport)
- : TAO_Transport_Mux_Strategy (transport),
- request_id_generator_ (0),
- orb_core_ (transport->orb_core ()),
- message_state_ (0)
-{
-}
-
-TAO_Muxed_TMS::~TAO_Muxed_TMS (void)
-{
-}
-
-// Generate and return an unique request id for the current
-// invocation.
-CORBA::ULong
-TAO_Muxed_TMS::request_id (void)
-{
- // @@ What is a good error return value?
- ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon,
- this->request_id_lock_, 0);
- return this->request_id_generator_++;
-}
-
-// Bind the dispatcher with the request id.
-int
-TAO_Muxed_TMS::bind_dispatcher (CORBA::ULong request_id,
- TAO_Reply_Dispatcher *rd)
-{
- int result = this->dispatcher_table_.bind (request_id, rd);
-
- if (result != 0)
- {
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P | %t):TAO_Muxed_TMS::bind_dispatcher: ")
- ACE_TEXT ("bind dispatcher failed: result = %d\n"),
- result));
-
- return -1;
- }
-
- return TAO_Transport_Mux_Strategy::bind_dispatcher (request_id,
- rd);
-}
-
-void
-TAO_Muxed_TMS::unbind_dispatcher (CORBA::ULong request_id)
-{
- TAO_Reply_Dispatcher *rd = 0;
- (void) this->dispatcher_table_.unbind (request_id, rd);
-}
-
-int
-TAO_Muxed_TMS::dispatch_reply (CORBA::ULong request_id,
- CORBA::ULong reply_status,
- const TAO_GIOP_Version &version,
- IOP::ServiceContextList &reply_ctx,
- TAO_GIOP_Message_State *message_state)
-{
- // This message state should be the same as the one we have here,
- // which we gave to the Transport to read the message. Just a sanity
- // check here.
- ACE_ASSERT (message_state == this->message_state_);
-
- int result = 0;
- TAO_Reply_Dispatcher *rd = 0;
-
- // Grab the reply dispatcher for this id.
- result = this->dispatcher_table_.unbind (request_id, rd);
-
- if (result != 0)
- {
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P | %t):TAO_Muxed_TMS::dispatch_reply: ")
- ACE_TEXT ("unbind dispatcher failed: result = %d\n"),
- result));
-
- return -1;
- }
-
- // @@ Carlos : We could save the <message_state> somehow and then
- // signal some other thread to go ahead read the incoming message
- // if any. Is this what you were telling me before? (Alex).
-
- // Dispatch the reply.
- return rd->dispatch_reply (reply_status,
- version,
- reply_ctx,
- message_state);
-
- // No need for idling Transport, it would have got idle'd soon after
- // sending the request.
-}
-
-TAO_GIOP_Message_State *
-TAO_Muxed_TMS::get_message_state (void)
-{
- if (this->message_state_ == 0)
- {
- // Create the next message state.
- ACE_NEW_RETURN (this->message_state_,
- TAO_GIOP_Message_State
- (this->transport_->orb_core ()),
- 0);
- }
-
- return this->message_state_;
-}
-
void
-TAO_Muxed_TMS::destroy_message_state (TAO_GIOP_Message_State *)
-{
- delete this->message_state_;
- this->message_state_ = 0;
-}
-
-int
-TAO_Muxed_TMS::idle_after_send (void)
-{
- if (this->transport_ != 0)
- return this->transport_->idle ();
-
- return 0;
-}
-
-int
-TAO_Muxed_TMS::idle_after_reply (void)
+TAO_Transport_Mux_Strategy::unbind_dispatcher (CORBA::ULong)
{
- // No op.
- return 0;
}
-
-// int
-// TAO_Muxed_TMS::reply_received (const CORBA::ULong request_id)
-// {
-// if (this->dispatcher_table_.find (request_id) == -1)
-// {
-// // Reply should have been dispatched already.
-// return 1;
-// }
-// else
-// {
-// // Reply dispatcher is still here.
-// return 0;
-// }
-// }
-
-#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class ACE_Hash_Map_Manager_Ex <CORBA::ULong,
- TAO_Reply_Dispatcher *,
- ACE_Hash <CORBA::ULong>,
- ACE_Equal_To <CORBA::ULong>,
- ACE_SYNCH_MUTEX>;
-
-template class ACE_Hash_Map_Entry<CORBA::ULong,
- TAO_Reply_Dispatcher *>;
-
-template class ACE_Hash_Map_Iterator_Base_Ex<CORBA::ULong,
- TAO_Reply_Dispatcher *,
- ACE_Hash<unsigned int>,
- ACE_Equal_To<unsigned int>,
- ACE_SYNCH_MUTEX>;
-
-template class ACE_Hash_Map_Iterator_Ex<CORBA::ULong,
- TAO_Reply_Dispatcher*,
- ACE_Hash<CORBA::ULong>,
- ACE_Equal_To<CORBA::ULong>,
- ACE_SYNCH_MUTEX>;
-
-template class ACE_Hash_Map_Reverse_Iterator_Ex<CORBA::ULong,
- TAO_Reply_Dispatcher*,
- ACE_Hash<CORBA::ULong>,
- ACE_Equal_To<CORBA::ULong>,
- ACE_SYNCH_MUTEX>;
-template class ACE_Equal_To <CORBA::ULong>;
-
-#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-#pragma instantiate ACE_Hash_Map_Manager_Ex <CORBA::ULong, TAO_Reply_Dispatcher *, ACE_Hash <CORBA::ULong>, ACE_Equal_To <CORBA::ULong>, ACE_SYNCH_MUTEX>
-
-#pragma instantiate ACE_Hash_Map_Entry<CORBA::ULong, TAO_Reply_Dispatcher *>
-
-#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<unsigned int, TAO_Reply_Dispatcher *, ACE_Hash<unsigned int>, ACE_Equal_To<unsigned int>, ACE_SYNCH_MUTEX>
-
-#pragma instantiate ACE_Hash_Map_Iterator_Ex<CORBA::ULong, TAO_Reply_Dispatcher*, ACE_Hash<CORBA::ULong>, ACE_Equal_To<CORBA::ULong>, ACE_SYNCH_MUTEX>
-
-#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<CORBA::ULong, TAO_Reply_Dispatcher*, ACE_Hash<CORBA::ULong>, ACE_Equal_To<CORBA::ULong>, ACE_SYNCH_MUTEX>
-
-#pragma instantiate ACE_Equal_To <CORBA::ULong>
-
-#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/tao/Transport_Mux_Strategy.h b/TAO/tao/Transport_Mux_Strategy.h
index b06b2baedad..414b2dc077e 100644
--- a/TAO/tao/Transport_Mux_Strategy.h
+++ b/TAO/tao/Transport_Mux_Strategy.h
@@ -1,19 +1,11 @@
// This may look like C, but it's really -*- C++ -*-
// $Id$
-
-
// ============================================================================
//
// = LIBRARY
// TAO
//
-// = FILENAME
-// Transport_Mux_Strategy.h
-//
-// = DESCRIPTION
-// IIOP Transport Mux Strategies.
-//
// = AUTHOR
// Alexander Babu Arulanthu <alex@cs.wustl.edu>
//
@@ -23,18 +15,16 @@
#define TAO_TRANSPORT_MUX_STRATEGY_H
#include "ace/pre.h"
-// BALA should not be here But for the time being
-#include "tao/GIOP_Message_State.h"
-
+#include "tao/IOPC.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
-#include "ace/Functor.h"
-#include "ace/Hash_Map_Manager.h"
-
class TAO_Reply_Dispatcher;
+class TAO_GIOP_Version;
+class TAO_GIOP_Message_State;
+class TAO_Transport;
class TAO_Export TAO_Transport_Mux_Strategy
{
@@ -99,141 +89,14 @@ public:
// Request is sent and the reply is received. Idle the transport
// now.
- // virtual int reply_received (const CORBA::ULong request_id) = 0;
- // Check whether the reply has been receieved for the request with
- // <request_id>. Return 0 if no, 1 on yes and -1 if the request_id
- // is invalid or there are some errors.
+ virtual void connection_closed (void) = 0;
+ // The transport object has closed the connection, inform all Reply
+ // dispatchers and waiting strategies.
protected:
TAO_Transport *transport_;
// Cache the transport reference.
};
-// *********************************************************************
-
-class TAO_Export TAO_Exclusive_TMS : public TAO_Transport_Mux_Strategy
-{
- // = TITLE
- //
- // Connection exclusive for the request.
- //
- // = DESCRIPTION
- //
-
-public:
- TAO_Exclusive_TMS (TAO_Transport *transport);
- // Constructor.
-
- virtual ~TAO_Exclusive_TMS (void);
- // Destructor.
-
- // = Please read the documentation in the TAO_Transport_Mux_Strategy
- // class.
- virtual CORBA::ULong request_id (void);
- virtual int bind_dispatcher (CORBA::ULong request_id,
- TAO_Reply_Dispatcher *rh);
- virtual void unbind_dispatcher (CORBA::ULong request_id);
- virtual int dispatch_reply (CORBA::ULong request_id,
- CORBA::ULong reply_status,
- const TAO_GIOP_Version& version,
- IOP::ServiceContextList& reply_ctx,
- TAO_GIOP_Message_State* message_state);
- virtual TAO_GIOP_Message_State *get_message_state (void);
- virtual void destroy_message_state (TAO_GIOP_Message_State *);
- virtual int idle_after_send (void);
- virtual int idle_after_reply (void);
-
-protected:
- CORBA::ULong request_id_generator_;
- // Used to generate a different request_id on each call to
- // request_id().
-
- CORBA::ULong request_id_;
- // Request id for the current request.
-
- TAO_Reply_Dispatcher *rd_;
- // Reply Dispatcher corresponding to the request.
-
- TAO_GIOP_Message_State message_state_;
- // Message state to read the incoming message.
-
- // @@ Having members of type TAO_GIOP* indicates that we
- // (Transport_Mux_Strategy) are aware of the underlying messaging
- // protocol. But for the present let us close our eyes till we are
- // able to iterate on a use case - Bala.
-};
-
-// *********************************************************************
-
-class TAO_Export TAO_Muxed_TMS : public TAO_Transport_Mux_Strategy
-{
- // = TITLE
- //
- // Connection is multiplexed for many requests.
- //
- // = DESCRIPTION
- //
-
-public:
- TAO_Muxed_TMS (TAO_Transport *transport);
- // Constructor.
-
- virtual ~TAO_Muxed_TMS (void);
- // Destructor.
-
- virtual CORBA::ULong request_id (void);
- // Generate and return an unique request id for the current
- // invocation.
-
- // = Please read the documentation in the TAO_Transport_Mux_Strategy
- // class.
- virtual int bind_dispatcher (CORBA::ULong request_id,
- TAO_Reply_Dispatcher *rh);
- virtual void unbind_dispatcher (CORBA::ULong request_id);
- virtual int dispatch_reply (CORBA::ULong request_id,
- CORBA::ULong reply_status,
- const TAO_GIOP_Version& version,
- IOP::ServiceContextList& reply_ctx,
- TAO_GIOP_Message_State* message_state);
- virtual TAO_GIOP_Message_State *get_message_state (void);
- virtual void destroy_message_state (TAO_GIOP_Message_State *);
- virtual int idle_after_send (void);
- virtual int idle_after_reply (void);
-
-protected:
- CORBA::ULong request_id_generator_;
- // Used to generate a different request_id on each call to
- // request_id().
-
- ACE_SYNCH_MUTEX request_id_lock_;
- // Lock to protect the state of the request id generator.
-
- typedef ACE_Hash_Map_Manager_Ex <CORBA::ULong,
- TAO_Reply_Dispatcher *,
- ACE_Hash <CORBA::ULong>,
- ACE_Equal_To <CORBA::ULong>,
- ACE_SYNCH_MUTEX> REQUEST_DISPATCHER_TABLE;
-
- REQUEST_DISPATCHER_TABLE dispatcher_table_;
- // Table of <Request ID, Reply Dispatcher> pairs.
-
- TAO_ORB_Core *orb_core_;
- // Keep track of the orb core pointer. We need to this to create the
- // Reply Dispatchers.
-
- TAO_GIOP_Message_State *message_state_;
- // Message state where the current input message is being read. This
- // is created at start of each incoming message. When that message
- // is read, the message is processed and for the next message a new
- // message state is created.
-
- // @@ Having members of type TAO_GIOP* indicates that we
- // (Transport_Mux_Strategy) are aware of the underlying messaging
- // protocol. But for the present let us close our eyes till we are
- // able to iterate on a use case - Bala.
-};
-
-// *********************************************************************
-
#include "ace/post.h"
#endif /* TRANSPORT_MUX_STRATEGY_H */
diff --git a/TAO/tao/UIOP_Connect.cpp b/TAO/tao/UIOP_Connect.cpp
index 1b92cb113a7..1a1a05d8912 100644
--- a/TAO/tao/UIOP_Connect.cpp
+++ b/TAO/tao/UIOP_Connect.cpp
@@ -430,8 +430,10 @@ TAO_UIOP_Client_Connection_Handler::close (u_long /* flags */)
int
TAO_UIOP_Client_Connection_Handler::handle_input (ACE_HANDLE)
{
- // Call the waiter to handle the input.
- return this->transport ()->wait_strategy ()->handle_input ();
+ int r = this->transport ()->handle_client_input ();
+ if (r == -1)
+ return -1;
+ return 0;
}
int
diff --git a/TAO/tao/UIOP_Transport.cpp b/TAO/tao/UIOP_Transport.cpp
index 4b777387990..c2dab7b6fb4 100644
--- a/TAO/tao/UIOP_Transport.cpp
+++ b/TAO/tao/UIOP_Transport.cpp
@@ -235,6 +235,7 @@ TAO_UIOP_Client_Transport::handle_client_input (int /* block */,
ACE_DEBUG ((LM_DEBUG,
"TAO (%P|%t) UIOP_Transport::handle_client_input -"
" nil message state\n"));
+ this->tms_->connection_closed ();
return -1;
}
@@ -248,6 +249,7 @@ TAO_UIOP_Client_Transport::handle_client_input (int /* block */,
ACE_DEBUG ((LM_DEBUG,
"TAO (%P|%t) - %p\n",
"UIOP_Transport::handle_client_input, handle_input"));
+ this->tms_->connection_closed ();
return -1;
}
if (result == 0)
@@ -264,6 +266,7 @@ TAO_UIOP_Client_Transport::handle_client_input (int /* block */,
"TAO (%P|%t) - %p\n",
"UIOP_Transport::handle_client_input, parse reply"));
message_state->reset ();
+ this->tms_->connection_closed ();
return -1;
}
@@ -282,6 +285,7 @@ TAO_UIOP_Client_Transport::handle_client_input (int /* block */,
"handle_client_input - "
"dispatch reply failed\n"));
message_state->reset ();
+ this->tms_->connection_closed ();
return -1;
}
@@ -307,7 +311,7 @@ TAO_UIOP_Client_Transport::register_handler (void)
ACE_Reactor *r = this->orb_core ()->reactor ();
if (r == this->handler ()->reactor ())
return 0;
-
+
return r->register_handler (this->handler (),
ACE_Event_Handler::READ_MASK);
}
diff --git a/TAO/tao/UIOP_Transport.h b/TAO/tao/UIOP_Transport.h
index c24aafd3151..0a55c289366 100644
--- a/TAO/tao/UIOP_Transport.h
+++ b/TAO/tao/UIOP_Transport.h
@@ -87,12 +87,12 @@ public:
int twoway,
ACE_Time_Value *max_wait_time);
-
- virtual CORBA::Boolean
+
+ virtual CORBA::Boolean
send_request_header (TAO_Operation_Details &opdetails,
TAO_Target_Specification &spec,
TAO_OutputCDR &msg);
-
+
protected:
TAO_UIOP_Handler_Base *handler_;
// the connection service handler used for accessing lower layer
@@ -134,7 +134,7 @@ public:
TAO_OutputCDR &output,
CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
ACE_THROW_SPEC ((CORBA::SystemException));
-
+
virtual int send_request (TAO_Stub *stub,
TAO_ORB_Core *orb_core,
TAO_OutputCDR &stream,
@@ -146,11 +146,11 @@ public:
// Register the handler with the reactor. This will be called by the
// Wait Strategy if Reactor is used for that strategy.
- virtual CORBA::Boolean
+ virtual CORBA::Boolean
send_request_header (TAO_Operation_Details &opdetail,
TAO_Target_Specification &spec,
TAO_OutputCDR &msg);
-
+
int messaging_init (CORBA::Octet major,
CORBA::Octet minor);
// Initialising the messaging object
@@ -165,10 +165,10 @@ private:
TAO_ORB_Core *orb_core_;
// Our orb Core
-
+
CORBA::Boolean lite_flag_;
// We using GIOP lite?
-
+
TAO_Pluggable_Reply_Params params_;
// The reply data that is sent back by the server
};
diff --git a/TAO/tao/Wait_On_Leader_Follower.cpp b/TAO/tao/Wait_On_Leader_Follower.cpp
new file mode 100644
index 00000000000..f666bcc5bb4
--- /dev/null
+++ b/TAO/tao/Wait_On_Leader_Follower.cpp
@@ -0,0 +1,337 @@
+// $Id$
+
+#include "tao/Wait_On_Leader_Follower.h"
+#include "tao/Pluggable.h"
+#include "tao/ORB_Core.h"
+#include "tao/Leader_Follower.h"
+#include "tao/debug.h"
+
+ACE_RCSID(tao, Wait_On_Leader_Follower, "$Id$")
+
+TAO_Wait_On_Leader_Follower::TAO_Wait_On_Leader_Follower (TAO_Transport *transport)
+ : TAO_Wait_Strategy (transport)
+{
+}
+
+TAO_Wait_On_Leader_Follower::~TAO_Wait_On_Leader_Follower (void)
+{
+}
+
+int
+TAO_Wait_On_Leader_Follower::register_handler (void)
+{
+ return this->transport_->register_handler ();
+}
+
+int
+TAO_Wait_On_Leader_Follower::sending_request (TAO_ORB_Core *orb_core,
+ int two_way)
+{
+ // Register the handler.
+ // @@ We could probably move this somewhere else, and remove this
+ // function totally. (Alex).
+ this->transport_->register_handler ();
+
+ // Send the request.
+ return this->TAO_Wait_Strategy::sending_request (orb_core,
+ two_way);
+}
+
+int
+TAO_Wait_On_Leader_Follower::wait (ACE_Time_Value *max_wait_time,
+ int &reply_received)
+{
+ // Cache the ORB core, it won't change and is used multiple times
+ // below:
+ TAO_ORB_Core* orb_core =
+ this->transport_->orb_core ();
+
+ TAO_Leader_Follower& leader_follower =
+ orb_core->leader_follower ();
+
+ // Obtain the lock.
+ ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon,
+ leader_follower.lock (), -1);
+
+ // Optmize the first iteration [no access to errno]
+ int result = 1;
+
+ //
+ // Begin artificial scope for auto_ptr like helpers calling:
+ // leader_follower.set_client_thread () and (maybe later on)
+ // leader_follower.set_client_leader_thread ().
+ //
+ {
+ // Calls leader_follower.set_client_thread () on construction and
+ // leader_follower.reset_client_thread () on destruction.
+ TAO_LF_Client_Thread_Helper client_thread_helper (leader_follower);
+ ACE_UNUSED_ARG (client_thread_helper);
+
+ ACE_Countdown_Time countdown (max_wait_time);
+
+ // Check if there is a leader. Note that it cannot be us since we
+ // gave up our leadership when we became a client.
+ if (leader_follower.leader_available ())
+ {
+ // = Wait as a follower.
+
+ // Grab the condtion variable.
+ ACE_SYNCH_CONDITION* cond =
+ orb_core->leader_follower_condition_variable ();
+
+ if (TAO_debug_level >= 5)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("TAO (%P|%t) - wait (follower) on Transport <%x>, cond <%x>\n"),
+ this->transport_,
+ cond));
+
+ while (!reply_received &&
+ leader_follower.leader_available ())
+ {
+ // Add ourselves to the list, do it everytime we wake up
+ // from the CV loop. Because:
+ //
+ // - The leader thread could have elected us as the new
+ // leader.
+ // - Before we can assume the role another thread becomes
+ // the leader
+ // - But our condition variable could have been removed
+ // already, if we don't add it again we will never wake
+ // up.
+ //
+ // Notice that we can have spurious wake ups, in that case
+ // adding the leader results in an error, that must be
+ // ignored.
+ // You may be thinking of not removing the condition
+ // variable in the code that sends the signal, but
+ // removing it here, that does not work either, in that
+ // case the condition variable may be used to:
+ // - Wake up because its reply arrived
+ // - Wake up because it must become the leader
+ // but only the first one has any effect, so the leader is
+ // lost.
+ //
+
+ (void) leader_follower.add_follower (cond);
+
+ if (max_wait_time == 0)
+ {
+ if (cond == 0 || cond->wait () == -1)
+ {
+ if (TAO_debug_level >= 5)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("TAO (%P|%t) - wait (follower) on <%x> ")
+ ACE_TEXT ("cond == 0 || cond->wait () == -1 : cond = %d\n"),
+ this->transport_, (cond == 0) ? 0 : cond));
+ return -1;
+ }
+ }
+ else
+ {
+ countdown.update ();
+ ACE_Time_Value tv = ACE_OS::gettimeofday ();
+ tv += *max_wait_time;
+ if (cond == 0 || cond->wait (&tv) == -1)
+ {
+ if (TAO_debug_level >= 5)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("TAO (%P|%t) - wait (follower) on <%x> ")
+ ACE_TEXT ("cond == 0 || cond->wait (tv) == -1\n"),
+ this->transport_));
+ return -1;
+ }
+ }
+ }
+
+ countdown.update ();
+
+#if 0
+ // Cannot remove the follower here, we *must* remove it when
+ // we signal it so the same condition is not signalled for
+ // both wake up as a follower and as the next leader.
+ if (leader_follower.remove_follower (cond) == -1)
+ ACE_ERROR ((LM_ERROR,
+ "TAO (%P|%t) TAO_Wait_On_Leader_Follower::wait - "
+ "remove_follower failed for <%x>\n", cond));
+#endif /* 0 */
+
+ if (TAO_debug_level >= 5)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("TAO (%P|%t) - done (follower) "
+ "on <%x>, reply_received %d\n"),
+ this->transport_, reply_received));
+
+ // Now somebody woke us up to become a leader or to handle our
+ // input. We are already removed from the follower queue.
+
+ if (reply_received == 1)
+ return 0;
+
+ // FALLTHROUGH
+ // We only get here if we woke up but the reply is not
+ // complete yet, time to assume the leader role....
+ // i.e. ACE_ASSERT (reply_received == 0);
+ }
+
+ // = Leader Code.
+
+ // The only way to reach this point is if we must become the
+ // leader, because there is no leader or we have to update to a
+ // leader or we are doing nested upcalls in this case we do
+ // increase the refcount on the leader in TAO_ORB_Core.
+
+ // Calls leader_follower.set_client_leader_thread () on
+ // construction and leader_follower.reset_client_leader_thread ()
+ // on destruction. Note that this may increase the refcount of
+ // the leader.
+ TAO_LF_Client_Leader_Thread_Helper client_leader_thread_helper (leader_follower);
+ ACE_UNUSED_ARG (client_leader_thread_helper);
+
+ {
+ ACE_GUARD_RETURN (ACE_Reverse_Lock<ACE_SYNCH_MUTEX>, rev_mon,
+ leader_follower.reverse_lock (), -1);
+
+ // @@ Do we need to do this?
+ // Become owner of the reactor.
+ orb_core->reactor ()->owner (ACE_Thread::self ());
+
+ // Run the reactor event loop.
+
+ if (TAO_debug_level >= 5)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("TAO (%P|%t) - wait (leader):to enter reactor event loop on <%x>\n"),
+ this->transport_));
+
+ while (1)
+ {
+ // Run the event loop.
+ result = orb_core->reactor ()->handle_events (max_wait_time);
+
+ // If we got our reply, no need to run the event loop any
+ // further.
+ if (reply_received)
+ break;
+
+ // Did we timeout? If so, stop running the loop.
+ if (result == 0 &&
+ max_wait_time != 0 &&
+ *max_wait_time == ACE_Time_Value::zero)
+ break;
+
+ // Other errors? If so, stop running the loop.
+ if (result == -1)
+ break;
+
+ // Otherwise, keep going...
+ }
+
+ if (TAO_debug_level >= 5)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("TAO (%P|%t) - wait : (leader) : done with reactor event loop on <%x>\n"),
+ this->transport_));
+ }
+ }
+ //
+ // End artificial scope for auto_ptr like helpers calling:
+ // leader_follower.reset_client_thread () and (maybe)
+ // leader_follower.reset_client_leader_thread ().
+ //
+
+ // Wake up the next leader, we cannot do that in handle_input,
+ // because the woken up thread would try to get into handle_events,
+ // which is at the time in handle_input still occupied. But do it
+ // before checking the error in <result>, even if there is an error
+ // in our input we should continue running the loop in another
+ // thread.
+
+ if (leader_follower.elect_new_leader () == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t):TAO_Wait_On_Leader_Follower::send_request: ")
+ ACE_TEXT ("Failed to unset the leader and wake up a new follower.\n")),
+ -1);
+
+ if (result == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t):TAO_Wait_On_Leader_Follower::wait: ")
+ ACE_TEXT ("handle_events failed.\n")),
+ -1);
+
+ // Return an error if there was a problem receiving the reply...
+ if (max_wait_time != 0)
+ {
+ if (reply_received != 1
+ && *max_wait_time == ACE_Time_Value::zero)
+ {
+ result = -1;
+ errno = ETIME;
+ }
+ }
+ else
+ {
+ result = 0;
+ if (reply_received == -1)
+ {
+ result = -1;
+ }
+ }
+
+ return result;
+}
+
+ACE_SYNCH_CONDITION *
+TAO_Wait_On_Leader_Follower::leader_follower_condition_variable (void)
+{
+ return this->transport_->orb_core ()->leader_follower_condition_variable ();
+}
+
+int
+TAO_Wait_On_Leader_Follower::reply_dispatched (int &reply_received_flag,
+ ACE_SYNCH_CONDITION *condition)
+{
+ if (condition == 0)
+ return 0;
+
+ TAO_Leader_Follower& leader_follower =
+ this->transport_->orb_core ()->leader_follower ();
+
+ // Obtain the lock.
+ ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon,
+ leader_follower.lock (),
+ -1);
+
+ reply_received_flag = 1;
+
+ // We *must* remove it when we signal it so the same condition
+ // is not signalled for both wake up as a follower and as the
+ // next leader.
+ // The follower may not be there if the reply is received while
+ // the consumer is not yet waiting for it (i.e. it send the
+ // request but has not blocked to receive the reply yet).
+ // Ignore errors.
+ (void) leader_follower.remove_follower (condition);
+
+ if (condition->signal () == -1)
+ return -1;
+
+ return 0;
+}
+
+void
+TAO_Wait_On_Leader_Follower::connection_closed (int &reply_received_flag,
+ ACE_SYNCH_CONDITION *condition)
+{
+ if (condition == 0)
+ return;
+
+ TAO_Leader_Follower& leader_follower =
+ this->transport_->orb_core ()->leader_follower ();
+
+ // Obtain the lock.
+ ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, leader_follower.lock ());
+
+ reply_received_flag = -11;
+
+ (void) leader_follower.remove_follower (condition);
+
+ (void) condition->signal ();
+}
diff --git a/TAO/tao/Wait_On_Leader_Follower.h b/TAO/tao/Wait_On_Leader_Follower.h
new file mode 100644
index 00000000000..78bb6e89580
--- /dev/null
+++ b/TAO/tao/Wait_On_Leader_Follower.h
@@ -0,0 +1,60 @@
+// This may look like C, but it's really -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO
+//
+// = AUTHOR
+// Alexander Babu Arulanthu <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#ifndef TAO_WAIT_ON_LEADER_FOLLOWER_H
+#define TAO_WAIT_ON_LEADER_FOLLOWER_H
+#include "ace/pre.h"
+
+#include "tao/Wait_Strategy.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_Export TAO_Wait_On_Leader_Follower : public TAO_Wait_Strategy
+{
+ // = TITLE
+ //
+ // Wait according to the Leader-Follower model. Leader does the
+ // event loop of the Reactor and the Followers wait on the
+ // condition variable.
+ //
+ // = DESCRIPTION
+ //
+ // This impelementation is to work with the Muxed Transport
+ // Mechanism. Here the state variables such as <Condition
+ // Variable> etc cannot be kept in the Wait Strategy, since the
+ // Wait Strategy is per Transport object and here the Transport
+ // is Muxed and hence there are multiple threads running in the
+ // same Transport context.
+
+public:
+ TAO_Wait_On_Leader_Follower (TAO_Transport *transport);
+ // Constructor.
+
+ virtual ~TAO_Wait_On_Leader_Follower (void);
+ // Destructor.
+
+ // = Documented in TAO_Wait_Strategy.
+ virtual int sending_request (TAO_ORB_Core *orb_core,
+ int two_way);
+ virtual int wait (ACE_Time_Value *max_wait_time,
+ int &reply_received);
+ virtual int register_handler (void);
+ virtual ACE_SYNCH_CONDITION *leader_follower_condition_variable (void);
+ virtual int reply_dispatched (int &, ACE_SYNCH_CONDITION *);
+ virtual void connection_closed (int &, ACE_SYNCH_CONDITION *);
+};
+
+#include "ace/post.h"
+#endif /* TAO_WAIT_ON_LEADER_FOLLOWER_H */
diff --git a/TAO/tao/Wait_On_Reactor.cpp b/TAO/tao/Wait_On_Reactor.cpp
new file mode 100644
index 00000000000..7a7d16612b9
--- /dev/null
+++ b/TAO/tao/Wait_On_Reactor.cpp
@@ -0,0 +1,79 @@
+// $Id$
+
+#include "tao/Wait_On_Reactor.h"
+#include "tao/Pluggable.h"
+#include "tao/ORB_Core.h"
+
+ACE_RCSID(tao, Wait_On_Reactor, "$Id$")
+
+TAO_Wait_On_Reactor::TAO_Wait_On_Reactor (TAO_Transport *transport)
+ : TAO_Wait_Strategy (transport)
+{
+}
+
+TAO_Wait_On_Reactor::~TAO_Wait_On_Reactor (void)
+{
+}
+
+int
+TAO_Wait_On_Reactor::wait (ACE_Time_Value *max_wait_time,
+ int &reply_received)
+{
+ // Reactor does not change inside the loop.
+ ACE_Reactor* reactor =
+ this->transport_->orb_core ()->reactor ();
+
+ // Do the event loop, till we fully receive a reply.
+ int result = 0;
+ while (1)
+ {
+ // Run the event loop.
+ result = reactor->handle_events (max_wait_time);
+
+ // If we got our reply, no need to run the event loop any
+ // further.
+ if (reply_received)
+ break;
+
+ // Did we timeout? If so, stop running the loop.
+ if (result == 0 &&
+ max_wait_time != 0 &&
+ *max_wait_time == ACE_Time_Value::zero)
+ break;
+
+ // Other errors? If so, stop running the loop.
+ if (result == -1)
+ break;
+
+ // Otherwise, keep going...
+ }
+
+ if (result == -1 || reply_received == -1)
+ return -1;
+
+ // Return an error if there was a problem receiving the reply.
+ if (max_wait_time != 0)
+ {
+ if (reply_received != 1 &&
+ *max_wait_time == ACE_Time_Value::zero)
+ {
+ result = -1;
+ errno = ETIME;
+ }
+ }
+ else
+ {
+ result = 0;
+ if (reply_received == -1)
+ result = -1;
+ }
+
+ return result;
+}
+
+// Register the handler with the Reactor.
+int
+TAO_Wait_On_Reactor::register_handler (void)
+{
+ return this->transport_->register_handler ();
+}
diff --git a/TAO/tao/Wait_On_Reactor.h b/TAO/tao/Wait_On_Reactor.h
new file mode 100644
index 00000000000..ac7349f5f97
--- /dev/null
+++ b/TAO/tao/Wait_On_Reactor.h
@@ -0,0 +1,49 @@
+// This may look like C, but it's really -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO
+//
+// = AUTHOR
+// Alexander Babu Arulanthu <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#ifndef TAO_WAIT_ON_REACTOR_H
+#define TAO_WAIT_ON_REACTOR_H
+#include "ace/pre.h"
+
+#include "tao/Wait_Strategy.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_Export TAO_Wait_On_Reactor : public TAO_Wait_Strategy
+{
+ // = TITLE
+ //
+ // Wait on the Reactor. Happens in s Single Threaded client
+ // environment.
+ //
+ // = DESCRIPTION
+ //
+
+public:
+ TAO_Wait_On_Reactor (TAO_Transport *transport);
+ // Constructor.
+
+ virtual ~TAO_Wait_On_Reactor (void);
+ // Destructor.
+
+ // = Documented in TAO_Wait_Strategy.
+
+ virtual int wait (ACE_Time_Value *max_wait_time,
+ int &reply_received);
+ virtual int register_handler (void);
+};
+
+#include "ace/post.h"
+#endif /* TAO_WAIT_ON_REACTOR_H */
diff --git a/TAO/tao/Wait_On_Read.cpp b/TAO/tao/Wait_On_Read.cpp
new file mode 100644
index 00000000000..df078b709d7
--- /dev/null
+++ b/TAO/tao/Wait_On_Read.cpp
@@ -0,0 +1,41 @@
+// $Id$
+
+#include "tao/Wait_On_Read.h"
+#include "tao/Pluggable.h"
+
+ACE_RCSID(tao, Wait_On_Read, "$Id$")
+
+// Constructor.
+TAO_Wait_On_Read::TAO_Wait_On_Read (TAO_Transport *transport)
+ : TAO_Wait_Strategy (transport)
+{
+}
+
+// Destructor.
+TAO_Wait_On_Read::~TAO_Wait_On_Read (void)
+{
+}
+
+// Wait on the read operation.
+int
+TAO_Wait_On_Read::wait (ACE_Time_Value * max_wait_time,
+ int &reply_received)
+{
+ reply_received = 0;
+ while (reply_received != 1)
+ {
+ reply_received =
+ this->transport_->handle_client_input (1, max_wait_time);
+ if (reply_received == -1)
+ return -1;
+ }
+
+ return 0;
+}
+
+// No-op.
+int
+TAO_Wait_On_Read::register_handler (void)
+{
+ return 0;
+}
diff --git a/TAO/tao/Wait_On_Read.h b/TAO/tao/Wait_On_Read.h
new file mode 100644
index 00000000000..53cc2bd0e5e
--- /dev/null
+++ b/TAO/tao/Wait_On_Read.h
@@ -0,0 +1,47 @@
+// This may look like C, but it's really -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO
+//
+// = AUTHOR
+// Alexander Babu Arulanthu <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#ifndef TAO_WAIT_ON_READ_H
+#define TAO_WAIT_ON_READ_H
+#include "ace/pre.h"
+
+#include "tao/Wait_Strategy.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_Export TAO_Wait_On_Read : public TAO_Wait_Strategy
+{
+ // = TITLE
+ //
+ // = DESCRIPTION
+ // Simply block on read() to wait for the reply.
+ //
+
+public:
+ TAO_Wait_On_Read (TAO_Transport *transport);
+ // Constructor.
+
+ virtual ~TAO_Wait_On_Read (void);
+ // Destructor.
+
+ // = Documented in TAO_Wait_Strategy.
+
+ virtual int wait (ACE_Time_Value *max_wait_time,
+ int &reply_received);
+ virtual int register_handler (void);
+};
+
+#include "ace/post.h"
+#endif /* TAO_WAIT_ON_READ_H */
diff --git a/TAO/tao/Wait_Strategy.cpp b/TAO/tao/Wait_Strategy.cpp
index 7076770f15e..d43738ae16f 100644
--- a/TAO/tao/Wait_Strategy.cpp
+++ b/TAO/tao/Wait_Strategy.cpp
@@ -1,10 +1,6 @@
// $Id$
#include "tao/Wait_Strategy.h"
-#include "tao/Pluggable.h"
-#include "tao/ORB_Core.h"
-#include "tao/Leader_Follower.h"
-#include "tao/debug.h"
ACE_RCSID(tao, Wait_Strategy, "$Id$")
@@ -32,942 +28,22 @@ TAO_Wait_Strategy::leader_follower_condition_variable (void)
return 0;
}
-// *********************************************************************
-
-// Constructor.
-TAO_Wait_On_Reactor::TAO_Wait_On_Reactor (TAO_Transport *transport)
- : TAO_Wait_Strategy (transport)
- // reply_received_ (0)
-{
-}
-
-// Destructor.
-TAO_Wait_On_Reactor::~TAO_Wait_On_Reactor (void)
-{
-}
-
-int
-TAO_Wait_On_Reactor::wait (ACE_Time_Value *max_wait_time,
- int &reply_received)
-{
- // Reactor does not change inside the loop.
- ACE_Reactor* reactor =
- this->transport_->orb_core ()->reactor ();
-
- // Do the event loop, till we fully receive a reply.
- int result = 0;
- while (1)
- {
- // Run the event loop.
- result = reactor->handle_events (max_wait_time);
-
- // If we got our reply, no need to run the event loop any
- // further.
- if (reply_received)
- break;
-
- // Did we timeout? If so, stop running the loop.
- if (result == 0 &&
- max_wait_time != 0 &&
- *max_wait_time == ACE_Time_Value::zero)
- break;
-
- // Other errors? If so, stop running the loop.
- if (result == -1)
- break;
-
- // Otherwise, keep going...
- }
-
- if (result == -1 || reply_received == -1)
- return -1;
-
- // Return an error if there was a problem receiving the reply.
- if (max_wait_time != 0)
- {
- if (reply_received != 1 &&
- *max_wait_time == ACE_Time_Value::zero)
- {
- result = -1;
- errno = ETIME;
- }
- }
- else
- {
- result = 0;
- if (reply_received == -1)
- result = -1;
- }
-
- return result;
-}
-
-int
-TAO_Wait_On_Reactor::handle_input (void)
-{
- int result = this->transport_->handle_client_input (0);
-
- if (result == 1)
- {
- // this->reply_received_ = 1;
- result = 0;
- }
-
- // if (result == -1)
- // reply_received = -1;
-
- return result;
-}
-
-// Register the handler with the Reactor.
-int
-TAO_Wait_On_Reactor::register_handler (void)
-{
- return this->transport_->register_handler ();
-}
-
-// *********************************************************************
-
-// Constructor.
-TAO_Wait_On_Leader_Follower::TAO_Wait_On_Leader_Follower (TAO_Transport *transport)
- : TAO_Wait_Strategy (transport)
-{
-}
-
-// Destructor.
-TAO_Wait_On_Leader_Follower::~TAO_Wait_On_Leader_Follower (void)
-{
-}
-
-// Register the handler.
-int
-TAO_Wait_On_Leader_Follower::register_handler (void)
-{
- return this->transport_->register_handler ();
-}
-
-// *********************************************************************
-
-// Constructor.
-TAO_Exclusive_Wait_On_Leader_Follower::TAO_Exclusive_Wait_On_Leader_Follower (TAO_Transport *transport)
- : TAO_Wait_On_Leader_Follower (transport),
- calling_thread_ (ACE_OS::NULL_thread),
- cond_response_available_ (0),
- expecting_response_ (0),
- reply_received_ (0)
-{
-}
-
-// Destructor.
-TAO_Exclusive_Wait_On_Leader_Follower::~TAO_Exclusive_Wait_On_Leader_Follower (void)
-{
- delete this->cond_response_available_;
- this->cond_response_available_ = 0;
-}
-
-
-// @@ Why do we need <orb_core> and the <two_way> flag? <orb_core> is
-// with the <Transport> object and <two_way> flag wont make sense
-// at this level since this is common for AMI also. (Alex).
-int
-TAO_Exclusive_Wait_On_Leader_Follower::sending_request (TAO_ORB_Core *orb_core,
- int two_way)
-{
- //
- // Note that in previous versions of this code, the assignment of
- // the following three variables was protected by the
- // leader/followers lock. In the case of oneways, these fields are
- // not used, so this seems excessive. In the case of twoways, this
- // stuff is done before the request is actually sent, therefore,
- // there isn't any chance of the leader resetting these fields
- // simultaneously. Therefore, the lock has been removed.
- //
-
- // The last request may have left this unitialized
- this->reply_received_ = 0;
-
- // Set the state so that we know we're looking for a response.
- this->expecting_response_ = two_way;
-
- // remember in which thread the client connection handler was running
- this->calling_thread_ = ACE_Thread::self ();
-
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TAO (%P|%t) - sending request for <%x>\n"),
- this->transport_));
-
- // Register the handler.
- this->transport_->register_handler ();
-
- // Send the request.
- int result =
- this->TAO_Wait_Strategy::sending_request (orb_core,
- two_way);
-
- if (result == -1)
- {
- ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon,
- orb_core->leader_follower ().lock (), -1);
-
- this->reply_received_ = 0;
- this->expecting_response_ = 0;
- this->calling_thread_ = ACE_OS::NULL_thread;
-
- //ACE_DEBUG ((LM_DEBUG, "TAO (%P|%t) - failed request for <%x>\n",
- //this->transport_));
- }
- return result;
-}
-
-int
-TAO_Exclusive_Wait_On_Leader_Follower::wait (ACE_Time_Value *max_wait_time,
- int &)
-{
- // Cache the ORB core, it won't change and is used multiple times
- // below:
- TAO_ORB_Core* orb_core =
- this->transport_->orb_core ();
-
- TAO_Leader_Follower& leader_follower =
- orb_core->leader_follower ();
-
- // Obtain the lock.
- ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon,
- leader_follower.lock (), -1);
-
- int result = 0;
-
- //
- // Begin artificial scope for auto_ptr like helpers calling:
- // leader_follower.set_client_thread () and (maybe later on)
- // leader_follower.set_client_leader_thread ().
- //
- {
- // Calls leader_follower.set_client_thread () on construction and
- // leader_follower.reset_client_thread () on destruction.
- TAO_LF_Client_Thread_Helper client_thread_helper (leader_follower);
- ACE_UNUSED_ARG (client_thread_helper);
-
- ACE_Countdown_Time countdown (max_wait_time);
-
- // Check if there is a leader. Note that it cannot be us since we
- // gave up our leadership when we became a client.
- if (leader_follower.leader_available ())
- {
- // = Wait as a follower.
-
- // wait until we have input available or there is no leader, in
- // which case we must become the leader anyway....
- // @@ Alex: I am uncertain about how many condition variables
- // should we have, should there be one-per-thread (after all
- // the thread blocks on the condition variable) or there
- // should be one per-connection. I think the first case is
- // the "Right Thing"[tm]
- ACE_SYNCH_CONDITION* cond =
- this->cond_response_available ();
-
-#if defined (TAO_DEBUG_LEADER_FOLLOWER)
- ACE_DEBUG ((LM_DEBUG,
- "TAO (%P|%t): TAO_Wait_On_LF::wait - "
- "(follower) on <%x>\n",
- cond));
-#endif /* TAO_DEBUG_LEADER_FOLLOWER */
-
- while (!this->reply_received_
- && leader_follower.leader_available ())
- {
- // Add to the follower set, that operation will if the
- // condition variable returns due to an spurious wake up
- // (i.e. a wait interrupted by the OS) but otherwise we
- // risk dead-locks:
- // Assume that we are the only follower, another thread
- // is the leader and it completes its work, it sends us
- // the signal and removes us from the set. Before
- // waking up another thread becomes the leader, when we
- // do wake up we believe that it was a false return from
- // the condition variable and go into the loop again.
- // But now the follower set is empty and nobody is ever
- // going to wake us up, dead-locking the application.
-
- if (leader_follower.add_follower (cond) == -1)
- {
- // -1 indicates a severe problem, like running out of
- // memory, the comment above does not apply in this
- // case.
- return -1;
- }
-
-#if defined (TAO_DEBUG_LEADER_FOLLOWER)
- ACE_DEBUG ((LM_DEBUG,
- "TAO (%P|%t): TAO_Wait_On_LF::wait - "
- "waiting in follower <%x>\n",
- cond));
-#endif /* TAO_DEBUG_LEADER_FOLLOWER */
-
- if (max_wait_time == 0)
- {
- if (cond == 0 || cond->wait () == -1)
- return -1;
- }
- else
- {
- countdown.update ();
- ACE_Time_Value tv = ACE_OS::gettimeofday ();
- tv += *max_wait_time;
- if (cond == 0 || cond->wait (&tv) == -1)
- return -1;
- }
- }
-
- countdown.update ();
-
-#if defined (TAO_DEBUG_LEADER_FOLLOWER)
- ACE_DEBUG ((LM_DEBUG,
- "TAO (%P|%t): TAO_Wait_On_LF::wait - "
- "done (follower:%d) on <%x>\n",
- this->reply_received_, cond));
-#endif /* TAO_DEBUG_LEADER_FOLLOWER */
-
- // Now somebody woke us up to become a leader or to handle our
- // input. We are already removed from the follower queue.
- if (this->reply_received_ == 1)
- {
- // But first reset our state in case we are invoked
- // again...
- this->reply_received_ = 0;
- this->expecting_response_ = 0;
- this->calling_thread_ = ACE_OS::NULL_thread;
-
- return 0;
- }
- else if (this->reply_received_ == -1)
- {
- // But first reset our state in case we are invoked
- // again...
- this->reply_received_ = 0;
- this->expecting_response_ = 0;
- this->calling_thread_ = ACE_OS::NULL_thread;
-
- return -1;
- }
- // FALLTHROUGH
- // We only get here if we woke up but the reply is not
- // complete yet, time to assume the leader role....
- // i.e. ACE_ASSERT (this->reply_received_ == 0);
- }
-
- // = Leader Code.
-
- // The only way to reach this point is if we must become the
- // leader, because there is no leader or we have to update to a
- // leader or we are doing nested upcalls in this case we do
- // increase the refcount on the leader in TAO_ORB_Core.
-
- // Calls leader_follower.set_client_leader_thread () on
- // construction and leader_follower.reset_client_leader_thread ()
- // on destruction. Note that this may increase the refcount of
- // the leader.
- TAO_LF_Client_Leader_Thread_Helper client_leader_thread_helper (leader_follower);
- ACE_UNUSED_ARG (client_leader_thread_helper);
-
- {
- ACE_GUARD_RETURN (ACE_Reverse_Lock<ACE_SYNCH_MUTEX>, rev_mon,
- leader_follower.reverse_lock (), -1);
-
- // @@ Do we need to do this?
- // Become owner of the reactor.
- orb_core->reactor ()->owner (ACE_Thread::self ());
-
- // Run the reactor event loop.
-
-#if defined (TAO_DEBUG_LEADER_FOLLOWER)
- ACE_DEBUG ((LM_DEBUG,
- "TAO (%P|%t): TAO_Wait_On_LF::wait - "
- "wait (leader) on <%x>\n",
- this->transport_));
-#endif /* TAO_DEBUG_LEADER_FOLLOWER */
-
- while (1)
- {
- // Run the event loop.
- result = orb_core->reactor ()->handle_events (max_wait_time);
-
- // If we got our reply, no need to run the event loop any
- // further.
- if (this->reply_received_)
- break;
-
- // Did we timeout? If so, stop running the loop.
- if (result == 0 &&
- max_wait_time != 0 &&
- *max_wait_time == ACE_Time_Value::zero)
- break;
-
- // Other errors? If so, stop running the loop.
- if (result == -1)
- break;
-
- // Otherwise, keep going...
- }
-
-#if defined (TAO_DEBUG_LEADER_FOLLOWER)
- ACE_DEBUG ((LM_DEBUG,
- "TAO (%P|%t): TAO_Wait_On_LF::wait - "
- "done (leader) on <%x>\n",
- this->transport_));
-#endif /* TAO_DEBUG_LEADER_FOLLOWER */
- }
- }
- //
- // End artificial scope for auto_ptr like helpers calling:
- // leader_follower.reset_client_thread () and (maybe)
- // leader_follower.reset_client_leader_thread ().
- //
-
- // Wake up the next leader, we cannot do that in handle_input,
- // because the woken up thread would try to get into handle_events,
- // which is at the time in handle_input still occupied. But do it
- // before checking the error in <result>, even if there is an error
- // in our input we should continue running the loop in another
- // thread.
-
- if (leader_follower.elect_new_leader () == -1)
- ACE_ERROR_RETURN ((LM_ERROR,
- ACE_TEXT ("TAO (%P|%t): TAO_Wait_On_LF::wait - ")
- ACE_TEXT ("Failed to unset the leader and wake up a ")
- ACE_TEXT ("new follower.\n")),
- -1);
-
- if (result == -1)
- ACE_ERROR_RETURN ((LM_ERROR,
- ACE_TEXT ("TAO (%P|%t): TAO_Wait_On_LF::wait: %p.\n"),
- ACE_TEXT ("handle_events failed")),
- -1);
-
- // Return an error if there was a problem receiving the reply...
- if (max_wait_time != 0)
- {
- if (this->reply_received_ != 1
- && *max_wait_time == ACE_Time_Value::zero)
- {
- result = -1;
- errno = ETIME;
- }
- }
- else
- {
- result = 0;
- if (this->reply_received_ == -1)
- {
- result = -1;
- }
- }
-
- // Make us reusable
- this->reply_received_ = 0;
- this->expecting_response_ = 0;
- this->calling_thread_ = ACE_OS::NULL_thread;
-
- return result;
-}
-
-// Handle the input. Return -1 on error, 0 on success.
-int
-TAO_Exclusive_Wait_On_Leader_Follower::handle_input (void)
-{
- TAO_ORB_Core* orb_core =
- this->transport_->orb_core ();
-
- // Obtain the lock.
- ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon,
- orb_core->leader_follower ().lock (),
- -1);
-
- // ACE_DEBUG ((LM_DEBUG, "TAO (%P|%t) Wait_On_LF::handle_input - "
- // "reading reply <%x>\n",
- // this->transport_));
-
- // A message is received but not data was sent, flag this as an
- // error, but we should do more....
- // @@ Alex: this could be a CloseConnection message or something
- // similar, has to be handled...
-
- //
- // The following check is conflicting with the ability to buffer
- // asynchronous calls. If we mark the asynchronous call as a twoway
- // call, then buffering cannot take place. If we mark it as a
- // oneway call, then the following check fails. For now I have
- // selected to disable the check. The long term fix is to separate
- // out the two concerns (a) can the call be buffered and (b) are we
- // expecting a response.
- //
-
- /*
- if (!this->expecting_response_)
- {
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) - Wait_On_LF::handle_input, ")
- ACE_TEXT ("unexpected on <%x>\n"),
- this->transport_));
- return -1;
- }
- */
-
- // Receive any data that is available, without blocking...
- int result = this->transport_->handle_client_input (0);
-
- // Data was read, but there the reply has not been completely
- // received...
- if (result == 0)
- return 0;
-
- if (result == -1)
- {
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) - Wait_On_LF::handle_input, ")
- ACE_TEXT ("handle_client_input == -1\n")));
- this->reply_received_ = -1;
- }
-
- if (result == 1)
- {
- // Change the result value to something that the Reactor can
- // understand
- result = 0;
- this->reply_received_ = 1;
- }
-
- // Wake up any threads waiting for this message, either because the
- // message failed or because we really received it.
- this->wake_up ();
-
- return result;
-}
-
-ACE_SYNCH_CONDITION *
-TAO_Exclusive_Wait_On_Leader_Follower::cond_response_available (void)
-{
- // @@ TODO This condition variable should per-ORB-per-thread, not
- // per-connection, it is a waste to have more than one of this in
- // the same thread.
- if (this->cond_response_available_ == 0)
- {
- ACE_SYNCH_MUTEX &lock =
- this->transport_->orb_core ()->leader_follower().lock ();
- ACE_NEW_RETURN (this->cond_response_available_,
- ACE_SYNCH_CONDITION (lock),
- 0);
- }
- return this->cond_response_available_;
-}
-
-void
-TAO_Exclusive_Wait_On_Leader_Follower::wake_up (void)
-{
- if (ACE_OS::thr_equal (this->calling_thread_, ACE_Thread::self ()))
- {
-#if defined (TAO_DEBUG_LEADER_FOLLOWER)
- ACE_DEBUG ((LM_DEBUG,
- "TAO (%P|%t) Wait_On_LF::wake_up - "
- "same thread\n"));
-#endif /* TAO_DEBUG_LEADER_FOLLOWER */
- // We are the leader thread, simply return 0, handle_events()
- // will return because there was at least one event (this one!)
- return;
- }
-
- // We are not the leader thread, but we have our data, wake up
- // ourselves and then return 0 so the leader thread can continue
- // doing its job....
-
- // At this point we might fail to remove the follower, because
- // it has been already chosen to become the leader, so it is
- // awake and will get this too.
- ACE_SYNCH_CONDITION* cond =
- this->cond_response_available ();
-
-#if defined (TAO_DEBUG_LEADER_FOLLOWER)
- ACE_DEBUG ((LM_DEBUG,
- "TAO (%P|%t) Wait_On_LF::wake_up - "
- "waking up <%x>\n",
- cond));
-#endif /* TAO_DEBUG_LEADER_FOLLOWER */
-
- TAO_Leader_Follower& leader_follower =
- this->transport_->orb_core ()->leader_follower ();
-
- // We *must* remove it when we signal it so the same condition is
- // not signalled for both wake up as a follower and as the next
- // leader.
- // The follower may not be there if the reply is received while the
- // consumer is not yet waiting for it (i.e. it send the request but
- // has not blocked to receive the reply yet)
- (void) leader_follower.remove_follower (cond); // Ignore errors
-
- if (cond != 0)
- (void) cond->signal ();
-}
-
-// *********************************************************************
-
-// Constructor.
-TAO_Muxed_Wait_On_Leader_Follower::TAO_Muxed_Wait_On_Leader_Follower (TAO_Transport *transport)
- : TAO_Wait_On_Leader_Follower (transport)
-{
-}
-
-// Destructor.
-TAO_Muxed_Wait_On_Leader_Follower::~TAO_Muxed_Wait_On_Leader_Follower (void)
-{
-}
-
-int
-TAO_Muxed_Wait_On_Leader_Follower::sending_request (TAO_ORB_Core *orb_core,
- int two_way)
-{
- // Register the handler.
- // @@ We could probably move this somewhere else, and remove this
- // function totally. (Alex).
- this->transport_->register_handler ();
-
- // Send the request.
- return this->TAO_Wait_Strategy::sending_request (orb_core,
- two_way);
-}
-
-int
-TAO_Muxed_Wait_On_Leader_Follower::wait (ACE_Time_Value *max_wait_time,
- int &reply_received)
-{
- // Cache the ORB core, it won't change and is used multiple times
- // below:
- TAO_ORB_Core* orb_core =
- this->transport_->orb_core ();
-
- TAO_Leader_Follower& leader_follower =
- orb_core->leader_follower ();
-
- // Obtain the lock.
- ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon,
- leader_follower.lock (), -1);
-
- // Optmize the first iteration [no access to errno]
- int result = 1;
-
- //
- // Begin artificial scope for auto_ptr like helpers calling:
- // leader_follower.set_client_thread () and (maybe later on)
- // leader_follower.set_client_leader_thread ().
- //
- {
- // Calls leader_follower.set_client_thread () on construction and
- // leader_follower.reset_client_thread () on destruction.
- TAO_LF_Client_Thread_Helper client_thread_helper (leader_follower);
- ACE_UNUSED_ARG (client_thread_helper);
-
- ACE_Countdown_Time countdown (max_wait_time);
-
- // Check if there is a leader. Note that it cannot be us since we
- // gave up our leadership when we became a client.
- if (leader_follower.leader_available ())
- {
- // = Wait as a follower.
-
- // Grab the condtion variable.
- ACE_SYNCH_CONDITION* cond =
- orb_core->leader_follower_condition_variable ();
-
- if (TAO_debug_level >= 5)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) - wait (follower) on Transport <%x>, cond <%x>\n"),
- this->transport_,
- cond));
-
- // Add ourselves to the list, do it only once because we can
- // wake up multiple times from the CV loop. And only do it if
- // the reply has not been received (it could have arrived
- // while we were preparing to receive it).
-
- if (!reply_received
- && leader_follower.leader_available ())
- {
- if (leader_follower.add_follower (cond) == -1)
- ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("TAO (%P|%t) TAO_Muxed_Wait_On_Leader_Follower::wait - ")
- ACE_TEXT ("add_follower failed for <%x>\n"),
- cond));
- }
-
-
- while (!reply_received &&
- leader_follower.leader_available ())
- {
- if (max_wait_time == 0)
- {
- if (cond == 0 || cond->wait () == -1)
- {
- if (TAO_debug_level >= 5)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) - wait (follower) on <%x> ")
- ACE_TEXT ("cond == 0 || cond->wait () == -1 : cond = %d\n"),
- this->transport_, (cond == 0) ? 0 : cond));
- return -1;
- }
- }
- else
- {
- countdown.update ();
- ACE_Time_Value tv = ACE_OS::gettimeofday ();
- tv += *max_wait_time;
- if (cond == 0 || cond->wait (&tv) == -1)
- {
- if (TAO_debug_level >= 5)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) - wait (follower) on <%x> ")
- ACE_TEXT ("cond == 0 || cond->wait (tv) == -1\n"),
- this->transport_));
- return -1;
- }
- }
- }
-
- countdown.update ();
-
-#if 0
- // Cannot remove the follower here, we *must* remove it when
- // we signal it so the same condition is not signalled for
- // both wake up as a follower and as the next leader.
- if (leader_follower.remove_follower (cond) == -1)
- ACE_ERROR ((LM_ERROR,
- "TAO (%P|%t) TAO_Muxed_Wait_On_Leader_Follower::wait - "
- "remove_follower failed for <%x>\n", cond));
-#endif /* 0 */
-
- if (TAO_debug_level >= 5)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) - done (follower) on <%x>, reply_received %d\n"),
- this->transport_, reply_received));
-
- // Now somebody woke us up to become a leader or to handle our
- // input. We are already removed from the follower queue.
-
- if (reply_received == 1)
- return 0;
-
- // FALLTHROUGH
- // We only get here if we woke up but the reply is not
- // complete yet, time to assume the leader role....
- // i.e. ACE_ASSERT (this->reply_received_ == 0);
- }
-
- // = Leader Code.
-
- // The only way to reach this point is if we must become the
- // leader, because there is no leader or we have to update to a
- // leader or we are doing nested upcalls in this case we do
- // increase the refcount on the leader in TAO_ORB_Core.
-
- // Calls leader_follower.set_client_leader_thread () on
- // construction and leader_follower.reset_client_leader_thread ()
- // on destruction. Note that this may increase the refcount of
- // the leader.
- TAO_LF_Client_Leader_Thread_Helper client_leader_thread_helper (leader_follower);
- ACE_UNUSED_ARG (client_leader_thread_helper);
-
- {
- ACE_GUARD_RETURN (ACE_Reverse_Lock<ACE_SYNCH_MUTEX>, rev_mon,
- leader_follower.reverse_lock (), -1);
-
- // @@ Do we need to do this?
- // Become owner of the reactor.
- orb_core->reactor ()->owner (ACE_Thread::self ());
-
- // Run the reactor event loop.
-
- if (TAO_debug_level >= 5)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) - wait (leader):to enter reactor event loop on <%x>\n"),
- this->transport_));
-
- while (1)
- {
- // Run the event loop.
- result = orb_core->reactor ()->handle_events (max_wait_time);
-
- // If we got our reply, no need to run the event loop any
- // further.
- if (reply_received)
- break;
-
- // Did we timeout? If so, stop running the loop.
- if (result == 0 &&
- max_wait_time != 0 &&
- *max_wait_time == ACE_Time_Value::zero)
- break;
-
- // Other errors? If so, stop running the loop.
- if (result == -1)
- break;
-
- // Otherwise, keep going...
- }
-
- if (TAO_debug_level >= 5)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) - wait : (leader) : done with reactor event loop on <%x>\n"),
- this->transport_));
- }
- }
- //
- // End artificial scope for auto_ptr like helpers calling:
- // leader_follower.reset_client_thread () and (maybe)
- // leader_follower.reset_client_leader_thread ().
- //
-
- // Wake up the next leader, we cannot do that in handle_input,
- // because the woken up thread would try to get into handle_events,
- // which is at the time in handle_input still occupied. But do it
- // before checking the error in <result>, even if there is an error
- // in our input we should continue running the loop in another
- // thread.
-
- if (leader_follower.elect_new_leader () == -1)
- ACE_ERROR_RETURN ((LM_ERROR,
- ACE_TEXT ("TAO:%N:%l:(%P|%t):TAO_Muxed_Wait_On_Leader_Follower::send_request: ")
- ACE_TEXT ("Failed to unset the leader and wake up a new follower.\n")),
- -1);
-
- if (result == -1)
- ACE_ERROR_RETURN ((LM_ERROR,
- ACE_TEXT ("TAO:%N:%l:(%P|%t):TAO_Muxed_Wait_On_Leader_Follower::wait: ")
- ACE_TEXT ("handle_events failed.\n")),
- -1);
-
- // Return an error if there was a problem receiving the reply...
- if (max_wait_time != 0)
- {
- if (reply_received != 1
- && *max_wait_time == ACE_Time_Value::zero)
- {
- result = -1;
- errno = ETIME;
- }
- }
- else
- {
- result = 0;
- if (reply_received == -1)
- {
- result = -1;
- }
- }
-
- return result;
-}
-
-// Handle the input. Return -1 on error, 0 on success.
-int
-TAO_Muxed_Wait_On_Leader_Follower::handle_input (void)
-{
- // Cache the ORB core, it won't change and is used multiple times
- // below:
- TAO_ORB_Core* orb_core =
- this->transport_->orb_core ();
-
- // Obtain the lock.
- ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon,
- orb_core->leader_follower ().lock (),
- -1);
-
- if (TAO_debug_level >= 5)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) - reading reply on <%x>\n"),
- this->transport_));
-
- // Receive any data that is available, without blocking...
- int result = this->transport_->handle_client_input (0);
-
- // Data was read, but there the reply has not been completely
- // received...
- if (result == 0)
- return 0;
-
- if (result == -1)
- {
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) - Wait_On_LF::handle_input, ")
- ACE_TEXT ("handle_client_input == -1\n")));
- // this->reply_received_ = -1;
- }
-
- if (result == 1)
- {
- // Change the result value to something that the Reactor can
- // understand
- result = 0;
-
- // reply_received_ = 1;
- // This would have been done by the dispatch already.
- }
-
- // Wake up any threads waiting for this message, either because the
- // message failed or because we really received it.
- // this->wake_up ();
- // <wake_up> will be done in the <dispatch_reply>
-
- return result;
-}
-
-ACE_SYNCH_CONDITION *
-TAO_Muxed_Wait_On_Leader_Follower::leader_follower_condition_variable (void)
-{
- return this->transport_->orb_core ()->leader_follower_condition_variable ();
-}
-
-// *********************************************************************
-
-// Constructor.
-TAO_Wait_On_Read::TAO_Wait_On_Read (TAO_Transport *transport)
- : TAO_Wait_Strategy (transport)
-{
-}
-
-// Destructor.
-TAO_Wait_On_Read::~TAO_Wait_On_Read (void)
-{
-}
-
-// Wait on the read operation.
int
-TAO_Wait_On_Read::wait (ACE_Time_Value * max_wait_time,
- int &)
+TAO_Wait_Strategy::reply_dispatched (int &reply_received,
+ ACE_SYNCH_CONDITION *)
{
- int reply_complete = 0;
- while (reply_complete != 1)
- {
- reply_complete =
- this->transport_->handle_client_input (1, max_wait_time);
- if (reply_complete == -1)
- return -1;
- }
-
+ // In most implementations of this strategy there is no need to
+ // acquire any mutex to set the reply_received flag.
+ reply_received = 1;
return 0;
}
-// Handle the input. Delegate this job to Transport object.
-int
-TAO_Wait_On_Read::handle_input (void)
+void
+TAO_Wait_Strategy::connection_closed (int &reply_received,
+ ACE_SYNCH_CONDITION*)
{
- // Block to get the whole message.
- return this->transport_->handle_client_input (1);
+ // In most implementations of this strategy there is no need to
+ // acquire any mutex to set the reply_received flag.
+ reply_received = -1;
}
-// No-op.
-int
-TAO_Wait_On_Read::register_handler (void)
-{
- return 0;
-}
diff --git a/TAO/tao/Wait_Strategy.h b/TAO/tao/Wait_Strategy.h
index 09496aed1e3..ecbe7fe2105 100644
--- a/TAO/tao/Wait_Strategy.h
+++ b/TAO/tao/Wait_Strategy.h
@@ -6,12 +6,6 @@
// = LIBRARY
// TAO
//
-// = FILENAME
-// Wait_Strategy.h
-//
-// = DESCRIPTION
-// Classes to strategize waiting for reply.
-//
// = AUTHOR
// Alexander Babu Arulanthu <alex@cs.wustl.edu>
//
@@ -29,7 +23,6 @@
class TAO_ORB_Core;
class TAO_Transport;
-class TAO_Transport_Mux_Strategy;
class TAO_Export TAO_Wait_Strategy
{
@@ -58,9 +51,6 @@ public:
// Base class virtual method. Wait till the <reply_received> flag is
// true or the time expires.
- virtual int handle_input (void) = 0;
- // Handle the input.
-
virtual int register_handler (void) = 0;
// Register the handler with the Reactor if it makes sense for the
// strategy.
@@ -69,206 +59,31 @@ public:
// Return the TSS leader follower condition variable used in the
// Wait Strategy. Muxed Leader Follower implementation returns a
// valid condition variable, others return 0.
+ // The condition variable is acquired by the Reply_Dispatcher (when
+ // needed) in the thread that binds it to the right Transport.
+ // Later (when the reply is finally received) the Reply_Dispatcher
+ // passes this condition variable back to Waiting_Strategy, that can
+ // then signal the waiting thread if needed.
+
+ virtual int reply_dispatched (int &reply_received_flag,
+ ACE_SYNCH_CONDITION *);
+ // This is the callback used by the Reply_Dispatcher to inform the
+ // Waiting_Strategy that a reply has been completely received, that
+ // it was already stored in the right place, and that the condition
+ // variable should be signalled if needed.
+ // The Waiting_Strategy must set the reply received flag, using
+ // whatever locks it needs.
+
+ virtual void connection_closed (int &reply_received_flag,
+ ACE_SYNCH_CONDITION*);
+ // The connection has been closed by the lower level components in
+ // the ORB.
+ // The wait has finished and must result in an error.
protected:
TAO_Transport *transport_;
// Transport object.
};
-// @@ Alex: we should consider moving these classes to separate files,
-// that can minimize the footprint of systems that use only one of
-// the strategies....(coryan).
-
-// *********************************************************************
-
-class TAO_Export TAO_Wait_On_Reactor : public TAO_Wait_Strategy
-{
- // = TITLE
- //
- // Wait on the Reactor. Happens in s Single Threaded client
- // environment.
- //
- // = DESCRIPTION
- //
-
-public:
- TAO_Wait_On_Reactor (TAO_Transport *transport);
- // Constructor.
-
- virtual ~TAO_Wait_On_Reactor (void);
- // Destructor.
-
- // = Documented in TAO_Wait_Strategy.
-
- virtual int wait (ACE_Time_Value *max_wait_time,
- int &reply_received);
- virtual int handle_input (void);
- virtual int register_handler (void);
-
-private:
- // int reply_received_;
- // This flag indicates if a *complete* reply has been received. Used
- // to exit the event loop.
-};
-
-// *********************************************************************
-
-class TAO_Export TAO_Wait_On_Leader_Follower : public TAO_Wait_Strategy
-{
- // = TITLE
- //
- // Wait according to the Leader-Follower model. Leader does the
- // event loop of the Reactor and the Followers wait on the
- // condition variable.
- //
- // = DESCRIPTION
- //
-
-public:
- TAO_Wait_On_Leader_Follower (TAO_Transport *transport);
- // Constructor.
-
- virtual ~TAO_Wait_On_Leader_Follower (void);
- // Destructor.
-
- // = Documented in TAO_Wait_Strategy.
-
- // virtual int sending_request (TAO_ORB_Core *orb_core,
- // int two_way);
-
- // virtual int wait (ACE_Time_Value *max_wait_time,
- // int &reply_received);
-
- // virtual int handle_input (void);
-
- virtual int register_handler (void);
-};
-
-// *********************************************************************
-
-class TAO_Export TAO_Exclusive_Wait_On_Leader_Follower : public TAO_Wait_On_Leader_Follower
-{
- // = TITLE
- //
- // Wait according to the Leader-Follower model. Leader does the
- // event loop of the Reactor and the Followers wait on the
- // condition variable.
- //
- // = DESCRIPTION
- //
- // This is strategy is to work with the Exclusive Transport Mux
- // Strategy. This was the original implementation of Leader
- // Follower before Muxed Transport was introduced. Here the
- // state variables such as Condition Variable etc are kept in
- // the <Wait Strategy> which is a per Transport object.
-
-public:
- TAO_Exclusive_Wait_On_Leader_Follower (TAO_Transport *transport);
- // Constructor.
-
- virtual ~TAO_Exclusive_Wait_On_Leader_Follower (void);
- // Destructor.
-
- // = Documented in TAO_Wait_Strategy.
-
- virtual int sending_request (TAO_ORB_Core *orb_core,
- int two_way);
- virtual int wait (ACE_Time_Value *max_wait_time,
- int &reply_received);
- virtual int handle_input (void);
- // virtual int register_handler (void);
-
-protected:
- ACE_SYNCH_CONDITION* cond_response_available (void);
- // Return the cond_response_available, initializing it if
- // necessary.
-
- void wake_up (void);
- // Helper method to wake us up when we are a follower...
-
-protected:
- ACE_thread_t calling_thread_;
- // the thread ID of the thread we were running in.
-
- ACE_SYNCH_CONDITION* cond_response_available_;
- // wait on reponse if the leader-follower model is active.
-
- int expecting_response_;
- // State flag which, if non-zero, indicates that we were expecting
- // respose. Otherwise, any input received is unexpected.
-
- int reply_received_;
- // This flag indicates if a *complete* reply was received. Until
- // that happens we block on the leader/follower condition variable
- // or the reactor event loop.
-};
-
-// *********************************************************************
-
-class TAO_Export TAO_Muxed_Wait_On_Leader_Follower : public TAO_Wait_On_Leader_Follower
-{
- // = TITLE
- //
- // Wait according to the Leader-Follower model. Leader does the
- // event loop of the Reactor and the Followers wait on the
- // condition variable.
- //
- // = DESCRIPTION
- //
- // This impelementation is to work with the Muxed Transport
- // Mechanism. Here the state variables such as <Condition
- // Variable> etc cannot be kept in the Wait Strategy, since the
- // Wait Strategy is per Transport object and here the Transport
- // is Muxed and hence there are multiple threads running in the
- // same Transport context.
-
-public:
- TAO_Muxed_Wait_On_Leader_Follower (TAO_Transport *transport);
- // Constructor.
-
- virtual ~TAO_Muxed_Wait_On_Leader_Follower (void);
- // Destructor.
-
- // = Documented in TAO_Wait_Strategy.
-
- virtual int sending_request (TAO_ORB_Core *orb_core,
- int two_way);
-
- virtual int wait (ACE_Time_Value *max_wait_time,
- int &reply_received);
-
- virtual int handle_input (void);
-
- // virtual int register_handler (void);
-
- virtual ACE_SYNCH_CONDITION *leader_follower_condition_variable (void);
- // TSS Leader follower condition variable.
-};
-
-// *********************************************************************
-
-class TAO_Export TAO_Wait_On_Read : public TAO_Wait_Strategy
-{
- // = TITLE
- //
- // = DESCRIPTION
- // Simply block on read() to wait for the reply.
- //
-
-public:
- TAO_Wait_On_Read (TAO_Transport *transport);
- // Constructor.
-
- virtual ~TAO_Wait_On_Read (void);
- // Destructor.
-
- // = Documented in TAO_Wait_Strategy.
-
- virtual int wait (ACE_Time_Value *max_wait_time,
- int &reply_received);
- virtual int handle_input (void);
- virtual int register_handler (void);
-};
-
#include "ace/post.h"
#endif /* TAO_WAIT_STRATEGY_H */
diff --git a/TAO/tao/default_client.cpp b/TAO/tao/default_client.cpp
index e4c912af861..e74d39d8fa8 100644
--- a/TAO/tao/default_client.cpp
+++ b/TAO/tao/default_client.cpp
@@ -2,8 +2,11 @@
#include "tao/default_client.h"
#include "tao/ORB_Core.h"
-#include "tao/Wait_Strategy.h"
-#include "tao/Transport_Mux_Strategy.h"
+#include "tao/Wait_On_Read.h"
+#include "tao/Wait_On_Reactor.h"
+#include "tao/Wait_On_Leader_Follower.h"
+#include "tao/Exclusive_TMS.h"
+#include "tao/Muxed_TMS.h"
#if !defined (__ACE_INLINE__)
# include "tao/default_client.i"
@@ -27,14 +30,6 @@ TAO_Default_Client_Strategy_Factory::TAO_Default_Client_Strategy_Factory (void)
#else
this->transport_mux_strategy_ = TAO_EXCLUSIVE_TMS;
#endif /* TAO_USE_MUXED_TRANSPORT_MUX_STRATEGY */
-
-// #if defined (TAO_USE_WAIT_ON_READ)
-// this->wait_strategy_ = TAO_WAIT_ON_LEADER_FOLLOWER;
-// #elif defined (TAO_USE_WAIT_ON_REACTOR)
-// this->wait_strategy_ = TAO_WAIT_ON_REACTOR;
-// #else
-// this->wait_strategy_ = TAO_WAIT_ON_READ;
-// #endif /* TAO_USE_WAIT_ON_LEADER_FOLLOWER */
}
TAO_Default_Client_Strategy_Factory::~TAO_Default_Client_Strategy_Factory (void)
@@ -208,14 +203,9 @@ TAO_Default_Client_Strategy_Factory::create_wait_strategy (TAO_Transport *transp
{
// = Leader follower model.
- if (this->transport_mux_strategy_ == TAO_EXCLUSIVE_TMS)
- ACE_NEW_RETURN (ws,
- TAO_Exclusive_Wait_On_Leader_Follower (transport),
- 0);
- else
- ACE_NEW_RETURN (ws,
- TAO_Muxed_Wait_On_Leader_Follower (transport),
- 0);
+ ACE_NEW_RETURN (ws,
+ TAO_Wait_On_Leader_Follower (transport),
+ 0);
}
return ws;
diff --git a/TAO/tests/Connection_Purging/Connection_Purging.cpp b/TAO/tests/Connection_Purging/Connection_Purging.cpp
index 3a41df192ae..528bb883965 100644
--- a/TAO/tests/Connection_Purging/Connection_Purging.cpp
+++ b/TAO/tests/Connection_Purging/Connection_Purging.cpp
@@ -9,8 +9,8 @@
// Connection_Purging.cpp
//
// = DESCRIPTION
-// This program tests automatic purging in TAO. Collocation is off
-// which helps us test the usage and purging of handles from the
+// This program tests automatic purging in TAO. Collocation is off
+// which helps us test the usage and purging of handles from the
// connection cache.
//
// = AUTHOR
@@ -279,8 +279,8 @@ int
invoke_remote_calls (CORBA::ORB_ptr client_orb)
{
ACE_DECLARE_NEW_CORBA_ENV;
-
- ACE_TRY
+
+ ACE_TRY
{
for (size_t j = 0;
j < remote_calls;
@@ -300,12 +300,12 @@ invoke_remote_calls (CORBA::ORB_ptr client_orb)
client_orb->string_to_object (info[i].ior.in (),
ACE_TRY_ENV);
ACE_TRY_CHECK;
-
+
test_var test_object =
test::_narrow (object.in (),
ACE_TRY_ENV);
ACE_TRY_CHECK;
-
+
size_t invoke_exception = 0;
for (int try_invoke = 0; try_invoke < 3; ++try_invoke)
{
@@ -360,7 +360,7 @@ orbs_shutdown (void)
info[i].orb->shutdown (1,
ACE_TRY_ENV);
ACE_TRY_CHECK;
-
+
info[i].root_poa->destroy (1,
1,
ACE_TRY_ENV);
@@ -373,7 +373,7 @@ orbs_shutdown (void)
ACE_ASSERT (0);
}
ACE_ENDTRY;
-
+
delete[] info;
}
@@ -439,6 +439,10 @@ main (int argc,
}
//orbs_shutdown ();
+ go_to_next_orb = 1;
+
+ server_task.wait ();
+
return 0;
}
diff --git a/TAO/tests/Endpoint_Per_Priority/client.cpp b/TAO/tests/Endpoint_Per_Priority/client.cpp
index 65028cf7606..282b71f6223 100644
--- a/TAO/tests/Endpoint_Per_Priority/client.cpp
+++ b/TAO/tests/Endpoint_Per_Priority/client.cpp
@@ -333,7 +333,7 @@ Client::svc (void)
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Latency: exception raised");
+ "Exception raised:");
}
ACE_ENDTRY;
return 0;
diff --git a/TAO/tests/Endpoint_Per_Priority/server.cpp b/TAO/tests/Endpoint_Per_Priority/server.cpp
index ed922ac08fa..3cf0b713314 100644
--- a/TAO/tests/Endpoint_Per_Priority/server.cpp
+++ b/TAO/tests/Endpoint_Per_Priority/server.cpp
@@ -63,6 +63,15 @@ main (int argc, char *argv[])
"test runs in time-shared class\n"));
policy = ACE_SCHED_OTHER;
flags = THR_NEW_LWP|THR_JOINABLE|THR_SCHED_DEFAULT;
+
+ if (ACE_Sched_Params::priority_min (policy)
+ == ACE_Sched_Params::priority_max (policy))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "%s: not enough priority levels, "
+ "aborting\n", argv[0]));
+ return 0;
+ }
}
else
ACE_ERROR ((LM_ERROR,
@@ -133,7 +142,7 @@ main (int argc, char *argv[])
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "Catched exception:");
+ "Exception caught:");
return 1;
}
ACE_ENDTRY;
diff --git a/TAO/tests/InterOp-Naming/Makefile b/TAO/tests/InterOp-Naming/Makefile
index d96a9a662a9..49bc47795a9 100644
--- a/TAO/tests/InterOp-Naming/Makefile
+++ b/TAO/tests/InterOp-Naming/Makefile
@@ -102,10 +102,6 @@ realclean: clean
$(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/OS.i \
- $(ACE_ROOT)/ace/Log_Msg.h \
- $(ACE_ROOT)/ace/Log_Record.h \
- $(ACE_ROOT)/ace/Log_Priority.h \
- $(ACE_ROOT)/ace/Log_Record.i \
$(TAO_ROOT)/tao/corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
$(ACE_ROOT)/ace/Message_Block.h \
@@ -113,6 +109,10 @@ realclean: clean
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Malloc.h \
$(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
$(ACE_ROOT)/ace/Based_Pointer_T.h \
$(ACE_ROOT)/ace/Based_Pointer_T.i \
$(ACE_ROOT)/ace/Based_Pointer_T.cpp \
@@ -252,8 +252,6 @@ realclean: clean
$(TAO_ROOT)/tao/TimeBaseC.i \
$(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/PollableC.i \
- $(TAO_ROOT)/tao/Smart_Proxies.h \
- $(TAO_ROOT)/tao/Smart_Proxies.i \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/Request.i \
$(TAO_ROOT)/tao/Server_Request.h \
@@ -408,10 +406,6 @@ realclean: clean
$(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/OS.i \
- $(ACE_ROOT)/ace/Log_Msg.h \
- $(ACE_ROOT)/ace/Log_Record.h \
- $(ACE_ROOT)/ace/Log_Priority.h \
- $(ACE_ROOT)/ace/Log_Record.i \
$(TAO_ROOT)/tao/corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
$(ACE_ROOT)/ace/Message_Block.h \
@@ -419,6 +413,10 @@ realclean: clean
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Malloc.h \
$(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
$(ACE_ROOT)/ace/Based_Pointer_T.h \
$(ACE_ROOT)/ace/Based_Pointer_T.i \
$(ACE_ROOT)/ace/Based_Pointer_T.cpp \
@@ -558,8 +556,6 @@ realclean: clean
$(TAO_ROOT)/tao/TimeBaseC.i \
$(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/PollableC.i \
- $(TAO_ROOT)/tao/Smart_Proxies.h \
- $(TAO_ROOT)/tao/Smart_Proxies.i \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/Request.i \
$(TAO_ROOT)/tao/Server_Request.h \
@@ -718,13 +714,13 @@ realclean: clean
$(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/ACE.i \
- $(ACE_ROOT)/ace/Malloc.h \
- $(ACE_ROOT)/ace/Malloc_Base.h \
$(ACE_ROOT)/ace/Based_Pointer_T.h \
$(ACE_ROOT)/ace/Based_Pointer_T.i \
$(ACE_ROOT)/ace/Based_Pointer_T.cpp \
@@ -870,8 +866,6 @@ realclean: clean
$(TAO_ROOT)/tao/TimeBaseC.i \
$(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/PollableC.i \
- $(TAO_ROOT)/tao/Smart_Proxies.h \
- $(TAO_ROOT)/tao/Smart_Proxies.i \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/Request.i \
$(TAO_ROOT)/tao/Server_Request.h \
@@ -1030,13 +1024,13 @@ realclean: clean
$(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/ACE.i \
- $(ACE_ROOT)/ace/Malloc.h \
- $(ACE_ROOT)/ace/Malloc_Base.h \
$(ACE_ROOT)/ace/Based_Pointer_T.h \
$(ACE_ROOT)/ace/Based_Pointer_T.i \
$(ACE_ROOT)/ace/Based_Pointer_T.cpp \
@@ -1182,8 +1176,6 @@ realclean: clean
$(TAO_ROOT)/tao/TimeBaseC.i \
$(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/PollableC.i \
- $(TAO_ROOT)/tao/Smart_Proxies.h \
- $(TAO_ROOT)/tao/Smart_Proxies.i \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/Request.i \
$(TAO_ROOT)/tao/Server_Request.h \
@@ -1338,10 +1330,6 @@ realclean: clean
$(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/OS.i \
- $(ACE_ROOT)/ace/Log_Msg.h \
- $(ACE_ROOT)/ace/Log_Record.h \
- $(ACE_ROOT)/ace/Log_Priority.h \
- $(ACE_ROOT)/ace/Log_Record.i \
$(TAO_ROOT)/tao/corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
$(ACE_ROOT)/ace/Message_Block.h \
@@ -1349,6 +1337,10 @@ realclean: clean
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Malloc.h \
$(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
$(ACE_ROOT)/ace/Based_Pointer_T.h \
$(ACE_ROOT)/ace/Based_Pointer_T.i \
$(ACE_ROOT)/ace/Based_Pointer_T.cpp \
@@ -1488,8 +1480,6 @@ realclean: clean
$(TAO_ROOT)/tao/TimeBaseC.i \
$(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/PollableC.i \
- $(TAO_ROOT)/tao/Smart_Proxies.h \
- $(TAO_ROOT)/tao/Smart_Proxies.i \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/Request.i \
$(TAO_ROOT)/tao/Server_Request.h \
@@ -1644,10 +1634,6 @@ realclean: clean
$(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/OS.i \
- $(ACE_ROOT)/ace/Log_Msg.h \
- $(ACE_ROOT)/ace/Log_Record.h \
- $(ACE_ROOT)/ace/Log_Priority.h \
- $(ACE_ROOT)/ace/Log_Record.i \
$(TAO_ROOT)/tao/corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
$(ACE_ROOT)/ace/Message_Block.h \
@@ -1655,6 +1641,10 @@ realclean: clean
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Malloc.h \
$(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
$(ACE_ROOT)/ace/Based_Pointer_T.h \
$(ACE_ROOT)/ace/Based_Pointer_T.i \
$(ACE_ROOT)/ace/Based_Pointer_T.cpp \
@@ -1794,8 +1784,6 @@ realclean: clean
$(TAO_ROOT)/tao/TimeBaseC.i \
$(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/PollableC.i \
- $(TAO_ROOT)/tao/Smart_Proxies.h \
- $(TAO_ROOT)/tao/Smart_Proxies.i \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/Request.i \
$(TAO_ROOT)/tao/Server_Request.h \
diff --git a/TAO/tests/LongUpcalls/AMI_Manager.cpp b/TAO/tests/LongUpcalls/AMI_Manager.cpp
new file mode 100644
index 00000000000..7f7c5008d22
--- /dev/null
+++ b/TAO/tests/LongUpcalls/AMI_Manager.cpp
@@ -0,0 +1,172 @@
+//
+// $Id$
+//
+
+#include "AMI_Manager.h"
+
+ACE_RCSID(LongUpcalls, AMI_Manager, "$Id$")
+
+AMI_Manager::AMI_Manager (CORBA::ORB_ptr orb)
+ : orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+void
+AMI_Manager::start_workers (CORBA::Short worker_count,
+ CORBA::Long milliseconds,
+ Test::Controller_ptr controller,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_Thread_Manager thread_manager;
+
+ // ACE_DEBUG ((LM_DEBUG, "Starting %d workers\n", worker_count));
+ Worker worker (&thread_manager,
+ controller, milliseconds,
+ this->orb_.in ());
+
+ worker.activate (THR_NEW_LWP | THR_JOINABLE, worker_count);
+
+ thread_manager.wait ();
+}
+
+void
+AMI_Manager::shutdown (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ this->orb_->shutdown (0, ACE_TRY_ENV);
+}
+
+// ****************************************************************
+
+Worker::Worker (ACE_Thread_Manager *thr_mgr,
+ Test::Controller_ptr controller,
+ CORBA::Long milliseconds,
+ CORBA::ORB_ptr orb)
+ : ACE_Task_Base (thr_mgr)
+ , controller_ (Test::Controller::_duplicate (controller))
+ , milliseconds_ (milliseconds)
+ , orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+int
+Worker::svc (void)
+{
+ // ACE_DEBUG ((LM_DEBUG, "Worker starts\n"));
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ ACE_SYNCH_MUTEX mutex;
+ int pending_requests = 2;
+ Test::AMI_ControllerHandler_var handler;
+
+ {
+ Controller_Handler *handler_impl;
+ ACE_NEW_RETURN (handler_impl,
+ Controller_Handler (&mutex,
+ &pending_requests),
+ -1);
+
+ PortableServer::ServantBase_var auto_destroy (handler_impl);
+ handler = handler_impl->_this (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ this->controller_->sendc_worker_started (handler.in (),
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ // ACE_DEBUG ((LM_DEBUG, "Worker start reported\n"));
+
+ ACE_Time_Value tv (0, 1000 * this->milliseconds_);
+ ACE_OS::sleep (tv);
+
+ this->controller_->sendc_worker_finished (handler.in (),
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ // ACE_DEBUG ((LM_DEBUG, "Worker completion reported\n"));
+
+ for (;;)
+ {
+ ACE_Time_Value tv (0, 1000 * this->milliseconds_);
+ this->orb_->run (tv);
+
+ ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon, mutex, -1);
+ if (pending_requests == 0)
+ break;
+ }
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception in svc() method\n");
+ }
+ ACE_ENDTRY;
+ return 0;
+}
+
+// ****************************************************************
+
+Controller_Handler::Controller_Handler (ACE_SYNCH_MUTEX *mutex,
+ int *pending_replies)
+ : mutex_ (mutex)
+ , pending_replies_ (pending_replies)
+{
+}
+
+void
+Controller_Handler::worker_started (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, *this->mutex_);
+ (*this->pending_replies_)--;
+}
+
+void
+Controller_Handler::worker_started_excep
+ (Test::AMI_ControllerExceptionHolder* h,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_TRY
+ {
+ h->raise_worker_started (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Controller_Handler exception raised in"
+ " worker_started");
+ }
+ ACE_ENDTRY;
+}
+
+void
+Controller_Handler::worker_finished (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, *this->mutex_);
+ (*this->pending_replies_)--;
+}
+
+void
+Controller_Handler::worker_finished_excep
+ (Test::AMI_ControllerExceptionHolder *h,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_TRY
+ {
+ h->raise_worker_finished (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Controller_Handler exception raised in"
+ " worker_finished");
+ }
+ ACE_ENDTRY;
+}
diff --git a/TAO/tests/LongUpcalls/AMI_Manager.h b/TAO/tests/LongUpcalls/AMI_Manager.h
new file mode 100644
index 00000000000..0ce7d46a5d9
--- /dev/null
+++ b/TAO/tests/LongUpcalls/AMI_Manager.h
@@ -0,0 +1,98 @@
+//
+// $Id$
+//
+
+#ifndef LONGUPCALLS_AMI_MANAGER_H
+#define LONGUPCALLS_AMI_MANAGER_H
+
+#include "TestS.h"
+#include "ace/Task.h"
+
+#if defined (_MSC_VER)
+# if (_MSC_VER >= 1200)
+# pragma warning(push)
+# endif /* _MSC_VER >= 1200 */
+# pragma warning (disable : 4250)
+#endif /* _MSC_VER */
+
+class AMI_Manager
+ : public virtual POA_Test::Manager
+ , public virtual PortableServer::RefCountServantBase
+{
+public:
+ AMI_Manager (CORBA::ORB_ptr orb);
+ // Constructor
+
+ // = The skeleton methods
+ virtual void start_workers (CORBA::Short worker_count,
+ CORBA::Long milliseconds,
+ Test::Controller_ptr controller,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void shutdown (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+private:
+ CORBA::ORB_var orb_;
+ // The ORB, to shutdown
+};
+
+// ****************************************************************
+
+class Worker : public ACE_Task_Base
+{
+public:
+ Worker (ACE_Thread_Manager *thr_mgr,
+ Test::Controller_ptr controller,
+ CORBA::Long milliseconds,
+ CORBA::ORB_ptr orb);
+
+ virtual int svc (void);
+ // The service method
+
+private:
+ Test::Controller_var controller_;
+ // The controller pointer
+
+ CORBA::Long milliseconds_;
+ // The number of milliseconds.
+
+ CORBA::ORB_var orb_;
+ // The orb
+};
+
+// ****************************************************************
+
+class Controller_Handler
+ : public virtual POA_Test::AMI_ControllerHandler
+ , public virtual PortableServer::RefCountServantBase
+{
+public:
+ Controller_Handler (ACE_SYNCH_MUTEX *mutex,
+ int *pending_replies);
+ // Constructor
+
+ virtual void worker_started (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void worker_started_excep (Test::AMI_ControllerExceptionHolder*,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void worker_finished (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void worker_finished_excep (Test::AMI_ControllerExceptionHolder*,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+private:
+ ACE_SYNCH_MUTEX *mutex_;
+ int *pending_replies_;
+ // The pending replies is decremented each time a reply is
+ // received.
+ // The mutex is used to protect the access to the flag.
+};
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma warning(pop)
+#endif /* _MSC_VER */
+
+#endif /* LONGUPCALLS_AMI_MANAGER_H */
diff --git a/TAO/tests/LongUpcalls/Controller.cpp b/TAO/tests/LongUpcalls/Controller.cpp
new file mode 100644
index 00000000000..759a6169192
--- /dev/null
+++ b/TAO/tests/LongUpcalls/Controller.cpp
@@ -0,0 +1,44 @@
+//
+// $Id$
+//
+#include "Controller.h"
+
+ACE_RCSID(LongUpcalls, Controller, "$Id$")
+
+Controller::Controller (void)
+ : start_count_ (0)
+ , finish_count_ (0)
+{
+}
+
+void
+Controller::dump_results ()
+{
+ ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, this->mutex_);
+ if (this->start_count_ != this->finish_count_)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "ERROR - mismatched count! (%d,%d)\n",
+ this->start_count_, this->finish_count_));
+ }
+}
+
+void
+Controller::worker_started (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, this->mutex_);
+ this->start_count_++;
+
+ // ACE_DEBUG ((LM_DEBUG, "Received worker start report\n"));
+}
+
+void
+Controller::worker_finished (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, this->mutex_);
+ this->finish_count_++;
+
+ // ACE_DEBUG ((LM_DEBUG, "Received worker completion report\n"));
+}
diff --git a/TAO/tests/LongUpcalls/Controller.h b/TAO/tests/LongUpcalls/Controller.h
new file mode 100644
index 00000000000..5982f8afa97
--- /dev/null
+++ b/TAO/tests/LongUpcalls/Controller.h
@@ -0,0 +1,44 @@
+//
+// $Id$
+//
+
+#ifndef LONGUPCALLS_CONTROLLER_H
+#define LONGUPCALLS_CONTROLLER_H
+
+#include "TestS.h"
+
+#if defined (_MSC_VER)
+# if (_MSC_VER >= 1200)
+# pragma warning(push)
+# endif /* _MSC_VER >= 1200 */
+# pragma warning (disable:4250)
+#endif /* _MSC_VER */
+
+class Controller
+ : public virtual POA_Test::Controller
+ , public virtual PortableServer::RefCountServantBase
+{
+public:
+ Controller (void);
+ // Constructor
+
+ void dump_results (void);
+ // Print out the results and any errors
+
+ // = The skeleton methods
+ virtual void worker_started (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void worker_finished (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+private:
+ ACE_SYNCH_MUTEX mutex_;
+ CORBA::ULong start_count_;
+ CORBA::ULong finish_count_;
+};
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma warning(pop)
+#endif /* _MSC_VER */
+
+#endif /* LONGUPCALLS_CONTROLLER_H */
diff --git a/TAO/tests/LongUpcalls/LongUpcalls.dsw b/TAO/tests/LongUpcalls/LongUpcalls.dsw
new file mode 100644
index 00000000000..adeecfa63fa
--- /dev/null
+++ b/TAO/tests/LongUpcalls/LongUpcalls.dsw
@@ -0,0 +1,65 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "LongUpcalls AMI_Client"=.\ami_client.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "LongUpcalls AMI_Server"=.\ami_server.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "LongUpcalls Blocking_Client"=.\blocking_client.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "LongUpcalls Blocking_Server"=.\blocking_server.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/TAO/tests/LongUpcalls/Makefile b/TAO/tests/LongUpcalls/Makefile
new file mode 100644
index 00000000000..1dbc27ab4e8
--- /dev/null
+++ b/TAO/tests/LongUpcalls/Makefile
@@ -0,0 +1,1939 @@
+#----------------------------------------------------------------------------
+#
+# $Id$
+#
+#----------------------------------------------------------------------------
+
+#----------------------------------------------------------------------------
+# Local macros
+#----------------------------------------------------------------------------
+
+ifndef TAO_ROOT
+ TAO_ROOT = $(ACE_ROOT)/TAO
+endif # ! TAO_ROOT
+
+LDLIBS = -lTAO
+
+IDL_FILES = Test
+IDL_SRC = TestC.cpp TestS.cpp
+BIN = blocking_client blocking_server
+
+SRC = $(addsuffix .cpp, $(BIN) ami_client ami_server Controller Manager AMI_Manager Manager_Handler) $(IDL_SRC)
+
+BLOCKING_CLIENT_OBJS = blocking_client.o Controller.o TestC.o TestS.o
+BLOCKING_SERVER_OBJS = blocking_server.o Manager.o TestC.o TestS.o
+
+AMI_CLIENT_OBJS = ami_client.o Controller.o Manager_Handler.o TestC.o TestS.o
+AMI_SERVER_OBJS = ami_server.o AMI_Manager.o TestC.o TestS.o
+
+TAO_IDLFLAGS += -Ge 1 -GC
+#----------------------------------------------------------------------------
+# Include macros and targets
+#----------------------------------------------------------------------------
+
+include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
+include $(ACE_ROOT)/include/makeinclude/macros.GNU
+include $(TAO_ROOT)/rules.tao.GNU
+
+ifeq ($(ami),1)
+BIN += ami_client ami_server
+endif
+
+include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
+include $(TAO_ROOT)/taoconfig.mk
+
+#----------------------------------------------------------------------------
+# Local targets
+#----------------------------------------------------------------------------
+
+.PRECIOUS: $(foreach ext, $(IDL_EXT), Test$(ext))
+
+blocking_server: $(addprefix $(VDIR),$(BLOCKING_SERVER_OBJS))
+ $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
+
+blocking_client: $(addprefix $(VDIR),$(BLOCKING_CLIENT_OBJS))
+ $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
+
+ami_server: $(addprefix $(VDIR),$(AMI_SERVER_OBJS))
+ $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
+
+ami_client: $(addprefix $(VDIR),$(AMI_CLIENT_OBJS))
+ $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
+
+realclean: clean
+ -$(RM) $(foreach ext, $(IDL_EXT), Test$(ext))
+
+# DO NOT DELETE THIS LINE -- g++dep uses it.
+# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
+
+
+.obj/blocking_client.o .obj/blocking_client.so .shobj/blocking_client.o .shobj/blocking_client.so: blocking_client.cpp \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/pre.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ Controller.h TestS.h \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/varbase.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/MessagingS_T.h \
+ $(TAO_ROOT)/tao/MessagingS_T.i \
+ $(TAO_ROOT)/tao/MessagingS_T.cpp \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Asynch_Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/IORS.h \
+ $(TAO_ROOT)/tao/IORC.h \
+ $(TAO_ROOT)/tao/IORC.i \
+ $(TAO_ROOT)/tao/IORS.i \
+ $(TAO_ROOT)/tao/Interceptor.h \
+ $(TAO_ROOT)/tao/InterceptorC.h \
+ $(TAO_ROOT)/tao/InterceptorC.i \
+ $(TAO_ROOT)/tao/Interceptor.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/InterfaceC.h \
+ $(TAO_ROOT)/tao/ifrfwd.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/InterfaceC.i \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.i \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.i \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/TAOC.h \
+ $(TAO_ROOT)/tao/TAOC.i \
+ $(TAO_ROOT)/tao/operation_details.h \
+ $(TAO_ROOT)/tao/target_specification.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/target_specification.i \
+ $(TAO_ROOT)/tao/operation_details.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Asynch_Invocation.i \
+ TestC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/LocalObject.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/RTCORBAC.h \
+ $(TAO_ROOT)/tao/RTCORBAC.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/Profile.h \
+ $(TAO_ROOT)/tao/Tagged_Components.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.i \
+ $(TAO_ROOT)/tao/Tagged_Components.i \
+ $(TAO_ROOT)/tao/Profile.i \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/BoundsC.i \
+ TestC.i TestS_T.h TestS_T.i TestS_T.cpp TestS.i
+
+.obj/blocking_server.o .obj/blocking_server.so .shobj/blocking_server.o .shobj/blocking_server.so: blocking_server.cpp \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/pre.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ Manager.h TestS.h \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/varbase.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/MessagingS_T.h \
+ $(TAO_ROOT)/tao/MessagingS_T.i \
+ $(TAO_ROOT)/tao/MessagingS_T.cpp \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Asynch_Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/IORS.h \
+ $(TAO_ROOT)/tao/IORC.h \
+ $(TAO_ROOT)/tao/IORC.i \
+ $(TAO_ROOT)/tao/IORS.i \
+ $(TAO_ROOT)/tao/Interceptor.h \
+ $(TAO_ROOT)/tao/InterceptorC.h \
+ $(TAO_ROOT)/tao/InterceptorC.i \
+ $(TAO_ROOT)/tao/Interceptor.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/InterfaceC.h \
+ $(TAO_ROOT)/tao/ifrfwd.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/InterfaceC.i \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.i \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.i \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/TAOC.h \
+ $(TAO_ROOT)/tao/TAOC.i \
+ $(TAO_ROOT)/tao/operation_details.h \
+ $(TAO_ROOT)/tao/target_specification.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/target_specification.i \
+ $(TAO_ROOT)/tao/operation_details.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Asynch_Invocation.i \
+ TestC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/LocalObject.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/RTCORBAC.h \
+ $(TAO_ROOT)/tao/RTCORBAC.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/Profile.h \
+ $(TAO_ROOT)/tao/Tagged_Components.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.i \
+ $(TAO_ROOT)/tao/Tagged_Components.i \
+ $(TAO_ROOT)/tao/Profile.i \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/BoundsC.i \
+ TestC.i TestS_T.h TestS_T.i TestS_T.cpp TestS.i \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp
+
+.obj/Controller.o .obj/Controller.so .shobj/Controller.o .shobj/Controller.so: Controller.cpp Controller.h TestS.h \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(ACE_ROOT)/ace/pre.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/varbase.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/MessagingS_T.h \
+ $(TAO_ROOT)/tao/MessagingS_T.i \
+ $(TAO_ROOT)/tao/MessagingS_T.cpp \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Asynch_Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/IORS.h \
+ $(TAO_ROOT)/tao/IORC.h \
+ $(TAO_ROOT)/tao/IORC.i \
+ $(TAO_ROOT)/tao/IORS.i \
+ $(TAO_ROOT)/tao/Interceptor.h \
+ $(TAO_ROOT)/tao/InterceptorC.h \
+ $(TAO_ROOT)/tao/InterceptorC.i \
+ $(TAO_ROOT)/tao/Interceptor.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/InterfaceC.h \
+ $(TAO_ROOT)/tao/ifrfwd.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/InterfaceC.i \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.i \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.i \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/TAOC.h \
+ $(TAO_ROOT)/tao/TAOC.i \
+ $(TAO_ROOT)/tao/operation_details.h \
+ $(TAO_ROOT)/tao/target_specification.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/target_specification.i \
+ $(TAO_ROOT)/tao/operation_details.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Asynch_Invocation.i \
+ TestC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/LocalObject.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/RTCORBAC.h \
+ $(TAO_ROOT)/tao/RTCORBAC.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/Profile.h \
+ $(TAO_ROOT)/tao/Tagged_Components.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.i \
+ $(TAO_ROOT)/tao/Tagged_Components.i \
+ $(TAO_ROOT)/tao/Profile.i \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/BoundsC.i \
+ TestC.i TestS_T.h TestS_T.i TestS_T.cpp TestS.i
+
+.obj/Manager.o .obj/Manager.so .shobj/Manager.o .shobj/Manager.so: Manager.cpp Manager.h TestS.h \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(ACE_ROOT)/ace/pre.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/varbase.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/MessagingS_T.h \
+ $(TAO_ROOT)/tao/MessagingS_T.i \
+ $(TAO_ROOT)/tao/MessagingS_T.cpp \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Asynch_Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/IORS.h \
+ $(TAO_ROOT)/tao/IORC.h \
+ $(TAO_ROOT)/tao/IORC.i \
+ $(TAO_ROOT)/tao/IORS.i \
+ $(TAO_ROOT)/tao/Interceptor.h \
+ $(TAO_ROOT)/tao/InterceptorC.h \
+ $(TAO_ROOT)/tao/InterceptorC.i \
+ $(TAO_ROOT)/tao/Interceptor.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/InterfaceC.h \
+ $(TAO_ROOT)/tao/ifrfwd.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/InterfaceC.i \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.i \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.i \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/TAOC.h \
+ $(TAO_ROOT)/tao/TAOC.i \
+ $(TAO_ROOT)/tao/operation_details.h \
+ $(TAO_ROOT)/tao/target_specification.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/target_specification.i \
+ $(TAO_ROOT)/tao/operation_details.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Asynch_Invocation.i \
+ TestC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/LocalObject.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/RTCORBAC.h \
+ $(TAO_ROOT)/tao/RTCORBAC.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/Profile.h \
+ $(TAO_ROOT)/tao/Tagged_Components.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.i \
+ $(TAO_ROOT)/tao/Tagged_Components.i \
+ $(TAO_ROOT)/tao/Profile.i \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/BoundsC.i \
+ TestC.i TestS_T.h TestS_T.i TestS_T.cpp TestS.i \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp
+
+.obj/TestC.o .obj/TestC.so .shobj/TestC.o .shobj/TestC.so: TestC.cpp TestC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(ACE_ROOT)/ace/pre.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/varbase.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/IORS.h \
+ $(TAO_ROOT)/tao/IORC.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/IORC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/IORS.i \
+ $(TAO_ROOT)/tao/Interceptor.h \
+ $(TAO_ROOT)/tao/InterceptorC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/InterceptorC.i \
+ $(TAO_ROOT)/tao/Interceptor.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/LocalObject.i \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/InterfaceC.h \
+ $(TAO_ROOT)/tao/ifrfwd.h \
+ $(TAO_ROOT)/tao/InterfaceC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/RTCORBAC.h \
+ $(TAO_ROOT)/tao/RTCORBAC.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/Profile.h \
+ $(TAO_ROOT)/tao/Tagged_Components.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.i \
+ $(TAO_ROOT)/tao/Tagged_Components.i \
+ $(TAO_ROOT)/tao/Profile.i \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/GIOP_Message_State.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.i \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.i \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/TAOC.h \
+ $(TAO_ROOT)/tao/TAOC.i \
+ $(TAO_ROOT)/tao/operation_details.h \
+ $(TAO_ROOT)/tao/target_specification.h \
+ $(TAO_ROOT)/tao/target_specification.i \
+ $(TAO_ROOT)/tao/operation_details.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/BoundsC.i \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingS_T.h \
+ $(TAO_ROOT)/tao/MessagingS_T.i \
+ $(TAO_ROOT)/tao/MessagingS_T.cpp \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Asynch_Invocation.h \
+ $(TAO_ROOT)/tao/Asynch_Invocation.i \
+ TestC.i
+
+.obj/TestS.o .obj/TestS.so .shobj/TestS.o .shobj/TestS.so: TestS.cpp TestS.h \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(ACE_ROOT)/ace/pre.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/varbase.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/MessagingS_T.h \
+ $(TAO_ROOT)/tao/MessagingS_T.i \
+ $(TAO_ROOT)/tao/MessagingS_T.cpp \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Asynch_Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/IORS.h \
+ $(TAO_ROOT)/tao/IORC.h \
+ $(TAO_ROOT)/tao/IORC.i \
+ $(TAO_ROOT)/tao/IORS.i \
+ $(TAO_ROOT)/tao/Interceptor.h \
+ $(TAO_ROOT)/tao/InterceptorC.h \
+ $(TAO_ROOT)/tao/InterceptorC.i \
+ $(TAO_ROOT)/tao/Interceptor.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/InterfaceC.h \
+ $(TAO_ROOT)/tao/ifrfwd.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/InterfaceC.i \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.i \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.i \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/TAOC.h \
+ $(TAO_ROOT)/tao/TAOC.i \
+ $(TAO_ROOT)/tao/operation_details.h \
+ $(TAO_ROOT)/tao/target_specification.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/target_specification.i \
+ $(TAO_ROOT)/tao/operation_details.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Asynch_Invocation.i \
+ TestC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/LocalObject.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/RTCORBAC.h \
+ $(TAO_ROOT)/tao/RTCORBAC.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/Profile.h \
+ $(TAO_ROOT)/tao/Tagged_Components.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.i \
+ $(TAO_ROOT)/tao/Tagged_Components.i \
+ $(TAO_ROOT)/tao/Profile.i \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/BoundsC.i \
+ TestC.i TestS_T.h TestS_T.i TestS_T.cpp TestS.i
+
+# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/TAO/tests/LongUpcalls/Manager.cpp b/TAO/tests/LongUpcalls/Manager.cpp
new file mode 100644
index 00000000000..c519ceec7a5
--- /dev/null
+++ b/TAO/tests/LongUpcalls/Manager.cpp
@@ -0,0 +1,78 @@
+//
+// $Id$
+//
+
+#include "Manager.h"
+
+ACE_RCSID(LongUpcalls, Manager, "$Id$")
+
+Manager::Manager (CORBA::ORB_ptr orb)
+ : orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+void
+Manager::start_workers (CORBA::Short worker_count,
+ CORBA::Long milliseconds,
+ Test::Controller_ptr controller,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_Thread_Manager thread_manager;
+
+ // ACE_DEBUG ((LM_DEBUG, "Starting %d workers\n", worker_count));
+ Worker worker (&thread_manager,
+ controller, milliseconds);
+
+ worker.activate (THR_NEW_LWP | THR_JOINABLE, worker_count);
+
+ thread_manager.wait ();
+}
+
+void
+Manager::shutdown (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ this->orb_->shutdown (0, ACE_TRY_ENV);
+}
+
+
+// ****************************************************************
+
+Worker::Worker (ACE_Thread_Manager *thr_mgr,
+ Test::Controller_ptr controller,
+ CORBA::Long milliseconds)
+ : ACE_Task_Base (thr_mgr)
+ , controller_ (Test::Controller::_duplicate (controller))
+ , milliseconds_ (milliseconds)
+{
+}
+
+int
+Worker::svc (void)
+{
+ // ACE_DEBUG ((LM_DEBUG, "Worker starts\n"));
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ this->controller_->worker_started (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ // ACE_DEBUG ((LM_DEBUG, "Worker start reported\n"));
+
+ ACE_Time_Value tv (0, 1000 * this->milliseconds_);
+ ACE_OS::sleep (tv);
+
+ this->controller_->worker_finished (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ // ACE_DEBUG ((LM_DEBUG, "Worker completion reported\n"));
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception in svc() method\n");
+ }
+ ACE_ENDTRY;
+ return 0;
+}
diff --git a/TAO/tests/LongUpcalls/Manager.h b/TAO/tests/LongUpcalls/Manager.h
new file mode 100644
index 00000000000..cabf27d0b5d
--- /dev/null
+++ b/TAO/tests/LongUpcalls/Manager.h
@@ -0,0 +1,64 @@
+//
+// $Id$
+//
+
+#ifndef LONGUPCALLS_MANAGER_H
+#define LONGUPCALLS_MANAGER_H
+
+#include "TestS.h"
+#include "ace/Task.h"
+
+#if defined (_MSC_VER)
+# if (_MSC_VER >= 1200)
+# pragma warning(push)
+# endif /* _MSC_VER >= 1200 */
+# pragma warning (disable : 4250)
+#endif /* _MSC_VER */
+
+class Manager
+ : public virtual POA_Test::Manager
+ , public virtual PortableServer::RefCountServantBase
+{
+public:
+ Manager (CORBA::ORB_ptr orb);
+ // Constructor
+
+ // = The skeleton methods
+ virtual void start_workers (CORBA::Short worker_count,
+ CORBA::Long milliseconds,
+ Test::Controller_ptr controller,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void shutdown (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+private:
+ CORBA::ORB_var orb_;
+ // The ORB, to shutdown
+};
+
+// ****************************************************************
+
+class Worker : public ACE_Task_Base
+{
+public:
+ Worker (ACE_Thread_Manager *thr_mgr,
+ Test::Controller_ptr controller,
+ CORBA::Long milliseconds);
+
+ virtual int svc (void);
+ // The service method
+
+private:
+ Test::Controller_var controller_;
+ // The controller pointer
+
+ CORBA::Long milliseconds_;
+ // The number of milliseconds.
+};
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma warning(pop)
+#endif /* _MSC_VER */
+
+#endif /* LONGUPCALLS_MANAGER_H */
diff --git a/TAO/tests/LongUpcalls/Manager_Handler.cpp b/TAO/tests/LongUpcalls/Manager_Handler.cpp
new file mode 100644
index 00000000000..f5207ae0fb6
--- /dev/null
+++ b/TAO/tests/LongUpcalls/Manager_Handler.cpp
@@ -0,0 +1,53 @@
+//
+// $Id$
+//
+
+#include "Manager_Handler.h"
+
+ACE_RCSID(LongUpcalls, Manager_Handler, "$Id$")
+
+Manager_Handler::Manager_Handler (Test::Manager_ptr manager,
+ Test::Controller_ptr controller)
+ : manager_ (Test::Manager::_duplicate (manager))
+ , controller_ (Test::Controller::_duplicate (controller))
+{
+}
+
+void
+Manager_Handler::start_workers (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_TRY
+ {
+ this->manager_->start_workers (CORBA::Short(10),
+ CORBA::Long(1000),
+ this->controller_.in (),
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception raised in nested start workers: ");
+ }
+ ACE_ENDTRY;
+}
+
+void
+Manager_Handler::start_workers_excep (Test::AMI_ManagerExceptionHolder * holder,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_TRY
+ {
+ holder->raise_start_workers (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception raised in asynch start workers: ");
+ }
+ ACE_ENDTRY;
+}
+
diff --git a/TAO/tests/LongUpcalls/Manager_Handler.h b/TAO/tests/LongUpcalls/Manager_Handler.h
new file mode 100644
index 00000000000..94f1e3b3427
--- /dev/null
+++ b/TAO/tests/LongUpcalls/Manager_Handler.h
@@ -0,0 +1,47 @@
+//
+// $Id$
+//
+
+#ifndef LONGUPCALLS_MANAGER_HANDLER_H
+#define LONGUPCALLS_MANAGER_HANDLER_H
+
+#include "TestS.h"
+#include "ace/Task.h"
+
+#if defined (_MSC_VER)
+# if (_MSC_VER >= 1200)
+# pragma warning(push)
+# endif /* _MSC_VER >= 1200 */
+# pragma warning (disable : 4250)
+#endif /* _MSC_VER */
+
+class Manager_Handler
+ : public virtual POA_Test::AMI_ManagerHandler
+ , public virtual PortableServer::RefCountServantBase
+{
+public:
+ Manager_Handler (Test::Manager_ptr manager,
+ Test::Controller_ptr controller);
+ // Constructor
+
+ // = The skeleton methods
+ virtual void start_workers (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void start_workers_excep (Test::AMI_ManagerExceptionHolder*,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+private:
+ Test::Manager_var manager_;
+ // The manager to reissue the request from the context of the
+ // upcall
+
+ Test::Controller_var controller_;
+ // The controller
+};
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma warning(pop)
+#endif /* _MSC_VER */
+
+#endif /* LONGUPCALLS_MANAGER_HANDLER_H */
diff --git a/TAO/tests/LongUpcalls/Test.idl b/TAO/tests/LongUpcalls/Test.idl
new file mode 100644
index 00000000000..e5723301a09
--- /dev/null
+++ b/TAO/tests/LongUpcalls/Test.idl
@@ -0,0 +1,25 @@
+//
+// $Id$
+//
+
+module Test
+{
+ interface Controller {
+ void worker_started ();
+ // A worker has started
+
+ void worker_finished ();
+ // A worker has finished
+ };
+
+ interface Manager {
+ void start_workers (in short worker_count,
+ in long milliseconds,
+ in Controller the_controller);
+ // Start <worker_count> workers, each one runs for the pescribed
+ // number of milliseconds, and report progress to <the_controller>
+
+ oneway void shutdown ();
+ // Shutdown the Manager's ORB, just for cleanup purposes
+ };
+};
diff --git a/TAO/tests/LongUpcalls/ami_client.cpp b/TAO/tests/LongUpcalls/ami_client.cpp
new file mode 100644
index 00000000000..7e9b3c9e7dc
--- /dev/null
+++ b/TAO/tests/LongUpcalls/ami_client.cpp
@@ -0,0 +1,121 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "Controller.h"
+#include "Manager_Handler.h"
+
+ACE_RCSID(LongUpcalls, ami_client, "$Id$")
+
+const char *ior = "file://test.ior";
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'k':
+ ior = get_opts.optarg;
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-k <ior>"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ ACE_TRY_NEW_ENV
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var object =
+ orb->resolve_initial_references("RootPOA");
+ if (CORBA::is_nil (object.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (object.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ Controller controller_impl;
+
+ Test::Controller_var controller =
+ controller_impl._this (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ object = orb->string_to_object (ior, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ Test::Manager_var manager =
+ Test::Manager::_narrow (object.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (CORBA::is_nil (manager.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Manager is nil\n"),
+ 1);
+
+ Manager_Handler handler_impl (manager.in (),
+ controller.in ());
+ Test::AMI_ManagerHandler_var handler =
+ handler_impl._this (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ poa_manager->activate (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ const CORBA::Short worker_count = 10;
+ manager->sendc_start_workers (handler.in (),
+ worker_count,
+ CORBA::Long (1000),
+ controller.in (),
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ ACE_Time_Value tv (30, 0);
+ orb->run (tv);
+
+ controller_impl.dump_results ();
+
+ manager->shutdown (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ root_poa->destroy (1, 1, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ orb->destroy (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception caught:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
diff --git a/TAO/tests/LongUpcalls/ami_client.dsp b/TAO/tests/LongUpcalls/ami_client.dsp
new file mode 100644
index 00000000000..730f3fc6791
--- /dev/null
+++ b/TAO/tests/LongUpcalls/ami_client.dsp
@@ -0,0 +1,219 @@
+# Microsoft Developer Studio Project File - Name="LongUpcalls AMI_Client" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=LongUpcalls AMI_Client - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "ami_client.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "ami_client.mak" CFG="LongUpcalls AMI_Client - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "LongUpcalls AMI_Client - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "LongUpcalls AMI_Client - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "LongUpcalls AMI_Client - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\.." /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ace.lib tao.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ELSEIF "$(CFG)" == "LongUpcalls AMI_Client - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "ami_client___Win32_Debug"
+# PROP BASE Intermediate_Dir "ami_client___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\.." /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 aced.lib taod.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\lib" /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ENDIF
+
+# Begin Target
+
+# Name "LongUpcalls AMI_Client - Win32 Release"
+# Name "LongUpcalls AMI_Client - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\ami_client.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Controller.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Manager_Handler.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestC.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestS.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\Controller.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Manager_Handler.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Test_i.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestS.h
+# End Source File
+# End Group
+# Begin Group "IDL Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\Test.idl
+
+!IF "$(CFG)" == "LongUpcalls AMI_Client - Win32 Release"
+
+USERDEP__TEST_="..\..\..\bin\Release\tao_idl.exe"
+# Begin Custom Build - Invoking TAO's IDL Compiler on $(InputPath)
+InputPath=.\Test.idl
+InputName=Test
+
+BuildCmds= \
+ ..\..\..\bin\Release\tao_idl -Ge 1 -GC $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "LongUpcalls AMI_Client - Win32 Debug"
+
+USERDEP__TEST_="..\..\..\bin\tao_idl.exe"
+# Begin Custom Build - Invoking TAO's IDL Compiler on $(InputPath)
+InputPath=.\Test.idl
+InputName=Test
+
+BuildCmds= \
+ ..\..\..\bin\tao_idl -Ge 1 -GC $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/LongUpcalls/ami_server.cpp b/TAO/tests/LongUpcalls/ami_server.cpp
new file mode 100644
index 00000000000..75f4a46e045
--- /dev/null
+++ b/TAO/tests/LongUpcalls/ami_server.cpp
@@ -0,0 +1,104 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "AMI_Manager.h"
+
+ACE_RCSID(LongUpcalls, blocking_server, "$Id$")
+
+const char *ior_output_file = "test.ior";
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "o:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'o':
+ ior_output_file = get_opts.optarg;
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-o <iorfile>"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ ACE_TRY_NEW_ENV
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var poa_object =
+ orb->resolve_initial_references("RootPOA");
+ if (CORBA::is_nil (poa_object.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ AMI_Manager manager_impl (orb.in ());
+
+ Test::Manager_var manager =
+ manager_impl._this (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::String_var ior =
+ orb->object_to_string (manager.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ // If the ior_output_file exists, output the ior to it
+ FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
+ if (output_file == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Cannot open output file for writing IOR: %s",
+ ior_output_file),
+ 1);
+ ACE_OS::fprintf (output_file, "%s", ior.in ());
+ ACE_OS::fclose (output_file);
+
+ poa_manager->activate (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ orb->run ();
+
+ // ACE_DEBUG ((LM_DEBUG, "event loop finished\n"));
+
+ root_poa->destroy (1, 1, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ orb->destroy (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception caught:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
diff --git a/TAO/tests/LongUpcalls/ami_server.dsp b/TAO/tests/LongUpcalls/ami_server.dsp
new file mode 100644
index 00000000000..b37a5d907dd
--- /dev/null
+++ b/TAO/tests/LongUpcalls/ami_server.dsp
@@ -0,0 +1,211 @@
+# Microsoft Developer Studio Project File - Name="LongUpcalls AMI_Server" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=LongUpcalls AMI_Server - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "ami_server.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "ami_server.mak" CFG="LongUpcalls AMI_Server - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "LongUpcalls AMI_Server - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "LongUpcalls AMI_Server - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "LongUpcalls AMI_Server - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\.." /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ace.lib tao.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ELSEIF "$(CFG)" == "LongUpcalls AMI_Server - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "ami_server___Win32_Debug"
+# PROP BASE Intermediate_Dir "ami_server___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\.." /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 aced.lib taod.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\lib" /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ENDIF
+
+# Begin Target
+
+# Name "LongUpcalls AMI_Server - Win32 Release"
+# Name "LongUpcalls AMI_Server - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\AMI_Manager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\ami_server.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestC.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestS.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\AMI_Manager.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Test_i.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestS.h
+# End Source File
+# End Group
+# Begin Group "IDL Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\Test.idl
+
+!IF "$(CFG)" == "LongUpcalls AMI_Server - Win32 Release"
+
+USERDEP__TEST_="..\..\..\bin\Release\tao_idl.exe"
+# Begin Custom Build - Invoking TAO's IDL Compiler on $(InputPath)
+InputPath=.\Test.idl
+InputName=Test
+
+BuildCmds= \
+ ..\..\..\bin\Release\tao_idl -Ge 1 -GC $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "LongUpcalls AMI_Server - Win32 Debug"
+
+USERDEP__TEST_="..\..\..\bin\tao_idl.exe"
+# Begin Custom Build - Invoking TAO's IDL Compiler on $(InputPath)
+InputPath=.\Test.idl
+InputName=Test
+
+BuildCmds= \
+ ..\..\..\bin\tao_idl -Ge 1 -GC $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/LongUpcalls/blocking_client.cpp b/TAO/tests/LongUpcalls/blocking_client.cpp
new file mode 100644
index 00000000000..729e6eefea7
--- /dev/null
+++ b/TAO/tests/LongUpcalls/blocking_client.cpp
@@ -0,0 +1,111 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "Controller.h"
+
+ACE_RCSID(LongUpcalls, blocking_client, "$Id$")
+
+const char *ior = "file://test.ior";
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'k':
+ ior = get_opts.optarg;
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-k <ior>"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ ACE_TRY_NEW_ENV
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var object =
+ orb->resolve_initial_references("RootPOA");
+ if (CORBA::is_nil (object.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (object.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ Controller controller_impl;
+
+ Test::Controller_var controller =
+ controller_impl._this (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ object = orb->string_to_object (ior, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ Test::Manager_var manager =
+ Test::Manager::_narrow (object.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (CORBA::is_nil (manager.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Manager is nil\n"),
+ 1);
+
+
+ poa_manager->activate (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ const CORBA::Short worker_count = 10;
+ manager->start_workers (worker_count,
+ CORBA::Long (1000),
+ controller.in (),
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ controller_impl.dump_results ();
+
+ manager->shutdown (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ root_poa->destroy (1, 1, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ orb->destroy (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception caught:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
diff --git a/TAO/tests/LongUpcalls/blocking_client.dsp b/TAO/tests/LongUpcalls/blocking_client.dsp
new file mode 100644
index 00000000000..7f66bd5bdff
--- /dev/null
+++ b/TAO/tests/LongUpcalls/blocking_client.dsp
@@ -0,0 +1,211 @@
+# Microsoft Developer Studio Project File - Name="LongUpcalls Blocking_Client" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=LongUpcalls Blocking_Client - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "blocking_client.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "blocking_client.mak" CFG="LongUpcalls Blocking_Client - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "LongUpcalls Blocking_Client - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "LongUpcalls Blocking_Client - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "LongUpcalls Blocking_Client - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\.." /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ace.lib tao.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ELSEIF "$(CFG)" == "LongUpcalls Blocking_Client - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "blocking_client___Win32_Debug"
+# PROP BASE Intermediate_Dir "blocking_client___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\.." /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 aced.lib taod.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\lib" /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ENDIF
+
+# Begin Target
+
+# Name "LongUpcalls Blocking_Client - Win32 Release"
+# Name "LongUpcalls Blocking_Client - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\blocking_client.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Controller.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestC.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestS.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\Controller.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Test_i.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestS.h
+# End Source File
+# End Group
+# Begin Group "IDL Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\Test.idl
+
+!IF "$(CFG)" == "LongUpcalls Blocking_Client - Win32 Release"
+
+USERDEP__TEST_="..\..\..\bin\Release\tao_idl.exe"
+# Begin Custom Build - Invoking TAO's IDL Compiler on $(InputPath)
+InputPath=.\Test.idl
+InputName=Test
+
+BuildCmds= \
+ ..\..\..\bin\Release\tao_idl -Ge 1 -GC $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "LongUpcalls Blocking_Client - Win32 Debug"
+
+USERDEP__TEST_="..\..\..\bin\tao_idl.exe"
+# Begin Custom Build - Invoking TAO's IDL Compiler on $(InputPath)
+InputPath=.\Test.idl
+InputName=Test
+
+BuildCmds= \
+ ..\..\..\bin\tao_idl -Ge 1 -GC $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/LongUpcalls/blocking_server.cpp b/TAO/tests/LongUpcalls/blocking_server.cpp
new file mode 100644
index 00000000000..f2bd16c1d44
--- /dev/null
+++ b/TAO/tests/LongUpcalls/blocking_server.cpp
@@ -0,0 +1,104 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "Manager.h"
+
+ACE_RCSID(LongUpcalls, blocking_server, "$Id$")
+
+const char *ior_output_file = "test.ior";
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "o:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'o':
+ ior_output_file = get_opts.optarg;
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-o <iorfile>"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ ACE_TRY_NEW_ENV
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var poa_object =
+ orb->resolve_initial_references("RootPOA");
+ if (CORBA::is_nil (poa_object.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ Manager manager_impl (orb.in ());
+
+ Test::Manager_var manager =
+ manager_impl._this (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::String_var ior =
+ orb->object_to_string (manager.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ // If the ior_output_file exists, output the ior to it
+ FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
+ if (output_file == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Cannot open output file for writing IOR: %s",
+ ior_output_file),
+ 1);
+ ACE_OS::fprintf (output_file, "%s", ior.in ());
+ ACE_OS::fclose (output_file);
+
+ poa_manager->activate (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ orb->run ();
+
+ // ACE_DEBUG ((LM_DEBUG, "event loop finished\n"));
+
+ root_poa->destroy (1, 1, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ orb->destroy (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception caught:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
diff --git a/TAO/tests/LongUpcalls/blocking_server.dsp b/TAO/tests/LongUpcalls/blocking_server.dsp
new file mode 100644
index 00000000000..ef8608dde61
--- /dev/null
+++ b/TAO/tests/LongUpcalls/blocking_server.dsp
@@ -0,0 +1,211 @@
+# Microsoft Developer Studio Project File - Name="LongUpcalls Blocking_Server" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=LongUpcalls Blocking_Server - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "blocking_server.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "blocking_server.mak" CFG="LongUpcalls Blocking_Server - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "LongUpcalls Blocking_Server - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "LongUpcalls Blocking_Server - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "LongUpcalls Blocking_Server - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\.." /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ace.lib tao.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ELSEIF "$(CFG)" == "LongUpcalls Blocking_Server - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "blocking_server___Win32_Debug"
+# PROP BASE Intermediate_Dir "blocking_server___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\.." /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 aced.lib taod.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\lib" /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ENDIF
+
+# Begin Target
+
+# Name "LongUpcalls Blocking_Server - Win32 Release"
+# Name "LongUpcalls Blocking_Server - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\blocking_server.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Manager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestC.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestS.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\Manager.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Test_i.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestS.h
+# End Source File
+# End Group
+# Begin Group "IDL Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\Test.idl
+
+!IF "$(CFG)" == "LongUpcalls Blocking_Server - Win32 Release"
+
+USERDEP__TEST_="..\..\..\bin\Release\tao_idl.exe"
+# Begin Custom Build - Invoking TAO's IDL Compiler on $(InputPath)
+InputPath=.\Test.idl
+InputName=Test
+
+BuildCmds= \
+ ..\..\..\bin\Release\tao_idl -Ge 1 -GC $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "LongUpcalls Blocking_Server - Win32 Debug"
+
+USERDEP__TEST_="..\..\..\bin\tao_idl.exe"
+# Begin Custom Build - Invoking TAO's IDL Compiler on $(InputPath)
+InputPath=.\Test.idl
+InputName=Test
+
+BuildCmds= \
+ ..\..\..\bin\tao_idl -Ge 1 -GC $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/LongUpcalls/run_test.pl b/TAO/tests/LongUpcalls/run_test.pl
new file mode 100755
index 00000000000..d9b46b3bd7d
--- /dev/null
+++ b/TAO/tests/LongUpcalls/run_test.pl
@@ -0,0 +1,84 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+unshift @INC, '../../../bin';
+require ACEutils;
+use Cwd;
+
+$cwd = getcwd();
+$status = 0;
+
+ACE::checkForTarget($cwd);
+
+$iorfile = "$cwd$DIR_SEPARATOR" ."test.ior";
+$svcfile = $cwd . $DIR_SEPARATOR . "svc.conf";
+
+print STDERR "==== Server upcall waits for operations on other threads\n";
+
+unlink $iorfile;
+$SV = Process::Create ($EXEPREFIX."blocking_server$EXE_EXT",
+ " -ORBSvcConf " . $svcfile
+ . " -o $iorfile");
+
+if (ACE::waitforfile_timed ($iorfile, 30) == -1) {
+ print STDERR "ERROR: cannot find file <$iorfile>\n";
+ $SV->Kill (); $SV->TimedWait (1);
+ exit 1;
+}
+
+$CL = Process::Create ($EXEPREFIX."blocking_client$EXE_EXT",
+ " -ORBSvcConf " . $svcfile
+ . " -k file://$iorfile ");
+
+$client = $CL->TimedWait (240);
+if ($client == -1) {
+ print STDERR "ERROR: client timedout\n";
+ $CL->Kill (); $CL->TimedWait (1);
+ $status = 1;
+}
+
+$server = $SV->TimedWait (30);
+if ($server == -1) {
+ print STDERR "ERROR: server timedout\n";
+ $SV->Kill (); $SV->TimedWait (1);
+ $status = 1;
+}
+
+print STDERR "==== Server upcall waits for AMI operations on other threads\n";
+
+unlink $iorfile;
+$SV = Process::Create ($EXEPREFIX."ami_server$EXE_EXT",
+ " -ORBSvcConf " . $svcfile
+ . " -o $iorfile");
+
+if (ACE::waitforfile_timed ($iorfile, 30) == -1) {
+ print STDERR "ERROR: cannot find file <$iorfile>\n";
+ $SV->Kill (); $SV->TimedWait (1);
+ exit 1;
+}
+
+$CL = Process::Create ($EXEPREFIX."blocking_client$EXE_EXT",
+ " -ORBSvcConf " . $svcfile
+ . " -k file://$iorfile ");
+
+$client = $CL->TimedWait (240);
+if ($client == -1) {
+ print STDERR "ERROR: client timedout\n";
+ $CL->Kill (); $CL->TimedWait (1);
+ $status = 1;
+}
+
+$server = $SV->TimedWait (30);
+if ($server == -1) {
+ print STDERR "ERROR: server timedout\n";
+ $SV->Kill (); $SV->TimedWait (1);
+ $status = 1;
+}
+
+unlink $iorfile;
+
+exit $status;
diff --git a/TAO/tests/LongUpcalls/svc.conf b/TAO/tests/LongUpcalls/svc.conf
new file mode 100644
index 00000000000..19a1c36439d
--- /dev/null
+++ b/TAO/tests/LongUpcalls/svc.conf
@@ -0,0 +1,5 @@
+#
+# $Id$
+#
+static Resource_Factory "-ORBReactorType tp"
+static Client_Strategy_Factory "-ORBClientConnectionHandler MT -ORBTransportMuxStrategy MUXED"
diff --git a/TAO/tests/MT_Client/client.conf b/TAO/tests/MT_Client/client.conf
index 1d00531abb6..73d9e3ccee4 100644
--- a/TAO/tests/MT_Client/client.conf
+++ b/TAO/tests/MT_Client/client.conf
@@ -1,3 +1,3 @@
# $Id$
-static Client_Strategy_Factory "-ORBProfileLock null -ORBClientConnectionHandler RW"
+static Client_Strategy_Factory "-ORBClientConnectionHandler RW"
diff --git a/TAO/tests/Makefile b/TAO/tests/Makefile
index 54d4b3a33e5..89fac2d3184 100644
--- a/TAO/tests/Makefile
+++ b/TAO/tests/Makefile
@@ -40,7 +40,8 @@ DIRS = CDR \
Endpoint_Per_Priority \
Explicit_Event_Loop \
DynAny_Test \
- Policies
+ Policies \
+ LongUpcalls
ifndef TAO_ROOT
TAO_ROOT = $(ACE_ROOT)/TAO