diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-06-16 20:15:25 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-06-16 20:15:25 +0000 |
commit | abe3e4573eaf9e98a283cdc1326e9b645db010f9 (patch) | |
tree | 9d6733547f5f42ea89ded14110c3d1ae1e61d484 /TAO | |
parent | 43eb1b4028726e408e0926f4181423d474d6d583 (diff) | |
download | ATCD-abe3e4573eaf9e98a283cdc1326e9b645db010f9.tar.gz |
ChangeLogTag:Fri Jun 16 12:07:39 2000 Carlos O'Ryan <coryan@uci.edu>
Diffstat (limited to 'TAO')
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 |