diff options
author | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-09-18 00:06:07 +0000 |
---|---|---|
committer | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-09-18 00:06:07 +0000 |
commit | 51f8cbd1e6bda9fc3ee01cbcb6305fbd0d760f49 (patch) | |
tree | 10e8af6827368c6ceb5e733627c5faf5e361b748 /TAO/tao/RTCORBA | |
parent | 860ac45fe29e5b8e33304d7d7d83629de17ca427 (diff) | |
download | ATCD-51f8cbd1e6bda9fc3ee01cbcb6305fbd0d760f49.tar.gz |
ChangeLogTag: Mon Sep 17 19:00:00 2001 Irfan Pyarali <irfan@cs.wustl.edu>
Diffstat (limited to 'TAO/tao/RTCORBA')
38 files changed, 1967 insertions, 1214 deletions
diff --git a/TAO/tao/RTCORBA/Continuous_Priority_Mapping.cpp b/TAO/tao/RTCORBA/Continuous_Priority_Mapping.cpp new file mode 100644 index 00000000000..fe50a6d7e4d --- /dev/null +++ b/TAO/tao/RTCORBA/Continuous_Priority_Mapping.cpp @@ -0,0 +1,130 @@ +// $Id$ + +#include "Continuous_Priority_Mapping.h" +#include "ace/Sched_Params.h" + +#if !defined (__ACE_INLINE__) +# include "Continuous_Priority_Mapping.i" +#endif /* ! __ACE_INLINE__ */ + +ACE_RCSID(RTCORBA, Continuous_Priority_Mapping, "$Id: ") + +TAO_Continuous_Priority_Mapping::TAO_Continuous_Priority_Mapping (int policy) + : policy_ (policy) +{ + this->min_ = + ACE_Sched_Params::priority_min (this->policy_); + + this->max_ = + ACE_Sched_Params::priority_max (this->policy_); +} + +TAO_Continuous_Priority_Mapping::~TAO_Continuous_Priority_Mapping (void) +{ +} + +CORBA::Boolean +TAO_Continuous_Priority_Mapping::to_native (RTCORBA::Priority corba_priority, + RTCORBA::NativePriority &native_priority) +{ + if (corba_priority < 0) + return 0; + +#if defined (ACE_WIN32) + + int current_native_priority = this->min_; + int next_native_priority; + for (int i = 1; i <= corba_priority; ++i) + { + next_native_priority = + ACE_Sched_Params::next_priority (this->policy_, + current_native_priority); + + if (next_native_priority == current_native_priority) + return 0; + + current_native_priority = next_native_priority; + } + + native_priority = current_native_priority; + return 1; + +#else + + if (this->min_ < this->max_) + { + native_priority = corba_priority + this->min_; + if (native_priority > this->max_) + return 0; + } + else if (this->min_ > this->max_) + { + native_priority = this->min_ - corba_priority; + if (native_priority < this->max_) + return 0; + } + else + { + // There is only one native priority. + if (corba_priority != 0) + return 0; + + native_priority = this->min_; + } + + return 1; + +#endif /* ACE_WIN32 */ + +} + +CORBA::Boolean +TAO_Continuous_Priority_Mapping::to_CORBA (RTCORBA::NativePriority native_priority, + RTCORBA::Priority &corba_priority) +{ + +#if defined (ACE_WIN32) + + int current_native_priority = this->min_; + for (corba_priority = 0; ; ++corba_priority) + { + if (current_native_priority == native_priority) + return 1; + + else if (current_native_priority == this->max_) + return 0; + + else + current_native_priority = + ACE_Sched_Params::next_priority (this->policy_, + current_native_priority); + } + +#else + + if (this->min_ < this->max_) + { + if (native_priority < this->min_ + || native_priority > this->max_) + return 0; + corba_priority = native_priority - this->min_; + } + else if (this->min_ > this->max_) + { + if (native_priority > this->min_ + || native_priority < this->max_) + return 0; + corba_priority = this->min_ - native_priority; + } + else if (this->min_ == this->max_) + { + if (native_priority != this->min_) + return 0; + corba_priority = 0; + } + + return 1; + +#endif /* ACE_WIN32 */ + +} diff --git a/TAO/tao/RTCORBA/Continuous_Priority_Mapping.h b/TAO/tao/RTCORBA/Continuous_Priority_Mapping.h new file mode 100644 index 00000000000..820df1379fb --- /dev/null +++ b/TAO/tao/RTCORBA/Continuous_Priority_Mapping.h @@ -0,0 +1,75 @@ +//============================================================================= +/** + * @file Continuous_Priority_Mapping.h + * + * $Id$ + * + * @author Irfan Pyarali + */ +// =================================================================== + +#ifndef TAO_CONTINUOUS_PRIORITY_MAPPING_H +#define TAO_CONTINUOUS_PRIORITY_MAPPING_H + +#include "ace/pre.h" +#include "tao/orbconf.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "rtcorba_export.h" +#include "Priority_Mapping.h" + +/** + * @class TAO_Continuous_Priority_Mapping + * + * @brief Maps the first n CORBA priorities to the range of native + * priorities, where n is the number of native priorities. + * + * The lowest native priority is mapped to CORBA priority 0, next + * higher native priority is mapped to CORBA priority 1, and so + * on. Since in all the operating systems where TAO is supported the + * native priority set contains less than 32767 priorities, part of + * the CORBA priority range is left unused. Consider NT as an + * example. NT native priorities -15 -2 -1 0 1 2 15 are mapped to + * CORBA priorities 0 1 2 3 4 5 6, respectively, and the rest of the + * CORBA priority range is not used. + * + * This class was previously called Direct_Priority_Mapping. + * + * \nosubgrouping + * + **/ +class TAO_RTCORBA_Export TAO_Continuous_Priority_Mapping + : public TAO_Priority_Mapping +{ +public: + + /// Constructor. + TAO_Continuous_Priority_Mapping (int policy = ACE_SCHED_OTHER); + + /// Destructor. + ~TAO_Continuous_Priority_Mapping (void); + + /// Convert CORBA priority to native priority. + CORBA::Boolean to_native (RTCORBA::Priority corba_priority, + RTCORBA::NativePriority &native_priority); + + /// Convert native priority to CORBA priority. + CORBA::Boolean to_CORBA (RTCORBA::NativePriority native_priority, + RTCORBA::Priority &corba_priority); + +private: + int policy_; + int min_; + int max_; +}; + +#if defined (__ACE_INLINE__) +# include "Continuous_Priority_Mapping.i" +#endif /* __ACE_INLINE__ */ + +#include "ace/post.h" + +#endif /* TAO_CONTINUOUS_PRIORITY_MAPPING_H */ diff --git a/TAO/tao/RTCORBA/Pool_Per_Endpoint.i b/TAO/tao/RTCORBA/Continuous_Priority_Mapping.i index cfa1da318d3..cfa1da318d3 100644 --- a/TAO/tao/RTCORBA/Pool_Per_Endpoint.i +++ b/TAO/tao/RTCORBA/Continuous_Priority_Mapping.i diff --git a/TAO/tao/RTCORBA/Direct_Priority_Mapping.cpp b/TAO/tao/RTCORBA/Direct_Priority_Mapping.cpp index 4018aecbf04..1e7d75265d1 100644 --- a/TAO/tao/RTCORBA/Direct_Priority_Mapping.cpp +++ b/TAO/tao/RTCORBA/Direct_Priority_Mapping.cpp @@ -11,62 +11,8 @@ ACE_RCSID(Strategies, Direct_Priority_Mapping, "$Id$") -TAO_Direct_Priority_Mapping::TAO_Direct_Priority_Mapping (int policy) - : policy_ (policy) +TAO_Direct_Priority_Mapping::TAO_Direct_Priority_Mapping (long) { - // We have special behavior for SUNs. This is because the results - // from ACE_Sched_Params::priority_min() and - // ACE_Sched_Params::priority_max() are not correct. - -#if defined (sun) - - ACE_utsname name; - ACE_OS::uname (&name); - - // If we are on Solaris 5.7. - if (ACE_OS::strcmp (name.release, "5.7") == 0) - { - if (policy == ACE_SCHED_OTHER) - { - this->min_ = 0; - this->max_ = 127; - } - else - { - this->min_ = 0; - this->max_ = 59; - } - } - // If we are on Solaris 5.8. - else if (ACE_OS::strcmp (name.release, "5.8") == 0) - { - if (policy == ACE_SCHED_OTHER) - { - this->min_ = -20; - this->max_ = 127; - } - else - { - this->min_ = 0; - this->max_ = 59; - } - } - // Not sure about the other SUN releases. Therefore, lets stick to - // the default behavior. - else - { - this->min_ = ACE_Sched_Params::priority_min (this->policy_); - this->max_ = ACE_Sched_Params::priority_max (this->policy_); - } - -#else /* sun */ - - // Other platforms should be ok. - this->min_ = ACE_Sched_Params::priority_min (this->policy_); - this->max_ = ACE_Sched_Params::priority_max (this->policy_); - -#endif /* sun */ - } TAO_Direct_Priority_Mapping::~TAO_Direct_Priority_Mapping (void) @@ -77,99 +23,14 @@ CORBA::Boolean TAO_Direct_Priority_Mapping::to_native (RTCORBA::Priority corba_priority, RTCORBA::NativePriority &native_priority) { - if (corba_priority < 0) - return 0; - -#if defined (ACE_WIN32) - - int current_native_priority = this->min_; - int next_native_priority; - for (int i = 1; i <= corba_priority; ++i) - { - next_native_priority = - ACE_Sched_Params::next_priority (this->policy_, - current_native_priority); - - if (next_native_priority == current_native_priority) - return 0; - - current_native_priority = next_native_priority; - } - - native_priority = current_native_priority; + native_priority = corba_priority; return 1; - -#else - - if (this->min_ < this->max_) - { - native_priority = corba_priority + this->min_; - if (native_priority > this->max_) - return 0; - } - else if (this->min_ > this->max_) - { - native_priority = this->min_ - corba_priority; - if (native_priority < this->max_) - return 0; - } - else - { - // There is only one native priority. - if (corba_priority != 0) - return 0; - - native_priority = this->min_; - } - - return 1; -#endif /* ACE_WIN32 */ } CORBA::Boolean TAO_Direct_Priority_Mapping::to_CORBA (RTCORBA::NativePriority native_priority, RTCORBA::Priority &corba_priority) { -#if defined (ACE_WIN32) - - int current_native_priority = this->min_; - for (corba_priority = 0; ; ++corba_priority) - { - if (current_native_priority == native_priority) - return 1; - - else if (current_native_priority == this->max_) - return 0; - - else - current_native_priority = - ACE_Sched_Params::next_priority (this->policy_, - current_native_priority); - } - -#else - if (this->min_ < this->max_) - { - if (native_priority < this->min_ - || native_priority > this->max_) - return 0; - corba_priority = native_priority - this->min_; - } - else if (this->min_ > this->max_) - { - if (native_priority > this->min_ - || native_priority < this->max_) - return 0; - corba_priority = this->min_ - native_priority; - } - else if (this->min_ == this->max_) - { - if (native_priority != this->min_) - return 0; - corba_priority = 0; - } - + corba_priority = native_priority; return 1; - -#endif /* ACE_WIN32 */ } diff --git a/TAO/tao/RTCORBA/Direct_Priority_Mapping.h b/TAO/tao/RTCORBA/Direct_Priority_Mapping.h index 91e7d635e02..640f9435927 100644 --- a/TAO/tao/RTCORBA/Direct_Priority_Mapping.h +++ b/TAO/tao/RTCORBA/Direct_Priority_Mapping.h @@ -23,7 +23,6 @@ #include "tao/orbconf.h" -#include "rtcorba_export.h" #include "Priority_Mapping.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) @@ -32,18 +31,13 @@ class TAO_RTCORBA_Export TAO_Direct_Priority_Mapping : public TAO_Priority_Mapping { - // // = TITLE // A simple implementation of the Priority_Mapping interface // // = DESCRIPTION - // This implementation uses direct mapping between the range of - // priorities for a given scheduling class (ACE_SCHED_OTHER, - // ACE_SCHED_FIFO, ACE_SCHED_RR) and the valid range of CORBA - // priorities (0...32767) - // + // This implementation uses direct mapping. public: - TAO_Direct_Priority_Mapping (int policy = ACE_SCHED_OTHER); + TAO_Direct_Priority_Mapping (long); // Default constructor virtual ~TAO_Direct_Priority_Mapping (void); @@ -57,12 +51,6 @@ public: RTCORBA::Priority &corba_priority); private: - int policy_; - // The scheduling policy - - int min_; - int max_; - // The range }; #if defined (__ACE_INLINE__) diff --git a/TAO/tao/RTCORBA/Linear_Priority_Mapping.cpp b/TAO/tao/RTCORBA/Linear_Priority_Mapping.cpp index e6fe6ff9eb6..f45c7ae3ea0 100644 --- a/TAO/tao/RTCORBA/Linear_Priority_Mapping.cpp +++ b/TAO/tao/RTCORBA/Linear_Priority_Mapping.cpp @@ -12,62 +12,11 @@ ACE_RCSID(Strategies, Linear_Priority_Mapping, "$Id$") -TAO_Linear_Priority_Mapping::TAO_Linear_Priority_Mapping (int policy) - : policy_ (policy) +TAO_Linear_Priority_Mapping::TAO_Linear_Priority_Mapping (long policy) + : policy_ (policy) { - // We have special behavior for SUNs. This is because the results - // from ACE_Sched_Params::priority_min() and - // ACE_Sched_Params::priority_max() are not correct. - -#if defined (sun) - - ACE_utsname name; - ACE_OS::uname (&name); - - // If we are on Solaris 5.7. - if (ACE_OS::strcmp (name.release, "5.7") == 0) - { - if (policy == ACE_SCHED_OTHER) - { - this->min_ = 0; - this->max_ = 127; - } - else - { - this->min_ = 0; - this->max_ = 59; - } - } - // If we are on Solaris 5.8. - else if (ACE_OS::strcmp (name.release, "5.8") == 0) - { - if (policy == ACE_SCHED_OTHER) - { - this->min_ = -20; - this->max_ = 127; - } - else - { - this->min_ = 0; - this->max_ = 59; - } - } - // Not sure about the other SUN releases. Therefore, lets stick to - // the default behavior. - else - { - this->min_ = ACE_Sched_Params::priority_min (this->policy_); - this->max_ = ACE_Sched_Params::priority_max (this->policy_); - } - -#else /* sun */ - - // Other platforms should be ok. this->min_ = ACE_Sched_Params::priority_min (this->policy_); this->max_ = ACE_Sched_Params::priority_max (this->policy_); - -#endif /* sun */ - } TAO_Linear_Priority_Mapping::~TAO_Linear_Priority_Mapping (void) @@ -78,7 +27,8 @@ CORBA::Boolean TAO_Linear_Priority_Mapping::to_native (RTCORBA::Priority corba_priority, RTCORBA::NativePriority &native_priority) { - if (corba_priority < 0 || corba_priority > RTCORBA::maxPriority) + if (corba_priority < RTCORBA::minPriority || + corba_priority > RTCORBA::maxPriority) return 0; #if defined (ACE_WIN32) diff --git a/TAO/tao/RTCORBA/Linear_Priority_Mapping.h b/TAO/tao/RTCORBA/Linear_Priority_Mapping.h index 9428f7af1fe..059c2534560 100644 --- a/TAO/tao/RTCORBA/Linear_Priority_Mapping.h +++ b/TAO/tao/RTCORBA/Linear_Priority_Mapping.h @@ -43,7 +43,7 @@ class TAO_RTCORBA_Export TAO_Linear_Priority_Mapping : public TAO_Priority_Mappi // priorities (0...32767) // public: - TAO_Linear_Priority_Mapping (int policy = ACE_SCHED_OTHER); + TAO_Linear_Priority_Mapping (long policy); // Default constructor virtual ~TAO_Linear_Priority_Mapping (void); @@ -57,7 +57,7 @@ public: RTCORBA::Priority &corba_priority); private: - int policy_; + long policy_; // The scheduling policy int min_; diff --git a/TAO/tao/RTCORBA/Makefile b/TAO/tao/RTCORBA/Makefile index 6da92e6a08e..a7ecb4e2694 100644 --- a/TAO/tao/RTCORBA/Makefile +++ b/TAO/tao/RTCORBA/Makefile @@ -25,9 +25,10 @@ ifeq ($(corba_messaging),1) CPP_SRCS += \ + Continuous_Priority_Mapping \ Direct_Priority_Mapping \ Linear_Priority_Mapping \ - Pool_Per_Endpoint \ + RT_Thread_Lane_Resources_Manager \ Priority_Mapping \ Priority_Mapping_Manager \ Private_Transport_Descriptor \ @@ -84,6 +85,157 @@ endif # corba_messaging # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. +.obj/Continuous_Priority_Mapping.o .obj/Continuous_Priority_Mapping.so .shobj/Continuous_Priority_Mapping.o .shobj/Continuous_Priority_Mapping.so: Continuous_Priority_Mapping.cpp \ + Continuous_Priority_Mapping.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_export.h \ + $(ACE_ROOT)/ace/svc_export.h \ + $(ACE_ROOT)/ace/ace_wchar.h \ + $(ACE_ROOT)/ace/ace_wchar.inl \ + $(ACE_ROOT)/ace/OS_Errno.h \ + $(ACE_ROOT)/ace/OS_Export.h \ + $(ACE_ROOT)/ace/OS_Errno.inl \ + $(ACE_ROOT)/ace/OS_Dirent.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 \ + rtcorba_export.h Priority_Mapping.h RTCORBAC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/TAO_Export.h \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Base.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/Flag_Manip.h \ + $(ACE_ROOT)/ace/Flag_Manip.i \ + $(ACE_ROOT)/ace/Handle_Ops.h \ + $(ACE_ROOT)/ace/Handle_Ops.i \ + $(ACE_ROOT)/ace/Lib_Find.h \ + $(ACE_ROOT)/ace/Lib_Find.i \ + $(ACE_ROOT)/ace/Init_ACE.h \ + $(ACE_ROOT)/ace/Init_ACE.i \ + $(ACE_ROOT)/ace/Sock_Connect.h \ + $(ACE_ROOT)/ace/Sock_Connect.i \ + $(ACE_ROOT)/ace/ACE.i \ + $(ACE_ROOT)/ace/Malloc.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/OS_Log_Msg_Attributes.h \ + $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \ + $(ACE_ROOT)/ace/Malloc.i \ + $(ACE_ROOT)/ace/Malloc_T.h \ + $(ACE_ROOT)/ace/Synch.h \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread_Adapter.h \ + $(ACE_ROOT)/ace/Base_Thread_Adapter.h \ + $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \ + $(ACE_ROOT)/ace/Thread_Adapter.inl \ + $(ACE_ROOT)/ace/Thread.i \ + $(ACE_ROOT)/ace/Atomic_Op.i \ + $(ACE_ROOT)/ace/Synch_T.cpp \ + $(ACE_ROOT)/ace/Malloc_Allocator.h \ + $(ACE_ROOT)/ace/Malloc_Base.h \ + $(ACE_ROOT)/ace/Malloc_Allocator.i \ + $(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/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Signal.h \ + $(ACE_ROOT)/ace/Signal.i \ + $(ACE_ROOT)/ace/Mem_Map.h \ + $(ACE_ROOT)/ace/Mem_Map.i \ + $(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/Unbounded_Set.h \ + $(ACE_ROOT)/ace/Node.h \ + $(ACE_ROOT)/ace/Node.cpp \ + $(ACE_ROOT)/ace/Unbounded_Set.inl \ + $(ACE_ROOT)/ace/Unbounded_Set.cpp \ + $(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/CDR_Base.inl \ + $(TAO_ROOT)/tao/try_macros.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/varbase.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/CDR_Stream.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_Proxy_Broker.h \ + $(TAO_ROOT)/tao/Object_Proxy_Impl.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(ACE_ROOT)/ace/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/Any.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/IOPC.i \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.h \ + $(TAO_ROOT)/tao/SmartProxies/smartproxies_export.h \ + $(TAO_ROOT)/tao/TAO_Singleton.h \ + $(TAO_ROOT)/tao/TAO_Singleton.inl \ + $(TAO_ROOT)/tao/TAO_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 \ + $(TAO_ROOT)/tao/TAO_Singleton_Manager.h \ + $(TAO_ROOT)/tao/TAO_Singleton_Manager.inl \ + $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.inl \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/Encodable.h \ + $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + RTCORBAC.i Priority_Mapping.i Continuous_Priority_Mapping.i \ + $(ACE_ROOT)/ace/Sched_Params.h \ + $(ACE_ROOT)/ace/Sched_Params.i + .obj/Direct_Priority_Mapping.o .obj/Direct_Priority_Mapping.so .shobj/Direct_Priority_Mapping.o .shobj/Direct_Priority_Mapping.so: Direct_Priority_Mapping.cpp \ $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/pre.h \ @@ -110,8 +262,8 @@ endif # corba_messaging $(ACE_ROOT)/ace/Basic_Types.i \ $(ACE_ROOT)/ace/Trace.h \ $(ACE_ROOT)/ace/OS.i \ - Direct_Priority_Mapping.h rtcorba_export.h Priority_Mapping.h \ - RTCORBAC.h \ + Direct_Priority_Mapping.h Priority_Mapping.h RTCORBAC.h \ + rtcorba_export.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/TAO_Export.h \ $(TAO_ROOT)/tao/Any.h \ @@ -387,9 +539,11 @@ endif # corba_messaging $(ACE_ROOT)/ace/Sched_Params.h \ $(ACE_ROOT)/ace/Sched_Params.i -.obj/Pool_Per_Endpoint.o .obj/Pool_Per_Endpoint.so .shobj/Pool_Per_Endpoint.o .shobj/Pool_Per_Endpoint.so: Pool_Per_Endpoint.cpp Pool_Per_Endpoint.h \ +.obj/RT_Thread_Lane_Resources_Manager.o .obj/RT_Thread_Lane_Resources_Manager.so .shobj/RT_Thread_Lane_Resources_Manager.o .shobj/RT_Thread_Lane_Resources_Manager.so: RT_Thread_Lane_Resources_Manager.cpp \ + $(TAO_ROOT)/tao/RTCORBA/RT_Thread_Lane_Resources_Manager.h \ $(ACE_ROOT)/ace/pre.h \ - rtcorba_export.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/post.h \ $(ACE_ROOT)/ace/ACE_export.h \ $(ACE_ROOT)/ace/svc_export.h \ @@ -398,14 +552,6 @@ endif # corba_messaging $(ACE_ROOT)/ace/OS_Errno.h \ $(ACE_ROOT)/ace/OS_Export.h \ $(ACE_ROOT)/ace/OS_Errno.inl \ - $(TAO_ROOT)/tao/ORB.h \ - $(TAO_ROOT)/tao/corbafwd.h \ - $(ACE_ROOT)/ace/CDR_Base.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/OS_Dirent.h \ $(ACE_ROOT)/ace/OS_Dirent.inl \ $(ACE_ROOT)/ace/OS_String.h \ @@ -416,8 +562,16 @@ endif # corba_messaging $(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/RTCORBA/rtcorba_export.h \ + $(TAO_ROOT)/tao/Thread_Lane_Resources_Manager.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Base.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/Flag_Manip.h \ $(ACE_ROOT)/ace/Flag_Manip.i \ $(ACE_ROOT)/ace/Handle_Ops.h \ @@ -481,14 +635,39 @@ endif # corba_messaging $(ACE_ROOT)/ace/Message_Block_T.cpp \ $(ACE_ROOT)/ace/CDR_Base.inl \ $(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/TAO_Export.h \ $(TAO_ROOT)/tao/corbafwd.i \ - $(TAO_ROOT)/tao/Exception.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 \ + $(TAO_ROOT)/tao/Thread_Lane_Resources_Manager.i \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(ACE_ROOT)/ace/Unbounded_Queue.h \ + $(ACE_ROOT)/ace/Unbounded_Queue.inl \ + $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ $(ACE_ROOT)/ace/SString.h \ $(ACE_ROOT)/ace/SString.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/Test_and_Set.h \ + $(ACE_ROOT)/ace/Test_and_Set.i \ + $(ACE_ROOT)/ace/Test_and_Set.cpp \ + $(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/RTCORBA/RT_Thread_Lane_Resources_Manager.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ $(TAO_ROOT)/tao/Services.h \ $(TAO_ROOT)/tao/Sequence.h \ @@ -518,88 +697,6 @@ endif # corba_messaging $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/ORB.i \ - $(ACE_ROOT)/ace/Task.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/Thread_Manager.h \ - $(ACE_ROOT)/ace/Unbounded_Queue.h \ - $(ACE_ROOT)/ace/Unbounded_Queue.inl \ - $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Array_Base.h \ - $(ACE_ROOT)/ace/Array_Base.inl \ - $(ACE_ROOT)/ace/Array_Base.cpp \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Singleton.h \ - $(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/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.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_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/Test_and_Set.h \ - $(ACE_ROOT)/ace/Test_and_Set.i \ - $(ACE_ROOT)/ace/Test_and_Set.cpp \ - $(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/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/Process_Mutex.h \ - $(ACE_ROOT)/ace/Process_Mutex.inl \ - $(ACE_ROOT)/ace/WFMO_Reactor.i \ - $(ACE_ROOT)/ace/Strategies.i \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(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 \ - Pool_Per_Endpoint.i \ - $(TAO_ROOT)/tao/ORB_Core.h \ $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/Policy_Set.h \ $(TAO_ROOT)/tao/Policy_Set.i \ @@ -624,6 +721,11 @@ endif # corba_messaging $(TAO_ROOT)/tao/TAO_Singleton.h \ $(TAO_ROOT)/tao/TAO_Singleton.inl \ $(TAO_ROOT)/tao/TAO_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 \ $(TAO_ROOT)/tao/Adapter.h \ $(TAO_ROOT)/tao/Adapter.i \ $(TAO_ROOT)/tao/PolicyFactory_Registry.h \ @@ -654,18 +756,84 @@ endif # corba_messaging $(TAO_ROOT)/tao/Fault_Tolerance_Service.h \ $(TAO_ROOT)/tao/Fault_Tolerance_Service.i \ $(TAO_ROOT)/tao/Cleanup_Func_Registry.h \ + $(ACE_ROOT)/ace/Array_Base.h \ + $(ACE_ROOT)/ace/Array_Base.inl \ + $(ACE_ROOT)/ace/Array_Base.cpp \ $(TAO_ROOT)/tao/Cleanup_Func_Registry.inl \ $(TAO_ROOT)/tao/Object_Ref_Table.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.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.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ $(TAO_ROOT)/tao/Interceptor_List.h \ $(TAO_ROOT)/tao/Interceptor_List.inl \ $(TAO_ROOT)/tao/Protocols_Hooks.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Thread_Manager.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/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(ACE_ROOT)/ace/Thread_Manager.i \ $(TAO_ROOT)/tao/ORB_Core.i \ $(TAO_ROOT)/tao/Acceptor_Registry.h \ $(TAO_ROOT)/tao/Acceptor_Registry.i \ - Priority_Mapping_Manager.h Priority_Mapping.h RTCORBAC.h RTCORBAC.i \ - Priority_Mapping.i Priority_Mapping_Manager.i \ - $(ACE_ROOT)/ace/Sched_Params.h \ - $(ACE_ROOT)/ace/Sched_Params.i + $(TAO_ROOT)/tao/Thread_Lane_Resources.h \ + $(TAO_ROOT)/tao/Thread_Lane_Resources.i \ + $(TAO_ROOT)/tao/RTCORBA/Thread_Pool.h \ + $(TAO_ROOT)/tao/RTCORBA/RTCORBAC.h \ + $(TAO_ROOT)/tao/RTCORBA/RTCORBAC.i \ + $(TAO_ROOT)/tao/New_Leader_Generator.h \ + $(ACE_ROOT)/ace/Task.h \ + $(ACE_ROOT)/ace/Task.i \ + $(ACE_ROOT)/ace/Task_T.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/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/Process_Mutex.h \ + $(ACE_ROOT)/ace/Process_Mutex.inl \ + $(ACE_ROOT)/ace/WFMO_Reactor.i \ + $(ACE_ROOT)/ace/Strategies.i \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(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 \ + $(TAO_ROOT)/tao/RTCORBA/Thread_Pool.i \ + $(TAO_ROOT)/tao/Leader_Follower.h \ + $(TAO_ROOT)/tao/LF_Follower.h \ + $(ACE_ROOT)/ace/Intrusive_List_Node.h \ + $(ACE_ROOT)/ace/Intrusive_List_Node.inl \ + $(ACE_ROOT)/ace/Intrusive_List_Node.cpp \ + $(TAO_ROOT)/tao/LF_Follower.inl \ + $(ACE_ROOT)/ace/Intrusive_List.h \ + $(ACE_ROOT)/ace/Intrusive_List.inl \ + $(ACE_ROOT)/ace/Intrusive_List.cpp \ + $(TAO_ROOT)/tao/Leader_Follower.i .obj/Priority_Mapping.o .obj/Priority_Mapping.so .shobj/Priority_Mapping.o .shobj/Priority_Mapping.so: Priority_Mapping.cpp \ $(TAO_ROOT)/tao/orbconf.h \ @@ -1220,12 +1388,10 @@ endif # corba_messaging $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.i \ RTCORBAC.i RT_ORB_Loader.h \ - $(TAO_ROOT)/tao/Object_Loader.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 \ - $(TAO_ROOT)/tao/Object_Loader.i \ $(ACE_ROOT)/ace/Service_Config.h \ $(ACE_ROOT)/ace/Unbounded_Queue.h \ $(ACE_ROOT)/ace/Unbounded_Queue.inl \ @@ -1243,13 +1409,7 @@ endif # corba_messaging $(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 \ - RT_Protocols_Hooks.h \ - $(TAO_ROOT)/tao/Protocols_Hooks.h \ - Priority_Mapping_Manager.h Priority_Mapping.h Priority_Mapping.i \ - $(TAO_ROOT)/tao/LocalObject.h \ - $(TAO_ROOT)/tao/LocalObject.i \ - Priority_Mapping_Manager.i RT_Protocols_Hooks.i + $(ACE_ROOT)/ace/Svc_Conf_Tokens.h .obj/RTCORBAC.o .obj/RTCORBAC.so .shobj/RTCORBAC.o .shobj/RTCORBAC.so: RTCORBAC.cpp RTCORBAC.h \ $(ACE_ROOT)/ace/pre.h \ @@ -1558,8 +1718,12 @@ endif # corba_messaging $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/OS.i RTCORBA.h \ + $(ACE_ROOT)/ace/OS.i RTCORBAC.h \ rtcorba_export.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/TAO_Export.h \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/corbafwd.h \ $(ACE_ROOT)/ace/CDR_Base.h \ $(ACE_ROOT)/ace/Message_Block.h \ @@ -1629,12 +1793,7 @@ endif # corba_messaging $(TAO_ROOT)/tao/try_macros.h \ $(ACE_ROOT)/ace/CORBA_macros.h \ $(TAO_ROOT)/tao/varbase.h \ - $(TAO_ROOT)/tao/TAO_Export.h \ $(TAO_ROOT)/tao/corbafwd.i \ - RTCORBAC.h \ - $(TAO_ROOT)/tao/IOPC.h \ - $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/CDR.h \ $(ACE_ROOT)/ace/CDR_Stream.h \ $(ACE_ROOT)/ace/CDR_Stream.i \ $(TAO_ROOT)/tao/CDR.i \ @@ -2620,7 +2779,7 @@ endif # corba_messaging $(TAO_ROOT)/tao/target_specification.i \ $(TAO_ROOT)/tao/operation_details.i \ $(TAO_ROOT)/tao/Invocation.i \ - RT_Policy_i.h RTCORBA.h RTCORBAC.h RTCORBAC.i RT_Policy_i.i \ + RT_Policy_i.h RTCORBAC.h RTCORBAC.i RT_Policy_i.i \ $(TAO_ROOT)/tao/Endpoint.h \ $(TAO_ROOT)/tao/Endpoint.i \ RT_Stub.h Private_Transport_Descriptor.h \ @@ -2658,8 +2817,12 @@ endif # corba_messaging $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/OS.i RTCORBA.h \ + $(ACE_ROOT)/ace/OS.i RTCORBAC.h \ rtcorba_export.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/TAO_Export.h \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/corbafwd.h \ $(ACE_ROOT)/ace/CDR_Base.h \ $(ACE_ROOT)/ace/Message_Block.h \ @@ -2729,12 +2892,7 @@ endif # corba_messaging $(TAO_ROOT)/tao/try_macros.h \ $(ACE_ROOT)/ace/CORBA_macros.h \ $(TAO_ROOT)/tao/varbase.h \ - $(TAO_ROOT)/tao/TAO_Export.h \ $(TAO_ROOT)/tao/corbafwd.i \ - RTCORBAC.h \ - $(TAO_ROOT)/tao/IOPC.h \ - $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/CDR.h \ $(ACE_ROOT)/ace/CDR_Stream.h \ $(ACE_ROOT)/ace/CDR_Stream.i \ $(TAO_ROOT)/tao/CDR.i \ @@ -2783,38 +2941,23 @@ endif # corba_messaging RTCORBAC.i \ $(TAO_ROOT)/tao/LocalObject.h \ $(TAO_ROOT)/tao/LocalObject.i \ - RT_ORB.h Thread_Pool.h \ - $(ACE_ROOT)/ace/Task.h \ + RT_ORB.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.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.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/Thread_Manager.h \ $(ACE_ROOT)/ace/Unbounded_Queue.h \ $(ACE_ROOT)/ace/Unbounded_Queue.inl \ $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Array_Base.h \ - $(ACE_ROOT)/ace/Array_Base.inl \ - $(ACE_ROOT)/ace/Array_Base.cpp \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Singleton.cpp \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.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_Config.i \ $(ACE_ROOT)/ace/Reactor.h \ $(ACE_ROOT)/ace/Handle_Set.h \ @@ -2829,43 +2972,7 @@ endif # corba_messaging $(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/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/Process_Mutex.h \ - $(ACE_ROOT)/ace/Process_Mutex.inl \ - $(ACE_ROOT)/ace/WFMO_Reactor.i \ - $(ACE_ROOT)/ace/Strategies.i \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(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 \ - $(TAO_ROOT)/tao/ORB.h \ - $(TAO_ROOT)/tao/Services.h \ - $(TAO_ROOT)/tao/Services.i \ - $(TAO_ROOT)/tao/CORBA_String.h \ - $(TAO_ROOT)/tao/CORBA_String.inl \ - $(TAO_ROOT)/tao/ORB.i \ - Thread_Pool.i RT_ORB.i + RT_ORB.i .obj/RT_ORB.o .obj/RT_ORB.so .shobj/RT_ORB.o .shobj/RT_ORB.so: RT_ORB.cpp RT_ORB.h \ $(ACE_ROOT)/ace/pre.h \ @@ -2892,8 +2999,12 @@ endif # corba_messaging $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/OS.i RTCORBA.h \ + $(ACE_ROOT)/ace/OS.i RTCORBAC.h \ rtcorba_export.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/TAO_Export.h \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/corbafwd.h \ $(ACE_ROOT)/ace/CDR_Base.h \ $(ACE_ROOT)/ace/Message_Block.h \ @@ -2963,12 +3074,7 @@ endif # corba_messaging $(TAO_ROOT)/tao/try_macros.h \ $(ACE_ROOT)/ace/CORBA_macros.h \ $(TAO_ROOT)/tao/varbase.h \ - $(TAO_ROOT)/tao/TAO_Export.h \ $(TAO_ROOT)/tao/corbafwd.i \ - RTCORBAC.h \ - $(TAO_ROOT)/tao/IOPC.h \ - $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/CDR.h \ $(ACE_ROOT)/ace/CDR_Stream.h \ $(ACE_ROOT)/ace/CDR_Stream.i \ $(TAO_ROOT)/tao/CDR.i \ @@ -3017,38 +3123,22 @@ endif # corba_messaging RTCORBAC.i \ $(TAO_ROOT)/tao/LocalObject.h \ $(TAO_ROOT)/tao/LocalObject.i \ - Thread_Pool.h \ - $(ACE_ROOT)/ace/Task.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.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.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/Thread_Manager.h \ $(ACE_ROOT)/ace/Unbounded_Queue.h \ $(ACE_ROOT)/ace/Unbounded_Queue.inl \ $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Array_Base.h \ - $(ACE_ROOT)/ace/Array_Base.inl \ - $(ACE_ROOT)/ace/Array_Base.cpp \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Singleton.cpp \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.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_Config.i \ $(ACE_ROOT)/ace/Reactor.h \ $(ACE_ROOT)/ace/Handle_Set.h \ @@ -3063,46 +3153,16 @@ endif # corba_messaging $(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/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/Process_Mutex.h \ - $(ACE_ROOT)/ace/Process_Mutex.inl \ - $(ACE_ROOT)/ace/WFMO_Reactor.i \ - $(ACE_ROOT)/ace/Strategies.i \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(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 \ + RT_ORB.i RT_Policy_i.h RT_Policy_i.i RT_Mutex.h \ + Priority_Mapping_Manager.h Priority_Mapping.h Priority_Mapping.i \ + Priority_Mapping_Manager.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ $(TAO_ROOT)/tao/ORB.h \ $(TAO_ROOT)/tao/Services.h \ $(TAO_ROOT)/tao/Services.i \ $(TAO_ROOT)/tao/CORBA_String.h \ $(TAO_ROOT)/tao/CORBA_String.inl \ $(TAO_ROOT)/tao/ORB.i \ - Thread_Pool.i RT_ORB.i RT_Policy_i.h RT_Policy_i.i RT_Mutex.h \ - Priority_Mapping_Manager.h Priority_Mapping.h Priority_Mapping.i \ - Priority_Mapping_Manager.i \ - $(TAO_ROOT)/tao/ORB_Core.h \ $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/Policy_Set.h \ $(TAO_ROOT)/tao/Policy_Set.i \ @@ -3139,12 +3199,68 @@ endif # corba_messaging $(TAO_ROOT)/tao/Fault_Tolerance_Service.h \ $(TAO_ROOT)/tao/Fault_Tolerance_Service.i \ $(TAO_ROOT)/tao/Cleanup_Func_Registry.h \ + $(ACE_ROOT)/ace/Array_Base.h \ + $(ACE_ROOT)/ace/Array_Base.inl \ + $(ACE_ROOT)/ace/Array_Base.cpp \ $(TAO_ROOT)/tao/Cleanup_Func_Registry.inl \ $(TAO_ROOT)/tao/Object_Ref_Table.h \ $(TAO_ROOT)/tao/Interceptor_List.h \ $(TAO_ROOT)/tao/Interceptor_List.inl \ $(TAO_ROOT)/tao/Protocols_Hooks.h \ - $(TAO_ROOT)/tao/ORB_Core.i + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Thread_Manager.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/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(ACE_ROOT)/ace/Thread_Manager.i \ + $(TAO_ROOT)/tao/ORB_Core.i \ + $(TAO_ROOT)/tao/RTCORBA/Thread_Pool.h \ + $(TAO_ROOT)/tao/RTCORBA/RTCORBAC.h \ + $(TAO_ROOT)/tao/Thread_Lane_Resources.h \ + $(TAO_ROOT)/tao/Thread_Lane_Resources.i \ + $(TAO_ROOT)/tao/New_Leader_Generator.h \ + $(ACE_ROOT)/ace/Task.h \ + $(ACE_ROOT)/ace/Task.i \ + $(ACE_ROOT)/ace/Task_T.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/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/Process_Mutex.h \ + $(ACE_ROOT)/ace/Process_Mutex.inl \ + $(ACE_ROOT)/ace/WFMO_Reactor.i \ + $(ACE_ROOT)/ace/Strategies.i \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(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 \ + $(TAO_ROOT)/tao/RTCORBA/Thread_Pool.i \ + $(TAO_ROOT)/tao/RTCORBA/RT_Thread_Lane_Resources_Manager.h \ + $(TAO_ROOT)/tao/RTCORBA/rtcorba_export.h \ + $(TAO_ROOT)/tao/Thread_Lane_Resources_Manager.h \ + $(TAO_ROOT)/tao/Thread_Lane_Resources_Manager.i \ + $(TAO_ROOT)/tao/RTCORBA/RT_Thread_Lane_Resources_Manager.i .obj/RT_ORBInitializer.o .obj/RT_ORBInitializer.so .shobj/RT_ORBInitializer.o .shobj/RT_ORBInitializer.so: RT_ORBInitializer.cpp RT_ORBInitializer.h \ $(ACE_ROOT)/ace/pre.h \ @@ -3306,8 +3422,11 @@ endif # corba_messaging $(TAO_ROOT)/tao/PortableInterceptorC.i \ $(TAO_ROOT)/tao/LocalObject.h \ $(TAO_ROOT)/tao/LocalObject.i \ - RT_PolicyFactory.h RTCORBA.h RTCORBAC.h RTCORBAC.i RT_Policy_i.h \ - RT_Policy_i.i RT_Protocols_Hooks.h \ + RT_PolicyFactory.h \ + $(TAO_ROOT)/tao/RTCORBA/RTCORBAC.h \ + $(TAO_ROOT)/tao/RTCORBA/rtcorba_export.h \ + $(TAO_ROOT)/tao/RTCORBA/RTCORBAC.i \ + RT_Policy_i.h RTCORBAC.h RT_Policy_i.i RT_Protocols_Hooks.h \ $(TAO_ROOT)/tao/Protocols_Hooks.h \ $(ACE_ROOT)/ace/Service_Object.h \ $(ACE_ROOT)/ace/Shared_Object.h \ @@ -3396,48 +3515,21 @@ endif # corba_messaging $(TAO_ROOT)/tao/StringSeqC.h \ $(TAO_ROOT)/tao/StringSeqC.i \ $(TAO_ROOT)/tao/ORBInitInfo.inl \ - RT_ORB_Loader.h \ - $(TAO_ROOT)/tao/Object_Loader.h \ - $(TAO_ROOT)/tao/Object_Loader.i \ - RT_Stub_Factory.h \ + RT_ORB_Loader.h RT_Stub_Factory.h \ $(TAO_ROOT)/tao/Stub_Factory.h \ RT_Endpoint_Selector_Factory.h \ $(TAO_ROOT)/tao/Endpoint_Selector_Factory.h \ + Continuous_Priority_Mapping.h Continuous_Priority_Mapping.i \ Linear_Priority_Mapping.h Linear_Priority_Mapping.i \ - Direct_Priority_Mapping.h Direct_Priority_Mapping.i RT_ORB.h \ - Thread_Pool.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.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/Strategies_T.i \ - $(ACE_ROOT)/ace/Strategies_T.cpp \ + Direct_Priority_Mapping.h Direct_Priority_Mapping.i RT_ORB.h RT_ORB.i \ + RT_Current.h RT_Current.i RT_Thread_Lane_Resources_Manager.h \ + $(TAO_ROOT)/tao/Thread_Lane_Resources_Manager.h \ + $(TAO_ROOT)/tao/Thread_Lane_Resources_Manager.i \ + $(TAO_ROOT)/tao/RTCORBA/RT_Thread_Lane_Resources_Manager.i \ $(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/Process_Mutex.h \ - $(ACE_ROOT)/ace/Process_Mutex.inl \ - $(ACE_ROOT)/ace/WFMO_Reactor.i \ - $(ACE_ROOT)/ace/Strategies.i \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(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 \ - Thread_Pool.i RT_ORB.i RT_Current.h RT_Current.i \ $(ACE_ROOT)/ace/Svc_Conf.h \ $(ACE_ROOT)/ace/Obstack.h \ $(ACE_ROOT)/ace/Obstack_T.h \ @@ -3460,13 +3552,8 @@ endif # corba_messaging $(ACE_ROOT)/ace/OS_Errno.h \ $(ACE_ROOT)/ace/OS_Export.h \ $(ACE_ROOT)/ace/OS_Errno.inl \ - $(TAO_ROOT)/tao/Object_Loader.h \ - $(TAO_ROOT)/tao/Exception.h \ - $(TAO_ROOT)/tao/corbafwd.h \ - $(ACE_ROOT)/ace/CDR_Base.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/OS_Dirent.h \ @@ -3479,6 +3566,8 @@ endif # corba_messaging $(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/Flag_Manip.h \ @@ -3492,15 +3581,12 @@ endif # corba_messaging $(ACE_ROOT)/ace/Sock_Connect.h \ $(ACE_ROOT)/ace/Sock_Connect.i \ $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Malloc.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/OS_Log_Msg_Attributes.h \ - $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(ACE_ROOT)/ace/Signal.h \ $(ACE_ROOT)/ace/Synch.h \ $(ACE_ROOT)/ace/Synch.i \ $(ACE_ROOT)/ace/Synch_T.h \ @@ -3508,35 +3594,64 @@ endif # corba_messaging $(ACE_ROOT)/ace/Thread.h \ $(ACE_ROOT)/ace/Thread_Adapter.h \ $(ACE_ROOT)/ace/Base_Thread_Adapter.h \ + $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \ + $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \ $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \ $(ACE_ROOT)/ace/Thread_Adapter.inl \ $(ACE_ROOT)/ace/Thread.i \ $(ACE_ROOT)/ace/Atomic_Op.i \ $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Malloc_Allocator.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/Signal.i \ + $(ACE_ROOT)/ace/Unbounded_Queue.h \ + $(ACE_ROOT)/ace/Node.h \ + $(ACE_ROOT)/ace/Node.cpp \ + $(ACE_ROOT)/ace/Unbounded_Queue.inl \ + $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc_Allocator.i \ + $(ACE_ROOT)/ace/Unbounded_Set.h \ + $(ACE_ROOT)/ace/Unbounded_Set.inl \ + $(ACE_ROOT)/ace/Unbounded_Set.cpp \ + $(ACE_ROOT)/ace/SString.h \ + $(ACE_ROOT)/ace/SString.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/Free_List.h \ $(ACE_ROOT)/ace/Free_List.i \ $(ACE_ROOT)/ace/Free_List.cpp \ + $(ACE_ROOT)/ace/Test_and_Set.h \ + $(ACE_ROOT)/ace/Test_and_Set.i \ + $(ACE_ROOT)/ace/Test_and_Set.cpp \ + $(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 \ + RT_ORBInitializer.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Base.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/Malloc.h \ + $(ACE_ROOT)/ace/Malloc.i \ + $(ACE_ROOT)/ace/Malloc_T.h \ + $(ACE_ROOT)/ace/Malloc_Allocator.h \ + $(ACE_ROOT)/ace/Malloc_Allocator.i \ $(ACE_ROOT)/ace/Malloc_T.i \ $(ACE_ROOT)/ace/Malloc_T.cpp \ $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ $(ACE_ROOT)/ace/Mem_Map.h \ $(ACE_ROOT)/ace/Mem_Map.i \ $(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/Unbounded_Set.h \ - $(ACE_ROOT)/ace/Node.h \ - $(ACE_ROOT)/ace/Node.cpp \ - $(ACE_ROOT)/ace/Unbounded_Set.inl \ - $(ACE_ROOT)/ace/Unbounded_Set.cpp \ $(ACE_ROOT)/ace/Memory_Pool.i \ $(ACE_ROOT)/ace/Message_Block.i \ $(ACE_ROOT)/ace/Message_Block_T.h \ @@ -3549,33 +3664,6 @@ endif # corba_messaging $(TAO_ROOT)/tao/varbase.h \ $(TAO_ROOT)/tao/TAO_Export.h \ $(TAO_ROOT)/tao/corbafwd.i \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i \ - $(TAO_ROOT)/tao/Exception.i \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(TAO_ROOT)/tao/Object_Loader.i \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Unbounded_Queue.h \ - $(ACE_ROOT)/ace/Unbounded_Queue.inl \ - $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ - $(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/Test_and_Set.h \ - $(ACE_ROOT)/ace/Test_and_Set.i \ - $(ACE_ROOT)/ace/Test_and_Set.cpp \ - $(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 \ - RT_ORBInitializer.h \ $(TAO_ROOT)/tao/PortableInterceptorC.h \ $(TAO_ROOT)/tao/DynamicC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -3590,6 +3678,8 @@ endif # corba_messaging $(TAO_ROOT)/tao/Object_Proxy_Impl.h \ $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ $(TAO_ROOT)/tao/Typecode.i \ $(TAO_ROOT)/tao/Any.i \ $(TAO_ROOT)/tao/Sequence.h \ @@ -3857,7 +3947,7 @@ endif # corba_messaging $(TAO_ROOT)/tao/PortableInterceptorC.i \ $(TAO_ROOT)/tao/LocalObject.h \ $(TAO_ROOT)/tao/LocalObject.i \ - RT_Policy_i.h RTCORBA.h RTCORBAC.h RTCORBAC.i RT_Policy_i.i + RT_Policy_i.h RTCORBAC.h RTCORBAC.i RT_Policy_i.i .obj/RT_Policy_i.o .obj/RT_Policy_i.so .shobj/RT_Policy_i.o .shobj/RT_Policy_i.so: RT_Policy_i.cpp RT_Policy_i.h \ $(ACE_ROOT)/ace/pre.h \ @@ -3884,8 +3974,12 @@ endif # corba_messaging $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/OS.i RTCORBA.h \ + $(ACE_ROOT)/ace/OS.i RTCORBAC.h \ rtcorba_export.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/TAO_Export.h \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/corbafwd.h \ $(ACE_ROOT)/ace/CDR_Base.h \ $(ACE_ROOT)/ace/Message_Block.h \ @@ -3955,12 +4049,7 @@ endif # corba_messaging $(TAO_ROOT)/tao/try_macros.h \ $(ACE_ROOT)/ace/CORBA_macros.h \ $(TAO_ROOT)/tao/varbase.h \ - $(TAO_ROOT)/tao/TAO_Export.h \ $(TAO_ROOT)/tao/corbafwd.i \ - RTCORBAC.h \ - $(TAO_ROOT)/tao/IOPC.h \ - $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/CDR.h \ $(ACE_ROOT)/ace/CDR_Stream.h \ $(ACE_ROOT)/ace/CDR_Stream.i \ $(TAO_ROOT)/tao/CDR.i \ @@ -4278,7 +4367,7 @@ endif # corba_messaging $(ACE_ROOT)/ace/Reactor.i \ $(ACE_ROOT)/ace/Reactor_Impl.h \ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - RT_Protocols_Hooks.i RT_Policy_i.h RTCORBA.h RT_Policy_i.i \ + RT_Protocols_Hooks.i RT_Policy_i.h RT_Policy_i.i \ $(TAO_ROOT)/tao/Invocation.h \ $(TAO_ROOT)/tao/Stub.h \ $(TAO_ROOT)/tao/Pluggable.h \ @@ -4380,6 +4469,10 @@ endif # corba_messaging $(TAO_ROOT)/tao/Invocation_Endpoint_Selectors.h \ $(TAO_ROOT)/tao/Invocation_Endpoint_Selectors.i \ $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/Acceptor_Registry.h \ + $(TAO_ROOT)/tao/Acceptor_Registry.i \ + $(TAO_ROOT)/tao/Thread_Lane_Resources.h \ + $(TAO_ROOT)/tao/Thread_Lane_Resources.i \ RT_Stub.h \ $(ACE_ROOT)/ace/Dynamic_Service.h \ $(ACE_ROOT)/ace/Dynamic_Service_Base.h \ @@ -4638,8 +4731,7 @@ endif # corba_messaging $(ACE_ROOT)/ace/Thread_Manager.i \ $(TAO_ROOT)/tao/ORB_Core.i \ $(TAO_ROOT)/tao/Stub.i \ - rtcorba_export.h RT_Policy_i.h RTCORBA.h RTCORBAC.h RTCORBAC.i \ - RT_Policy_i.i + rtcorba_export.h RT_Policy_i.h RTCORBAC.h RTCORBAC.i RT_Policy_i.i .obj/RT_Stub_Factory.o .obj/RT_Stub_Factory.so .shobj/RT_Stub_Factory.o .shobj/RT_Stub_Factory.so: RT_Stub_Factory.cpp RT_Stub_Factory.h \ $(ACE_ROOT)/ace/pre.h \ @@ -4922,10 +5014,15 @@ endif # corba_messaging $(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/Task.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/OS.i RTCORBAC.h \ + rtcorba_export.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/TAO_Export.h \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Base.h \ + $(ACE_ROOT)/ace/Message_Block.h \ $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/Flag_Manip.h \ $(ACE_ROOT)/ace/Flag_Manip.i \ @@ -4938,70 +5035,38 @@ endif # corba_messaging $(ACE_ROOT)/ace/Sock_Connect.h \ $(ACE_ROOT)/ace/Sock_Connect.i \ $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread_Adapter.h \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.h \ + $(ACE_ROOT)/ace/Malloc.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/OS_Log_Msg_Attributes.h \ $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread.i \ + $(ACE_ROOT)/ace/Malloc.i \ + $(ACE_ROOT)/ace/Malloc_T.h \ $(ACE_ROOT)/ace/Synch.h \ $(ACE_ROOT)/ace/Synch.i \ $(ACE_ROOT)/ace/Synch_T.h \ $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread_Adapter.h \ + $(ACE_ROOT)/ace/Base_Thread_Adapter.h \ + $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \ + $(ACE_ROOT)/ace/Thread_Adapter.inl \ + $(ACE_ROOT)/ace/Thread.i \ $(ACE_ROOT)/ace/Atomic_Op.i \ $(ACE_ROOT)/ace/Synch_T.cpp \ - $(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/Unbounded_Queue.h \ - $(ACE_ROOT)/ace/Node.h \ - $(ACE_ROOT)/ace/Node.cpp \ - $(ACE_ROOT)/ace/Unbounded_Queue.inl \ - $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ + $(ACE_ROOT)/ace/Malloc_Allocator.h \ $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Array_Base.h \ - $(ACE_ROOT)/ace/Array_Base.inl \ - $(ACE_ROOT)/ace/Array_Base.cpp \ - $(ACE_ROOT)/ace/Unbounded_Set.h \ - $(ACE_ROOT)/ace/Unbounded_Set.inl \ - $(ACE_ROOT)/ace/Unbounded_Set.cpp \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ + $(ACE_ROOT)/ace/Malloc_Allocator.i \ $(ACE_ROOT)/ace/Free_List.h \ $(ACE_ROOT)/ace/Free_List.i \ $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Singleton.h \ - $(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/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_Allocator.h \ - $(ACE_ROOT)/ace/Malloc_Allocator.i \ $(ACE_ROOT)/ace/Malloc_T.i \ $(ACE_ROOT)/ace/Malloc_T.cpp \ $(ACE_ROOT)/ace/Memory_Pool.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ $(ACE_ROOT)/ace/Signal.h \ $(ACE_ROOT)/ace/Signal.i \ $(ACE_ROOT)/ace/Mem_Map.h \ @@ -5010,77 +5075,21 @@ endif # corba_messaging $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ + $(ACE_ROOT)/ace/Unbounded_Set.h \ + $(ACE_ROOT)/ace/Node.h \ + $(ACE_ROOT)/ace/Node.cpp \ + $(ACE_ROOT)/ace/Unbounded_Set.inl \ + $(ACE_ROOT)/ace/Unbounded_Set.cpp \ $(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/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/SString.h \ - $(ACE_ROOT)/ace/SString.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/Test_and_Set.h \ - $(ACE_ROOT)/ace/Test_and_Set.i \ - $(ACE_ROOT)/ace/Test_and_Set.cpp \ - $(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/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/Process_Mutex.h \ - $(ACE_ROOT)/ace/Process_Mutex.inl \ - $(ACE_ROOT)/ace/WFMO_Reactor.i \ - $(ACE_ROOT)/ace/Strategies.i \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(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 \ - RTCORBA.h rtcorba_export.h \ - $(TAO_ROOT)/tao/corbafwd.h \ - $(ACE_ROOT)/ace/CDR_Base.h \ $(ACE_ROOT)/ace/CDR_Base.inl \ $(TAO_ROOT)/tao/try_macros.h \ $(ACE_ROOT)/ace/CORBA_macros.h \ $(TAO_ROOT)/tao/varbase.h \ - $(TAO_ROOT)/tao/TAO_Export.h \ $(TAO_ROOT)/tao/corbafwd.i \ - RTCORBAC.h \ - $(TAO_ROOT)/tao/IOPC.h \ - $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/CDR.h \ $(ACE_ROOT)/ace/CDR_Stream.h \ $(ACE_ROOT)/ace/CDR_Stream.i \ $(TAO_ROOT)/tao/CDR.i \ @@ -5092,6 +5101,8 @@ endif # corba_messaging $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ + $(ACE_ROOT)/ace/SString.h \ + $(ACE_ROOT)/ace/SString.i \ $(TAO_ROOT)/tao/Exception.i \ $(TAO_ROOT)/tao/Typecode.i \ $(TAO_ROOT)/tao/Any.i \ @@ -5109,6 +5120,11 @@ endif # corba_messaging $(TAO_ROOT)/tao/TAO_Singleton.h \ $(TAO_ROOT)/tao/TAO_Singleton.inl \ $(TAO_ROOT)/tao/TAO_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 \ $(TAO_ROOT)/tao/TAO_Singleton_Manager.h \ $(TAO_ROOT)/tao/TAO_Singleton_Manager.inl \ $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.inl \ @@ -5120,17 +5136,95 @@ endif # corba_messaging $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.i \ RTCORBAC.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/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/Unbounded_Queue.h \ + $(ACE_ROOT)/ace/Unbounded_Queue.inl \ + $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ + $(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/Test_and_Set.h \ + $(ACE_ROOT)/ace/Test_and_Set.i \ + $(ACE_ROOT)/ace/Test_and_Set.cpp \ + $(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/Thread_Lane_Resources.h \ + $(TAO_ROOT)/tao/Thread_Lane_Resources.i \ + $(TAO_ROOT)/tao/New_Leader_Generator.h \ + $(ACE_ROOT)/ace/Task.h \ + $(ACE_ROOT)/ace/Thread_Manager.h \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Containers.i \ + $(ACE_ROOT)/ace/Containers_T.h \ + $(ACE_ROOT)/ace/Array_Base.h \ + $(ACE_ROOT)/ace/Array_Base.inl \ + $(ACE_ROOT)/ace/Array_Base.cpp \ + $(ACE_ROOT)/ace/Containers_T.i \ + $(ACE_ROOT)/ace/Containers_T.cpp \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(ACE_ROOT)/ace/Thread_Manager.i \ + $(ACE_ROOT)/ace/Task.i \ + $(ACE_ROOT)/ace/Task_T.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/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/Process_Mutex.h \ + $(ACE_ROOT)/ace/Process_Mutex.inl \ + $(ACE_ROOT)/ace/WFMO_Reactor.i \ + $(ACE_ROOT)/ace/Strategies.i \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(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 \ + Thread_Pool.i \ + $(ACE_ROOT)/ace/Auto_Ptr.h \ + $(ACE_ROOT)/ace/Auto_Ptr.i \ + $(ACE_ROOT)/ace/Auto_Ptr.cpp \ + $(TAO_ROOT)/tao/ORB_Core.h \ $(TAO_ROOT)/tao/ORB.h \ $(TAO_ROOT)/tao/Services.h \ $(TAO_ROOT)/tao/Services.i \ $(TAO_ROOT)/tao/CORBA_String.h \ $(TAO_ROOT)/tao/CORBA_String.inl \ $(TAO_ROOT)/tao/ORB.i \ - Thread_Pool.i \ - $(ACE_ROOT)/ace/Auto_Ptr.h \ - $(ACE_ROOT)/ace/Auto_Ptr.i \ - $(ACE_ROOT)/ace/Auto_Ptr.cpp \ - $(TAO_ROOT)/tao/ORB_Core.h \ $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/Policy_Set.h \ $(TAO_ROOT)/tao/Policy_Set.i \ @@ -5174,6 +5268,34 @@ endif # corba_messaging $(TAO_ROOT)/tao/Interceptor_List.h \ $(TAO_ROOT)/tao/Interceptor_List.inl \ $(TAO_ROOT)/tao/Protocols_Hooks.h \ - $(TAO_ROOT)/tao/ORB_Core.i + $(TAO_ROOT)/tao/ORB_Core.i \ + $(TAO_ROOT)/tao/Acceptor_Registry.h \ + $(TAO_ROOT)/tao/Acceptor_Registry.i \ + $(TAO_ROOT)/tao/Transport_Cache_Manager.h \ + $(TAO_ROOT)/tao/Cache_Entries.h \ + $(TAO_ROOT)/tao/Transport_Descriptor_Interface.h \ + $(TAO_ROOT)/tao/Endpoint.h \ + $(TAO_ROOT)/tao/Endpoint.i \ + $(TAO_ROOT)/tao/Transport_Descriptor_Interface.inl \ + $(TAO_ROOT)/tao/Cache_Entries.inl \ + $(TAO_ROOT)/tao/Connection_Purging_Strategy.h \ + $(TAO_ROOT)/tao/Connection_Purging_Strategy.inl \ + $(TAO_ROOT)/tao/Transport_Cache_Manager.inl \ + $(TAO_ROOT)/tao/RTCORBA/Priority_Mapping_Manager.h \ + $(TAO_ROOT)/tao/RTCORBA/rtcorba_export.h \ + $(TAO_ROOT)/tao/RTCORBA/Priority_Mapping.h \ + $(TAO_ROOT)/tao/RTCORBA/RTCORBAC.h \ + $(TAO_ROOT)/tao/RTCORBA/Priority_Mapping.i \ + $(TAO_ROOT)/tao/RTCORBA/Priority_Mapping_Manager.i \ + $(TAO_ROOT)/tao/Leader_Follower.h \ + $(TAO_ROOT)/tao/LF_Follower.h \ + $(ACE_ROOT)/ace/Intrusive_List_Node.h \ + $(ACE_ROOT)/ace/Intrusive_List_Node.inl \ + $(ACE_ROOT)/ace/Intrusive_List_Node.cpp \ + $(TAO_ROOT)/tao/LF_Follower.inl \ + $(ACE_ROOT)/ace/Intrusive_List.h \ + $(ACE_ROOT)/ace/Intrusive_List.inl \ + $(ACE_ROOT)/ace/Intrusive_List.cpp \ + $(TAO_ROOT)/tao/Leader_Follower.i # IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/TAO/tao/RTCORBA/Makefile.bor b/TAO/tao/RTCORBA/Makefile.bor index 853e3096f4e..8cbfede95ce 100644 --- a/TAO/tao/RTCORBA/Makefile.bor +++ b/TAO/tao/RTCORBA/Makefile.bor @@ -5,9 +5,10 @@ NAME = TAO_RTCORBA OBJFILES = \ + $(OBJDIR)\Continuous_Priority_Mapping.obj \ $(OBJDIR)\Direct_Priority_Mapping.obj \ $(OBJDIR)\Linear_Priority_Mapping.obj \ - $(OBJDIR)\Pool_Per_Endpoint.obj \ + $(OBJDIR)\RT_Thread_Lane_Resources_Manager.obj \ $(OBJDIR)\Priority_Mapping.obj \ $(OBJDIR)\Priority_Mapping_Manager.obj \ $(OBJDIR)\Private_Transport_Descriptor.obj \ diff --git a/TAO/tao/RTCORBA/Pool_Per_Endpoint.cpp b/TAO/tao/RTCORBA/Pool_Per_Endpoint.cpp deleted file mode 100644 index 5a926b83ed4..00000000000 --- a/TAO/tao/RTCORBA/Pool_Per_Endpoint.cpp +++ /dev/null @@ -1,104 +0,0 @@ -// $Id$ - -#include "Pool_Per_Endpoint.h" -#include "tao/ORB.h" -#include "tao/ORB_Core.h" -#include "tao/Acceptor_Registry.h" -#include "tao/Pluggable.h" -#include "Priority_Mapping_Manager.h" -#include "tao/debug.h" -#include "ace/Sched_Params.h" - -#if !defined (__ACE_INLINE__) -# include "Pool_Per_Endpoint.i" -#endif /* ! __ACE_INLINE__ */ - -ACE_RCSID(tao, Pool_Per_Endpoint, "$Id$") - -TAO_Pool_Per_Endpoint::TAO_Pool_Per_Endpoint (CORBA::ORB_ptr orb, - int policy, - int poolsize, - int flags) - : orb_ (CORBA::ORB::_duplicate (orb)), - policy_ (policy), - poolsize_ (poolsize), - flags_ (flags) -{ - this->thr_mgr (&this->thread_manager_); -} - -TAO_Pool_Per_Endpoint::~TAO_Pool_Per_Endpoint (void) -{ -} - -void -TAO_Pool_Per_Endpoint::run (CORBA::Environment &ACE_TRY_ENV) -{ - CORBA::Object_var obj = - this->orb_->resolve_initial_references (TAO_OBJID_PRIORITYMAPPINGMANAGER, - ACE_TRY_ENV); - - TAO_Priority_Mapping_Manager_var mapping_manager = - TAO_Priority_Mapping_Manager::_narrow (obj.in (), - ACE_TRY_ENV); - ACE_CHECK; - - RTCORBA::PriorityMapping *pm = - mapping_manager.in ()->mapping (); - - TAO_Acceptor_Registry *ac = - this->orb_->orb_core ()->acceptor_registry (); - - for (TAO_AcceptorSetIterator i = ac->begin (); i != ac->end (); ++i) - { - int priority = - ACE_Sched_Params::priority_min (this->policy_); - - const CORBA::Short corba_priority = (*i)->priority (); - CORBA::Short native_priority; - if (pm->to_native (corba_priority, native_priority) == 1) - priority = native_priority; - else - ACE_THROW (CORBA::DATA_CONVERSION ()); - - if (TAO_debug_level > 3) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO (%P|%t) - creating thread at ") - ACE_TEXT ("priority %d:%d\n"), - priority, - corba_priority)); - - if (this->activate (this->flags_, - this->poolsize_, /* number of threads */ - 1, /* force active */ - priority) == -1) - { - ACE_THROW (CORBA::INTERNAL ()); - } - } - this->thread_manager_.wait (); -} - -int -TAO_Pool_Per_Endpoint::svc (void) -{ - if (TAO_debug_level > 3) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO (%P|%t) - TAO_Pool_Per_Endpoint::svc: ") - ACE_TEXT (" using reactor <%x> in this thread\n"), - this->orb_->orb_core ()->reactor ())); - - this->orb_->run (); // @@ Where's the error/exception check? - - if (TAO_debug_level > 3) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO (%P|%t) - TAO_Pool_Per_Endpoint::svc: ") - ACE_TEXT (" ORB::run() finished\n"))); - return 0; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/RTCORBA/Pool_Per_Endpoint.h b/TAO/tao/RTCORBA/Pool_Per_Endpoint.h deleted file mode 100644 index 34478d5dae1..00000000000 --- a/TAO/tao/RTCORBA/Pool_Per_Endpoint.h +++ /dev/null @@ -1,79 +0,0 @@ - -//============================================================================= -/** - * @file Pool_Per_Endpoint.h - * - * $Id$ - * - * @author Carlos O'Ryan (coryan@cs.wustl.edu) - */ -//============================================================================= - - -#ifndef TAO_POOL_PER_ENDPOINT_H -#define TAO_POOL_PER_ENDPOINT_H -#include "ace/pre.h" - -#include "rtcorba_export.h" -#include "tao/ORB.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/Task.h" - -/** - * @class TAO_Pool_Per_Endpoint - * - * @brief The Pool_Per_Endpoint concurrency strategy. - * - * This strategy creates a separate thread pool for each endpoint - * in the system. It is a helper class to manage and create the - * required threads. - * It should be used with the Reactor_Per_Endpoint registry - * configured. - */ -class TAO_RTCORBA_Export TAO_Pool_Per_Endpoint : public ACE_Task_Base -{ -public: - /// Constructor - TAO_Pool_Per_Endpoint (CORBA::ORB_ptr orb, - int policy = ACE_SCHED_OTHER, - int poolsize = 1, - int flags = - THR_BOUND|THR_NEW_LWP|THR_JOINABLE); - - /// The destructor - virtual ~TAO_Pool_Per_Endpoint (void); - - /// Run all the threads and wait until they finish - void run (CORBA::Environment &ACE_TRY_ENV = - TAO_default_environment ()); - - // = The Task_Base entry point - int svc (void); - -private: - /// The ORB. - CORBA::ORB_var orb_; - - /// The scheduling policy to activate the threads. - int policy_; - - /// The number of threads on each pool. - int poolsize_; - - /// The flags used to create the threads - int flags_; - - /// The thread manager. - ACE_Thread_Manager thread_manager_; -}; - -#if defined (__ACE_INLINE__) -# include "Pool_Per_Endpoint.i" -#endif /* __ACE_INLINE__ */ - -#include "ace/post.h" -#endif /* TAO_POOL_PER_ENDPOINT_H */ diff --git a/TAO/tao/RTCORBA/RTCORBA.cpp b/TAO/tao/RTCORBA/RTCORBA.cpp index 0a1a0bc60da..ec3204eb284 100644 --- a/TAO/tao/RTCORBA/RTCORBA.cpp +++ b/TAO/tao/RTCORBA/RTCORBA.cpp @@ -2,19 +2,10 @@ #include "RTCORBA.h" #include "RT_ORB_Loader.h" -#include "RT_Protocols_Hooks.h" ACE_RCSID (RTCORBA, RTCORBA, "$Id$") TAO_RTCORBA_Initializer::TAO_RTCORBA_Initializer (void) { - TAO_RTCORBA_Initializer::init (); -} - -int -TAO_RTCORBA_Initializer::init (void) -{ ACE_Service_Config::static_svcs ()->insert (&ace_svc_desc_TAO_RT_ORB_Loader); - ACE_Service_Config::static_svcs ()->insert (&ace_svc_desc_TAO_RT_Protocols_Hooks); - return 0; } diff --git a/TAO/tao/RTCORBA/RTCORBA.h b/TAO/tao/RTCORBA/RTCORBA.h index c23226addc6..e0541e6c572 100644 --- a/TAO/tao/RTCORBA/RTCORBA.h +++ b/TAO/tao/RTCORBA/RTCORBA.h @@ -30,16 +30,13 @@ class TAO_RTCORBA_Export TAO_RTCORBA_Initializer public: // Constructor. TAO_RTCORBA_Initializer (void); - - static int init (void); - // Used to force the initialization of the ORB code. }; +static TAO_RTCORBA_Initializer TAO_RTCORBA_initializer; + #define TAO_RTCORBA_SAFE_INCLUDE #include "RTCORBAC.h" #undef TAO_RTCORBA_SAFE_INCLUDE -static TAO_RTCORBA_Initializer TAO_RTCORBA_initializer; - #include "ace/post.h" #endif /* TAO_RTCORBA_H_ */ diff --git a/TAO/tao/RTCORBA/RT_Current.h b/TAO/tao/RTCORBA/RT_Current.h index 672125529b9..856e3d63706 100644 --- a/TAO/tao/RTCORBA/RT_Current.h +++ b/TAO/tao/RTCORBA/RT_Current.h @@ -17,7 +17,10 @@ #include "tao/orbconf.h" -#include "RTCORBA.h" +#define TAO_RTCORBA_SAFE_INCLUDE +#include "RTCORBAC.h" +#undef TAO_RTCORBA_SAFE_INCLUDE + #include "tao/LocalObject.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) diff --git a/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.cpp b/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.cpp index a87cff52a16..425c34bee14 100644 --- a/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.cpp +++ b/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.cpp @@ -27,8 +27,8 @@ RT_Endpoint_Selector_Factory::RT_Endpoint_Selector_Factory (void) ACE_NEW (this->bands_protocol_selector_, TAO_Bands_Protocol_Selector); - ACE_NEW (this->default_endpoint_selector_, - TAO_Default_Endpoint_Selector); + ACE_NEW (this->rt_default_endpoint_selector_, + TAO_RT_Default_Endpoint_Selector); } RT_Endpoint_Selector_Factory::~RT_Endpoint_Selector_Factory (void) @@ -38,7 +38,7 @@ RT_Endpoint_Selector_Factory::~RT_Endpoint_Selector_Factory (void) delete this->protocol_endpoint_selector_; delete this->priority_protocol_selector_; delete this->bands_protocol_selector_; - delete this->default_endpoint_selector_; + delete this->rt_default_endpoint_selector_; } TAO_Invocation_Endpoint_Selector * @@ -57,8 +57,8 @@ RT_Endpoint_Selector_Factory::get_selector (TAO_GIOP_Invocation *invocation, ACE_THROW_RETURN (CORBA::INTERNAL ( CORBA_SystemException::_tao_minor_code ( - TAO_DEFAULT_MINOR_CODE, - EINVAL), + TAO_DEFAULT_MINOR_CODE, + EINVAL), CORBA::COMPLETED_NO), 0); } @@ -97,7 +97,7 @@ RT_Endpoint_Selector_Factory::get_selector (TAO_GIOP_Invocation *invocation, } if (client_protocol_policy.ptr () == 0) - return this->default_endpoint_selector_; + return this->rt_default_endpoint_selector_; else return this->protocol_endpoint_selector_; } @@ -135,7 +135,7 @@ RT_Endpoint_Selector_Factory::get_selector (TAO_GIOP_Invocation *invocation, { // CASE 5: SERVER_DECLARED priority model, no bands. if (client_protocol_policy.ptr () == 0) - return this->default_endpoint_selector_; + return this->rt_default_endpoint_selector_; else return this->protocol_endpoint_selector_; } @@ -183,4 +183,3 @@ ACE_STATIC_SVC_DEFINE (RT_Endpoint_Selector_Factory, ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, 0) ACE_FACTORY_DEFINE (TAO_RTCORBA, RT_Endpoint_Selector_Factory) - diff --git a/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.h b/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.h index 43cf89279b2..9d73b7392a1 100644 --- a/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.h +++ b/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.h @@ -32,7 +32,7 @@ class TAO_Bands_Endpoint_Selector; class TAO_Protocol_Endpoint_Selector; class TAO_Priority_Protocol_Selector; class TAO_Bands_Protocol_Selector; -class TAO_Default_Endpoint_Selector; +class TAO_RT_Default_Endpoint_Selector; // **************************************************************** /** @@ -85,7 +85,7 @@ private: /// The possible endpoint selector strategies that can be /// returned by this factory - TAO_Default_Endpoint_Selector *default_endpoint_selector_; + TAO_RT_Default_Endpoint_Selector *rt_default_endpoint_selector_; TAO_Priority_Endpoint_Selector *priority_endpoint_selector_; TAO_Bands_Endpoint_Selector *bands_endpoint_selector_; TAO_Protocol_Endpoint_Selector *protocol_endpoint_selector_; diff --git a/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp b/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp index 70070e94104..544eab43d41 100644 --- a/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp +++ b/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp @@ -21,6 +21,54 @@ ACE_RCSID(tao, RT_Invocation_Endpoint_Selectors, "$Id$") // **************************************************************** +void +TAO_RT_Default_Endpoint_Selector::select_endpoint (TAO_GIOP_Invocation *invocation, + CORBA::Environment &ACE_TRY_ENV) +{ + TAO_RT_Stub *rt_stub = + ACE_dynamic_cast (TAO_RT_Stub *, + invocation->stub ()); + + do + { + invocation->profile (invocation->stub ()->profile_in_use ()); + invocation->endpoint (invocation->profile ()->endpoint ()); + + // If known endpoint, select it. + if (invocation->endpoint () != 0) + { + int status; + if (rt_stub->private_connection ()) + { + TAO_Private_Transport_Descriptor private_desc (invocation->endpoint (), + ACE_reinterpret_cast (long, invocation->stub ())); + + status = invocation->perform_call (private_desc, ACE_TRY_ENV); + ACE_CHECK; + } + else + { + TAO_Base_Transport_Property default_desc (invocation->endpoint ()); + + status = invocation->perform_call (default_desc, ACE_TRY_ENV); + ACE_CHECK; + } + + // Check if the invocation has completed. + if (status == 1) + return; + } + } + while (invocation->stub ()->next_profile_retry () != 0); + + // If we get here, we completely failed to find an endpoint selector + // that we know how to use, so throw an exception. + ACE_THROW (CORBA::TRANSIENT (TAO_OMG_VMCID | 2, + CORBA::COMPLETED_NO)); +} + +// **************************************************************** + TAO_Priority_Endpoint_Selector::~TAO_Priority_Endpoint_Selector (void) { } diff --git a/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.h b/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.h index ea1e1092a83..32dee2d0702 100644 --- a/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.h +++ b/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.h @@ -30,6 +30,25 @@ #include "tao/Invocation_Endpoint_Selectors.h" /** + * @class TAO_RT_Default_Endpoint_Selector + * + * @brief TAO_RT_Default_Endpoint_Selector + * + * This strategy is used when the only policy that might be set is the + * private connection policy. + * + **/ +class TAO_RTCORBA_Export TAO_RT_Default_Endpoint_Selector : + public TAO_Default_Endpoint_Selector +{ +public: + virtual void select_endpoint (TAO_GIOP_Invocation *invocation, + CORBA::Environment &ACE_TRY_ENV); +}; + +// **************************************************************** + +/** * @class TAO_Priority_Endpoint_Selector * * @brief TAO_Priority_Endpoint_Selector @@ -49,8 +68,7 @@ public: virtual ~TAO_Priority_Endpoint_Selector (void); virtual void select_endpoint (TAO_GIOP_Invocation *invocation, - CORBA::Environment &ACE_TRY_ENV = - TAO_default_environment ()); + CORBA::Environment &ACE_TRY_ENV); private: /// Helper for <select_endpoint>. int is_multihomed (TAO_Endpoint *endpoint); @@ -78,8 +96,7 @@ public: virtual ~TAO_Bands_Endpoint_Selector (void); virtual void select_endpoint (TAO_GIOP_Invocation *invocation, - CORBA::Environment &ACE_TRY_ENV = - TAO_default_environment ()); + CORBA::Environment &ACE_TRY_ENV); }; // **************************************************************** @@ -105,15 +122,12 @@ public: virtual ~TAO_Protocol_Endpoint_Selector (void); virtual void select_endpoint (TAO_GIOP_Invocation *invocation, - CORBA::Environment &ACE_TRY_ENV = - TAO_default_environment ()); + CORBA::Environment &ACE_TRY_ENV); virtual void next (TAO_GIOP_Invocation *invocation, - CORBA::Environment &ACE_TRY_ENV = - TAO_default_environment ()); + CORBA::Environment &ACE_TRY_ENV); virtual void forward (TAO_GIOP_Invocation *invocation, const TAO_MProfile &mprofile, - CORBA::Environment &ACE_TRY_ENV = - TAO_default_environment ()); + CORBA::Environment &ACE_TRY_ENV); virtual void success (TAO_GIOP_Invocation *invocation); virtual void close_connection (TAO_GIOP_Invocation *invocation); }; diff --git a/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.i b/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.i index f38e9b32fc6..916934eb0f3 100644 --- a/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.i +++ b/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.i @@ -33,4 +33,3 @@ ACE_INLINE TAO_Bands_Protocol_Selector::TAO_Bands_Protocol_Selector (void) { } - diff --git a/TAO/tao/RTCORBA/RT_Mutex.cpp b/TAO/tao/RTCORBA/RT_Mutex.cpp index c35317aade1..57e18ff2942 100644 --- a/TAO/tao/RTCORBA/RT_Mutex.cpp +++ b/TAO/tao/RTCORBA/RT_Mutex.cpp @@ -57,7 +57,9 @@ TAO_RT_Mutex::try_lock (TimeBase::TimeT wait_time, if (result == 0) return 1; - else if (result == -1 && errno == ETIME) + else if (result == -1 && + (errno == ETIME || + errno == EBUSY)) return 0; else // Some really bad error. diff --git a/TAO/tao/RTCORBA/RT_Mutex.h b/TAO/tao/RTCORBA/RT_Mutex.h index efb30d24418..c16cb59a3b7 100644 --- a/TAO/tao/RTCORBA/RT_Mutex.h +++ b/TAO/tao/RTCORBA/RT_Mutex.h @@ -20,7 +20,10 @@ # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -#include "RTCORBA.h" +#define TAO_RTCORBA_SAFE_INCLUDE +#include "RTCORBAC.h" +#undef TAO_RTCORBA_SAFE_INCLUDE + #include "tao/LocalObject.h" #if defined(_MSC_VER) diff --git a/TAO/tao/RTCORBA/RT_ORB.cpp b/TAO/tao/RTCORBA/RT_ORB.cpp index 918570112b8..037fa0238ba 100644 --- a/TAO/tao/RTCORBA/RT_ORB.cpp +++ b/TAO/tao/RTCORBA/RT_ORB.cpp @@ -5,6 +5,8 @@ #include "RT_Mutex.h" #include "Priority_Mapping_Manager.h" #include "tao/ORB_Core.h" +#include "tao/RTCORBA/Thread_Pool.h" +#include "tao/RTCORBA/RT_Thread_Lane_Resources_Manager.h" #if ! defined (__ACE_INLINE__) #include "RT_ORB.i" @@ -12,85 +14,19 @@ ACE_RCSID(TAO, RT_ORB, "$Id$") -class TAO_RT_CORBA_Priority_Normalizer : public TAO_CORBA_Priority_Normalizer -{ -public: - /// Constructor. - TAO_RT_CORBA_Priority_Normalizer (TAO_ORB_Core *orb_core); - - /// Normalize CORBA Priority - CORBA::Boolean normalize (CORBA::Short corba_priority, - CORBA::Short &normalized_corba_priority); - -private: - // Reference to the priority mapping. - RTCORBA::PriorityMapping *priority_mapping_; -}; - -TAO_RT_CORBA_Priority_Normalizer::TAO_RT_CORBA_Priority_Normalizer (TAO_ORB_Core *orb_core) -{ - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - // Save a reference to the priority mapping manager. - CORBA::Object_var obj = - orb_core->object_ref_table ().resolve_initial_references ( - TAO_OBJID_PRIORITYMAPPINGMANAGER, - ACE_TRY_ENV); - ACE_TRY_CHECK; - - TAO_Priority_Mapping_Manager_var mapping_manager = - TAO_Priority_Mapping_Manager::_narrow (obj.in (), - ACE_TRY_ENV); - ACE_TRY_CHECK; - - if (CORBA::is_nil (mapping_manager.in ())) - ACE_TRY_THROW (CORBA::INTERNAL ()); - - this->priority_mapping_ = - mapping_manager->mapping (); - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "(%P|%t) ERROR: Problem in CORBA Priority " - "Normalizer constructor.\n"); - - return; - } - ACE_ENDTRY; -} - -CORBA::Boolean -TAO_RT_CORBA_Priority_Normalizer::normalize (CORBA::Short corba_priority, - CORBA::Short &normalized_corba_priority) -{ - CORBA::Short native_priority; - - CORBA::Boolean result = - this->priority_mapping_->to_native (corba_priority, - native_priority); - if (result == 0) - return 0; - - result = - this->priority_mapping_->to_CORBA (native_priority, - normalized_corba_priority); - if (result == 0) - return 0; - - return 1; -} - TAO_RT_ORB::TAO_RT_ORB (TAO_ORB_Core *orb_core) : orb_core_ (orb_core), mutex_mgr_ (), - tp_manager_ (orb_core) + tp_manager_ (0) { - TAO_RT_CORBA_Priority_Normalizer *corba_priority_normalizer = 0; - ACE_NEW (corba_priority_normalizer, - TAO_RT_CORBA_Priority_Normalizer (this->orb_core_)); - this->orb_core_->corba_priority_normalizer (corba_priority_normalizer); + TAO_Thread_Lane_Resources_Manager *thread_lane_resources_manager = + &this->orb_core_->thread_lane_resources_manager (); + + TAO_RT_Thread_Lane_Resources_Manager *rt_thread_lane_resources_manager = + (TAO_RT_Thread_Lane_Resources_Manager *) thread_lane_resources_manager; + + this->tp_manager_ = + &rt_thread_lane_resources_manager->tp_manager (); } TAO_RT_ORB::~TAO_RT_ORB (void) @@ -327,14 +263,14 @@ TAO_RT_ORB::create_threadpool (CORBA::ULong stacksize, CORBA::Environment &ACE_TRY_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { - return this->tp_manager_.create_threadpool (stacksize, - static_threads, - dynamic_threads, - default_priority, - allow_request_buffering, - max_buffered_requests, - max_request_buffer_size, - ACE_TRY_ENV); + return this->tp_manager_->create_threadpool (stacksize, + static_threads, + dynamic_threads, + default_priority, + allow_request_buffering, + max_buffered_requests, + max_request_buffer_size, + ACE_TRY_ENV); } RTCORBA::ThreadpoolId @@ -347,13 +283,13 @@ TAO_RT_ORB::create_threadpool_with_lanes (CORBA::ULong stacksize, CORBA::Environment &ACE_TRY_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { - return this->tp_manager_.create_threadpool_with_lanes (stacksize, - lanes, - allow_borrowing, - allow_request_buffering, - max_buffered_requests, - max_request_buffer_size, - ACE_TRY_ENV); + return this->tp_manager_->create_threadpool_with_lanes (stacksize, + lanes, + allow_borrowing, + allow_request_buffering, + max_buffered_requests, + max_request_buffer_size, + ACE_TRY_ENV); } void @@ -362,8 +298,8 @@ TAO_RT_ORB::destroy_threadpool (RTCORBA::ThreadpoolId threadpool, ACE_THROW_SPEC ((CORBA::SystemException, RTCORBA::RTORB::InvalidThreadpool)) { - this->tp_manager_.destroy_threadpool (threadpool, - ACE_TRY_ENV); + this->tp_manager_->destroy_threadpool (threadpool, + ACE_TRY_ENV); } RTCORBA::PriorityModelPolicy_ptr @@ -457,6 +393,12 @@ TAO_RT_ORB::create_client_protocol_policy (const RTCORBA::ProtocolList & protoco return tmp; } +TAO_Thread_Pool_Manager & +TAO_RT_ORB::tp_manager (void) +{ + return *this->tp_manager_; +} + //////////////////////////////////////////////////////////////////////////////// #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) diff --git a/TAO/tao/RTCORBA/RT_ORB.h b/TAO/tao/RTCORBA/RT_ORB.h index 3b248d9f12e..55f7f5bd2b5 100644 --- a/TAO/tao/RTCORBA/RT_ORB.h +++ b/TAO/tao/RTCORBA/RT_ORB.h @@ -19,9 +19,11 @@ # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -#include "RTCORBA.h" +#define TAO_RTCORBA_SAFE_INCLUDE +#include "RTCORBAC.h" +#undef TAO_RTCORBA_SAFE_INCLUDE + #include "tao/LocalObject.h" -#include "Thread_Pool.h" #include "ace/Hash_Map_Manager_T.h" #if defined(_MSC_VER) @@ -33,6 +35,7 @@ // Forward reference for TAO_Named_RT_Mutex_Manager class TAO_RT_Mutex; +class TAO_Thread_Pool_Manager; /** * @class TAO_Named_RT_Mutex_Manager @@ -255,6 +258,9 @@ public: TAO_default_environment ()) ACE_THROW_SPEC ((CORBA::SystemException)); + /// Get the Thread Pool Manager. + TAO_Thread_Pool_Manager &tp_manager (void); + protected: /// Protected destructor to enforce proper memory management of this /// reference counted object. @@ -266,8 +272,8 @@ protected: /// mutex_mgr_ manages the names associated with named mutexes. TAO_Named_RT_Mutex_Manager mutex_mgr_; - /// Thread Pool Manager. - TAO_Thread_Pool_Manager tp_manager_; + /// Thread Pool Manager + TAO_Thread_Pool_Manager *tp_manager_; }; #if defined (__ACE_INLINE__) diff --git a/TAO/tao/RTCORBA/RT_ORBInitializer.cpp b/TAO/tao/RTCORBA/RT_ORBInitializer.cpp index 81ecf82234d..c9e95c163db 100644 --- a/TAO/tao/RTCORBA/RT_ORBInitializer.cpp +++ b/TAO/tao/RTCORBA/RT_ORBInitializer.cpp @@ -6,7 +6,10 @@ ACE_RCSID (TAO, RT_ORBInitializer, "$Id$") -#include "RTCORBA.h" +#define TAO_RTCORBA_SAFE_INCLUDE +#include "tao/RTCORBA/RTCORBAC.h" +#undef TAO_RTCORBA_SAFE_INCLUDE + #include "RT_Policy_i.h" #include "RT_Protocols_Hooks.h" #include "Priority_Mapping_Manager.h" @@ -16,10 +19,12 @@ ACE_RCSID (TAO, RT_ORBInitializer, "$Id$") #include "RT_ORB_Loader.h" #include "RT_Stub_Factory.h" #include "RT_Endpoint_Selector_Factory.h" +#include "Continuous_Priority_Mapping.h" #include "Linear_Priority_Mapping.h" #include "Direct_Priority_Mapping.h" #include "RT_ORB.h" #include "RT_Current.h" +#include "RT_Thread_Lane_Resources_Manager.h" #include "ace/Service_Repository.h" #include "ace/Svc_Conf.h" @@ -28,9 +33,11 @@ static const char *rt_poa_factory_name = "TAO_RT_POA"; static const char *rt_poa_factory_directive = "dynamic TAO_RT_POA Service_Object * TAO_RTPortableServer:_make_TAO_RT_Object_Adapter_Factory()"; TAO_RT_ORBInitializer::TAO_RT_ORBInitializer (int priority_mapping_type, - int sched_policy) + long sched_policy, + long scope_policy) : priority_mapping_type_ (priority_mapping_type), - sched_policy_ (sched_policy) + sched_policy_ (sched_policy), + scope_policy_ (scope_policy) { } @@ -42,27 +49,30 @@ TAO_RT_ORBInitializer::pre_init ( { TAO_ENV_ARG_DEFN; + // // Register all of the RT related services. + // + + // Set the name of the Protocol_Hooks to be RT_Protocols_Hooks. + TAO_ORB_Core::set_protocols_hooks ("RT_Protocols_Hooks"); ACE_Service_Config::process_directive (ace_svc_desc_TAO_RT_Protocols_Hooks); + + // Set the name of the stub factory to be RT_Stub_Factory. + TAO_ORB_Core::set_stub_factory ("RT_Stub_Factory"); ACE_Service_Config::process_directive (ace_svc_desc_TAO_RT_Stub_Factory); + + // Set the name of the stub factory to be RT_Stub_Factory. + TAO_ORB_Core::set_endpoint_selector_factory ("RT_Endpoint_Selector_Factory"); ACE_Service_Config::process_directive (ace_svc_desc_RT_Endpoint_Selector_Factory); + // Set the name of the thread lane resources manager to be RT_Thread_Lane_Resources_Manager. + TAO_ORB_Core::set_thread_lane_resources_manager_factory ("RT_Thread_Lane_Resources_Manager_Factory"); + ACE_Service_Config::process_directive (ace_svc_desc_TAO_RT_Thread_Lane_Resources_Manager_Factory); + // If the application resolves the root POA, make sure we load the RT POA. TAO_ORB_Core::set_poa_factory (rt_poa_factory_name, rt_poa_factory_directive); -// @@ RTCORBA Subsetting: service gets automatically loaded now by using a static initializer. -// ACE_Service_Config::process_directive (ace_svc_desc_TAO_RT_ORB_Loader); - - // Set the name of the Protocol_Hooks to be the RT_Protocols_Hooks. - TAO_ORB_Core::set_protocols_hooks ("RT_Protocols_Hooks"); - - // Set the name of the stub factory to be the RT_Stub_Factory. - TAO_ORB_Core::set_stub_factory ("RT_Stub_Factory"); - - // Set the name of the stub factory to be the RT_Stub_Factory. - TAO_ORB_Core::set_endpoint_selector_factory ("RT_Endpoint_Selector_Factory"); - // Sets the client_protocol policy. TAO_RT_Protocols_Hooks::set_client_protocols_hook (TAO_ClientProtocolPolicy::hook); @@ -71,19 +81,29 @@ TAO_RT_ORBInitializer::pre_init ( TAO_RT_Protocols_Hooks::set_server_protocols_hook (TAO_ServerProtocolPolicy::hook); + // Conversion. + long sched_policy = ACE_SCHED_OTHER; + if (this->sched_policy_ == THR_SCHED_FIFO) + sched_policy = ACE_SCHED_FIFO; + else if (this->sched_policy_ == THR_SCHED_RR) + sched_policy = ACE_SCHED_RR; // Create the initial priority mapping instance. TAO_Priority_Mapping *pm; switch (this->priority_mapping_type_) { + case TAO_PRIORITY_MAPPING_CONTINUOUS: + ACE_NEW (pm, + TAO_Continuous_Priority_Mapping (sched_policy)); + break; case TAO_PRIORITY_MAPPING_LINEAR: ACE_NEW (pm, - TAO_Linear_Priority_Mapping (this->sched_policy_)); + TAO_Linear_Priority_Mapping (sched_policy)); break; default: case TAO_PRIORITY_MAPPING_DIRECT: ACE_NEW (pm, - TAO_Direct_Priority_Mapping (this->sched_policy_)); + TAO_Direct_Priority_Mapping (sched_policy)); break; } @@ -137,7 +157,7 @@ TAO_RT_ORBInitializer::pre_init ( CORBA::COMPLETED_NO)); ACE_CHECK; CORBA::Object_var safe_rt_orb = rt_orb; - + info->register_initial_reference (TAO_OBJID_RTORB, rt_orb, ACE_TRY_ENV); @@ -159,6 +179,9 @@ TAO_RT_ORBInitializer::pre_init ( current, ACE_TRY_ENV); ACE_CHECK; + + tao_info->orb_core ()->orb_params ()->scope_policy (this->scope_policy_); + tao_info->orb_core ()->orb_params ()->sched_policy (this->sched_policy_); } void @@ -209,4 +232,3 @@ TAO_RT_ORBInitializer::register_policy_factories ( ACE_TRY_ENV); ACE_CHECK; } - diff --git a/TAO/tao/RTCORBA/RT_ORBInitializer.h b/TAO/tao/RTCORBA/RT_ORBInitializer.h index 88ec7c6fdf1..d119a26e52b 100644 --- a/TAO/tao/RTCORBA/RT_ORBInitializer.h +++ b/TAO/tao/RTCORBA/RT_ORBInitializer.h @@ -43,14 +43,16 @@ class TAO_RTCORBA_Export TAO_RT_ORBInitializer : { public: // Priority mapping types - enum + enum { + TAO_PRIORITY_MAPPING_CONTINUOUS, TAO_PRIORITY_MAPPING_LINEAR, TAO_PRIORITY_MAPPING_DIRECT }; TAO_RT_ORBInitializer (int priority_mapping_type, - int sched_policy); + long sched_policy, + long scope_policy); virtual void pre_init (PortableInterceptor::ORBInitInfo_ptr info TAO_ENV_ARG_DECL_WITH_DEFAULTS) @@ -74,11 +76,14 @@ private: /// a single instance between all ORBs. TAO_RT_PolicyFactory policy_factory_; - /// Initial priority mapping type. + /// Priority mapping type. int priority_mapping_type_; - /// Initial scheduling policy. - int sched_policy_; + /// Scheduling policy. + long sched_policy_; + + /// Scope policy. + long scope_policy_; }; #if defined(_MSC_VER) && (_MSC_VER >= 1200) diff --git a/TAO/tao/RTCORBA/RT_ORB_Loader.cpp b/TAO/tao/RTCORBA/RT_ORB_Loader.cpp index 087919e5c70..e32fd36fd83 100644 --- a/TAO/tao/RTCORBA/RT_ORB_Loader.cpp +++ b/TAO/tao/RTCORBA/RT_ORB_Loader.cpp @@ -9,15 +9,6 @@ ACE_RCSID (TAO, RT_ORB_Loader, "$Id$") -int -TAO_RT_ORB_Loader::Initializer (void) -{ - ACE_Service_Config::static_svcs ()-> - insert (&ace_svc_desc_TAO_RT_ORB_Loader); - - return 0; -} - TAO_RT_ORB_Loader::TAO_RT_ORB_Loader (void) { } @@ -26,16 +17,6 @@ TAO_RT_ORB_Loader::~TAO_RT_ORB_Loader (void) { } -CORBA::Object_ptr -TAO_RT_ORB_Loader::create_object (CORBA::ORB_ptr, - int, - char *[], - CORBA::Environment &) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - return CORBA::Object::_nil (); -} - int TAO_RT_ORB_Loader::init (int argc, char* argv[]) @@ -52,7 +33,8 @@ TAO_RT_ORB_Loader::init (int argc, // Set defaults. int priority_mapping_type = TAO_RT_ORBInitializer::TAO_PRIORITY_MAPPING_DIRECT; - int sched_policy = ACE_SCHED_OTHER; + long sched_policy = THR_SCHED_DEFAULT; + long scope_policy = THR_SCOPE_PROCESS; int curarg = 0; // Parse any service configurator parameters. @@ -66,7 +48,10 @@ TAO_RT_ORB_Loader::init (int argc, char *name = argv[curarg]; if (ACE_OS::strcasecmp (name, - "linear") == 0) + "continuous") == 0) + priority_mapping_type = TAO_RT_ORBInitializer::TAO_PRIORITY_MAPPING_CONTINUOUS; + else if (ACE_OS::strcasecmp (name, + "linear") == 0) priority_mapping_type = TAO_RT_ORBInitializer::TAO_PRIORITY_MAPPING_LINEAR; else if (ACE_OS::strcasecmp (name, "direct") == 0) @@ -87,19 +72,39 @@ TAO_RT_ORB_Loader::init (int argc, if (ACE_OS::strcasecmp (name, "SCHED_OTHER") == 0) - sched_policy = ACE_SCHED_OTHER; + sched_policy = THR_SCHED_DEFAULT; else if (ACE_OS::strcasecmp (name, "SCHED_FIFO") == 0) - sched_policy = ACE_SCHED_FIFO; + sched_policy = THR_SCHED_FIFO; else if (ACE_OS::strcasecmp (name, "SCHED_RR") == 0) - sched_policy = ACE_SCHED_RR; + sched_policy = THR_SCHED_RR; else ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("RT_ORB_Loader - unknown argument") ACE_TEXT (" <%s> for -ORBSchedPolicy\n"), name)); } } + else if (ACE_OS::strcasecmp (argv[curarg], + "-ORBScopePolicy") == 0) + { + curarg++; + if (curarg < argc) + { + char *name = argv[curarg]; + + if (ACE_OS::strcasecmp (name, + "SYSTEM") == 0) + scope_policy = THR_SCOPE_SYSTEM; + else if (ACE_OS::strcasecmp (name, + "PROCESS") == 0) + scope_policy = THR_SCOPE_PROCESS; + else + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("RT_ORB_Loader - unknown argument") + ACE_TEXT (" <%s> for -ORBScopePolicy\n"), name)); + } + } else { if (TAO_debug_level > 0) @@ -121,7 +126,8 @@ TAO_RT_ORB_Loader::init (int argc, /// Register the RTCORBA ORBInitializer. ACE_NEW_THROW_EX (temp_orb_initializer, TAO_RT_ORBInitializer (priority_mapping_type, - sched_policy), + sched_policy, + scope_policy), CORBA::NO_MEMORY ( CORBA_SystemException::_tao_minor_code ( TAO_DEFAULT_MINOR_CODE, @@ -145,10 +151,8 @@ TAO_RT_ORB_Loader::init (int argc, return 0; } - ///////////////////////////////////////////////////////////////////// - ACE_FACTORY_DEFINE (TAO, TAO_RT_ORB_Loader) ACE_STATIC_SVC_DEFINE (TAO_RT_ORB_Loader, ACE_TEXT ("RT_ORB_Loader"), @@ -157,4 +161,3 @@ ACE_STATIC_SVC_DEFINE (TAO_RT_ORB_Loader, ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, 0) - diff --git a/TAO/tao/RTCORBA/RT_ORB_Loader.h b/TAO/tao/RTCORBA/RT_ORB_Loader.h index 6312177b727..8c61838982b 100644 --- a/TAO/tao/RTCORBA/RT_ORB_Loader.h +++ b/TAO/tao/RTCORBA/RT_ORB_Loader.h @@ -19,7 +19,7 @@ #include "rtcorba_export.h" -#include "tao/Object_Loader.h" +#include "ace/Service_Object.h" #include "ace/Service_Config.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) @@ -28,7 +28,7 @@ class TAO_ORB_Core; -class TAO_RTCORBA_Export TAO_RT_ORB_Loader : public TAO_Object_Loader +class TAO_RTCORBA_Export TAO_RT_ORB_Loader : public ACE_Service_Object { public: /// Constructor. @@ -40,36 +40,10 @@ public: /// Initialize the RT ORB loader hooks. virtual int init (int argc, char* []); - - /// Create the object (unused) - virtual CORBA::Object_ptr create_object (CORBA::ORB_ptr orb, - int argc, - char *argv [], - CORBA::Environment &) - ACE_THROW_SPEC ((CORBA::SystemException)); - - /// Used to force the initialization of the ORB code. - static int Initializer (void); - }; ACE_STATIC_SVC_DECLARE_EXPORT (TAO_RTCORBA, TAO_RT_ORB_Loader) ACE_FACTORY_DECLARE (TAO_RTCORBA, TAO_RT_ORB_Loader) - -// #if defined(ACE_HAS_BROKEN_STATIC_CONSTRUCTORS) - -// typedef int (*TAO_Module_Initializer) (void); - -// static TAO_Module_Initializer -// TAO_Requires_RTCORBA_Initializer = &TAO_RT_ORB_Loader::Initializer; - -// #else - -// static int -// TAO_Requires_RTCORBA_Initializer = TAO_RT_ORB_Loader::Initializer (); - -// #endif /* ACE_HAS_BROKEN_STATIC_CONSTRUCTORS */ - #include "ace/post.h" #endif /* TAO_RT_ORB_LOADER_H */ diff --git a/TAO/tao/RTCORBA/RT_PolicyFactory.cpp b/TAO/tao/RTCORBA/RT_PolicyFactory.cpp index 39306126890..87420a3953a 100644 --- a/TAO/tao/RTCORBA/RT_PolicyFactory.cpp +++ b/TAO/tao/RTCORBA/RT_PolicyFactory.cpp @@ -66,4 +66,3 @@ TAO_RT_PolicyFactory::create_policy ( ACE_THROW_RETURN (CORBA::PolicyError (CORBA::BAD_POLICY_TYPE), CORBA::Policy::_nil ()); } - diff --git a/TAO/tao/RTCORBA/RT_Policy_i.h b/TAO/tao/RTCORBA/RT_Policy_i.h index 85fe4852b35..412ac3db2ec 100644 --- a/TAO/tao/RTCORBA/RT_Policy_i.h +++ b/TAO/tao/RTCORBA/RT_Policy_i.h @@ -20,7 +20,10 @@ # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -#include "RTCORBA.h" +#define TAO_RTCORBA_SAFE_INCLUDE +#include "RTCORBAC.h" +#undef TAO_RTCORBA_SAFE_INCLUDE + #include "tao/LocalObject.h" #include "ace/SString.h" diff --git a/TAO/tao/RTCORBA/RT_Protocols_Hooks.cpp b/TAO/tao/RTCORBA/RT_Protocols_Hooks.cpp index 01fd723b174..5519c6003d8 100644 --- a/TAO/tao/RTCORBA/RT_Protocols_Hooks.cpp +++ b/TAO/tao/RTCORBA/RT_Protocols_Hooks.cpp @@ -6,6 +6,8 @@ #include "tao/Invocation.h" #include "tao/Stub.h" #include "tao/MProfile.h" +#include "tao/Acceptor_Registry.h" +#include "tao/Thread_Lane_Resources.h" #include "Priority_Mapping_Manager.h" #include "RT_Stub.h" @@ -36,9 +38,8 @@ TAO_RT_Protocols_Hooks::init_hooks (TAO_ORB_Core *orb_core, // Save a reference to the priority mapping manager. CORBA::Object_var obj = - orb_core->object_ref_table ().resolve_initial_references ( - TAO_OBJID_PRIORITYMAPPINGMANAGER, - ACE_TRY_ENV); + orb_core->object_ref_table ().resolve_initial_references (TAO_OBJID_PRIORITYMAPPINGMANAGER, + ACE_TRY_ENV); ACE_CHECK; this->mapping_manager_ = @@ -48,11 +49,10 @@ TAO_RT_Protocols_Hooks::init_hooks (TAO_ORB_Core *orb_core, } int -TAO_RT_Protocols_Hooks::call_client_protocols_hook ( - int &send_buffer_size, - int &recv_buffer_size, - int &no_delay, - const char *protocol_type) +TAO_RT_Protocols_Hooks::call_client_protocols_hook (int &send_buffer_size, + int &recv_buffer_size, + int &no_delay, + const char *protocol_type) { if (TAO_RT_Protocols_Hooks::client_protocols_hook_ == 0) return -1; @@ -74,11 +74,10 @@ TAO_RT_Protocols_Hooks::set_client_protocols_hook (Client_Protocols_Hook hook) } int -TAO_RT_Protocols_Hooks::call_server_protocols_hook ( - int &send_buffer_size, - int &recv_buffer_size, - int &no_delay, - const char *protocol_type) +TAO_RT_Protocols_Hooks::call_server_protocols_hook (int &send_buffer_size, + int &recv_buffer_size, + int &no_delay, + const char *protocol_type) { if (TAO_RT_Protocols_Hooks::server_protocols_hook_ == 0) return -1; @@ -180,9 +179,9 @@ TAO_RT_Protocols_Hooks::add_rt_service_context_hook (TAO_Service_Context &servic void TAO_RT_Protocols_Hooks::get_selector_hook ( - CORBA::Policy *model_policy, - CORBA::Boolean &is_client_propagated, - CORBA::Short &server_priority) + CORBA::Policy *model_policy, + CORBA::Boolean &is_client_propagated, + CORBA::Short &server_priority) { RTCORBA::PriorityModelPolicy_var model_policy_ptr = @@ -204,11 +203,11 @@ TAO_RT_Protocols_Hooks::get_selector_hook ( void TAO_RT_Protocols_Hooks::get_selector_bands_policy_hook ( - CORBA::Policy *bands_policy, - CORBA::Short &min_priority, - CORBA::Short &max_priority, - CORBA::Short &p, - int &in_range) + CORBA::Policy *bands_policy, + CORBA::Short &min_priority, + CORBA::Short &max_priority, + CORBA::Short &p, + int &in_range) { RTCORBA::PriorityBandedConnectionPolicy_var bands_policy_ptr = RTCORBA::PriorityBandedConnectionPolicy::_narrow (bands_policy); @@ -392,6 +391,59 @@ TAO_RT_Protocols_Hooks::set_default_policies (CORBA::Environment &ACE_TRY_ENV) return 0; } +int +TAO_RT_Protocols_Hooks::set_default_server_protocol_policy (TAO_Acceptor_Registry &acceptor_registry, + CORBA::Environment &ACE_TRY_ENV) +{ + RTCORBA::ProtocolList protocols; + + TAO_AcceptorSetIterator end = + acceptor_registry.end (); + + for (TAO_AcceptorSetIterator acceptor = + acceptor_registry.begin (); + acceptor != end; + ++acceptor) + { + if (*acceptor == 0) + continue; + + CORBA::ULong current_length = + protocols.length (); + + protocols.length (current_length + 1); + + protocols[current_length].protocol_type = + (*acceptor)->tag (); + + protocols[current_length].orb_protocol_properties = + RTCORBA::ProtocolProperties::_nil (); + + // @@ Later, we will likely migrate to using RTCORBA protocol + // policies for configuration of protocols in nonRT use cases. + // Then, the code below will change to each protocol factory + // being responsible for creation of its own default protocol + // properties. + protocols[current_length].transport_protocol_properties = + TAO_Protocol_Properties_Factory::create_transport_protocol_property ((*acceptor)->tag ()); + } + + // Set ServerProtocolPolicy. + TAO_ServerProtocolPolicy *server_protocol_policy = 0; + ACE_NEW_RETURN (server_protocol_policy, + TAO_ServerProtocolPolicy (protocols), + -1); + + RTCORBA::ServerProtocolPolicy_var safe_server_protocol_policy = + server_protocol_policy; + + this->orb_core_->get_default_policies ()->set_policy (server_protocol_policy, + ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); + + return 0; +} + ACE_STATIC_SVC_DEFINE (TAO_RT_Protocols_Hooks, ACE_TEXT ("RT_Protocols_Hooks"), ACE_SVC_OBJ_T, diff --git a/TAO/tao/RTCORBA/RT_Protocols_Hooks.h b/TAO/tao/RTCORBA/RT_Protocols_Hooks.h index 45515b5813e..7eb98ddb5ad 100644 --- a/TAO/tao/RTCORBA/RT_Protocols_Hooks.h +++ b/TAO/tao/RTCORBA/RT_Protocols_Hooks.h @@ -136,10 +136,12 @@ public: //@} /// 1. Sets ORB-level policy defaults for this ORB. Currently sets - /// default RTCORBA policies: ServerProtocolPolicy and - /// ClientProtocolPolicy. + /// default RTCORBA policies: ClientProtocolPolicy. virtual int set_default_policies (CORBA::Environment &ACE_TRY_ENV); + int set_default_server_protocol_policy (TAO_Acceptor_Registry &acceptor_registry, + CORBA::Environment &ACE_TRY_ENV); + protected: TAO_ORB_Core *orb_core_; @@ -153,7 +155,6 @@ protected: ACE_STATIC_SVC_DECLARE_EXPORT (TAO_RTCORBA, TAO_RT_Protocols_Hooks) ACE_FACTORY_DECLARE (TAO_RTCORBA, TAO_RT_Protocols_Hooks) -ACE_STATIC_SVC_REQUIRE(TAO_RT_Protocols_Hooks) #include "ace/post.h" #endif /* TAO_RT_PROTOCOLS_HOOKS_H */ diff --git a/TAO/tao/RTCORBA/RT_Thread_Lane_Resources_Manager.cpp b/TAO/tao/RTCORBA/RT_Thread_Lane_Resources_Manager.cpp new file mode 100644 index 00000000000..0c0b75c99cd --- /dev/null +++ b/TAO/tao/RTCORBA/RT_Thread_Lane_Resources_Manager.cpp @@ -0,0 +1,134 @@ +// $Id$ + +#include "tao/RTCORBA/RT_Thread_Lane_Resources_Manager.h" + +ACE_RCSID(RTCORBA, RT_Thread_Lane_Resources_Manager, "$Id$") + +#include "tao/ORB_Core.h" +#include "tao/Acceptor_Registry.h" +#include "tao/Thread_Lane_Resources.h" +#include "tao/RTCORBA/Thread_Pool.h" +#include "tao/Leader_Follower.h" + +#if !defined (__ACE_INLINE__) +# include "tao/RTCORBA/RT_Thread_Lane_Resources_Manager.i" +#endif /* ! __ACE_INLINE__ */ + +TAO_RT_Thread_Lane_Resources_Manager::TAO_RT_Thread_Lane_Resources_Manager (TAO_ORB_Core &orb_core) + : TAO_Thread_Lane_Resources_Manager (orb_core), + default_lane_resources_ (0), + tp_manager_ (0) +{ + // Create the default resources. + ACE_NEW (this->default_lane_resources_, + TAO_Thread_Lane_Resources (orb_core)); + + // Create the thread-pool manager. + ACE_NEW (this->tp_manager_, + TAO_Thread_Pool_Manager (orb_core)); + +} + +TAO_RT_Thread_Lane_Resources_Manager::~TAO_RT_Thread_Lane_Resources_Manager (void) +{ + // Delete the default resources. + delete this->default_lane_resources_; + + // Delete the thread-pool manager. + delete this->tp_manager_; +} + +int +TAO_RT_Thread_Lane_Resources_Manager::open_default_resources (CORBA_Environment &ACE_TRY_ENV) +{ + int result = + this->default_lane_resources_->open_acceptor_registry (0, + ACE_TRY_ENV); + ACE_CHECK_RETURN (-1); + + return result; +} + +void +TAO_RT_Thread_Lane_Resources_Manager::finalize (void) +{ + // Finalize default resources. + this->default_lane_resources_->finalize (); + + // Finalize resources managed by the thread-pool manager. + this->tp_manager_->finalize (); +} + +void +TAO_RT_Thread_Lane_Resources_Manager::shutdown_reactor (void) +{ + // Shutdown default reactors. + this->default_lane_resources_->shutdown_reactor (); + + // Shutdown reactors managed by the thread-pool manager. + this->tp_manager_->shutdown_reactor (); +} + +int +TAO_RT_Thread_Lane_Resources_Manager::is_collocated (const TAO_MProfile &mprofile) +{ + int result = + this->default_lane_resources_->is_collocated (mprofile); + + if (result) + return result; + + return this->tp_manager_->is_collocated (mprofile); +} + +TAO_Thread_Lane_Resources & +TAO_RT_Thread_Lane_Resources_Manager::lane_resources (void) +{ + // Get the ORB_Core's TSS resources. + TAO_ORB_Core_TSS_Resources &tss = + *this->orb_core_->get_tss_resources (); + + // Get the lane for this thread. + TAO_Thread_Lane *lane = + (TAO_Thread_Lane *) tss.lane_; + + // If we have a valid lane, use that lane's resources. + if (lane) + return lane->resources (); + else + // Otherwise, return the default resources. + return *this->default_lane_resources_; +} + +TAO_Thread_Lane_Resources & +TAO_RT_Thread_Lane_Resources_Manager::default_lane_resources (void) +{ + return *this->default_lane_resources_; +} + +TAO_Thread_Pool_Manager & +TAO_RT_Thread_Lane_Resources_Manager::tp_manager (void) +{ + return *this->tp_manager_; +} + +TAO_Thread_Lane_Resources_Manager * +TAO_RT_Thread_Lane_Resources_Manager_Factory::create_thread_lane_resources_manager (TAO_ORB_Core &core) +{ + TAO_Thread_Lane_Resources_Manager *manager = 0; + + /// Create the RT Thread Lane Resources Manager. + ACE_NEW_RETURN (manager, + TAO_RT_Thread_Lane_Resources_Manager (core), + 0); + + return manager; +} + +ACE_STATIC_SVC_DEFINE (TAO_RT_Thread_Lane_Resources_Manager_Factory, + ACE_TEXT ("RT_Thread_Lane_Resources_Manager_Factory"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (TAO_RT_Thread_Lane_Resources_Manager_Factory), + ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, + 0) +ACE_FACTORY_DEFINE (TAO, TAO_RT_Thread_Lane_Resources_Manager_Factory) diff --git a/TAO/tao/RTCORBA/RT_Thread_Lane_Resources_Manager.h b/TAO/tao/RTCORBA/RT_Thread_Lane_Resources_Manager.h new file mode 100644 index 00000000000..eff190fd84a --- /dev/null +++ b/TAO/tao/RTCORBA/RT_Thread_Lane_Resources_Manager.h @@ -0,0 +1,105 @@ +//============================================================================= +/** + * @file RT_Thread_Lane_Resources_Manager.h + * + * $Id$ + * + * @author Irfan Pyarali + */ +// =================================================================== + +#ifndef TAO_RT_THREAD_LANE_RESOURCES_MANAGER_H +#define TAO_RT_THREAD_LANE_RESOURCES_MANAGER_H + +#include "ace/pre.h" +#include "tao/orbconf.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/RTCORBA/rtcorba_export.h" +#include "tao/Thread_Lane_Resources_Manager.h" +#include "ace/Service_Config.h" + +class TAO_Thread_Pool_Manager; + +/** + * @class TAO_RT_Thread_Lane_Resources_Manager + * + * @brief Manager for thread lane resources. + * + * \nosubgrouping + * + **/ +class TAO_RTCORBA_Export TAO_RT_Thread_Lane_Resources_Manager : + public TAO_Thread_Lane_Resources_Manager +{ +public: + + /// Constructor. + TAO_RT_Thread_Lane_Resources_Manager (TAO_ORB_Core &orb_core); + + /// Destructor. + ~TAO_RT_Thread_Lane_Resources_Manager (void); + + /// Finalize resources. + void finalize (void); + + /// Open default resources. + int open_default_resources (CORBA_Environment &ACE_TRY_ENV); + + /// Shutdown reactor. + void shutdown_reactor (void); + + // Does <mprofile> belong to us? + int is_collocated (const TAO_MProfile &mprofile); + + /// @name Accessors + // @{ + + TAO_Thread_Lane_Resources &lane_resources (void); + + TAO_Thread_Lane_Resources &default_lane_resources (void); + + TAO_Thread_Pool_Manager &tp_manager (void); + + // @} + +protected: + + /// Default lane resources. + TAO_Thread_Lane_Resources *default_lane_resources_; + + /// Thread Pool Manager. + TAO_Thread_Pool_Manager *tp_manager_; +}; + +/** + * @class TAO_RT_Thread_Lane_Resources_Manager_Factory + * + * @brief This class is a factory for managers of thread resources. + * + * \nosubgrouping + * + **/ +class TAO_RTCORBA_Export TAO_RT_Thread_Lane_Resources_Manager_Factory + : public TAO_Thread_Lane_Resources_Manager_Factory +{ +public: + + /// Factory method. + TAO_Thread_Lane_Resources_Manager *create_thread_lane_resources_manager (TAO_ORB_Core &core); + +}; + +ACE_STATIC_SVC_DECLARE_EXPORT (TAO_RTCORBA, TAO_RT_Thread_Lane_Resources_Manager_Factory) +ACE_FACTORY_DECLARE (TAO_RTCORBA, TAO_RT_Thread_Lane_Resources_Manager_Factory) + +#if defined (__ACE_INLINE__) +# include "tao/RTCORBA/RT_Thread_Lane_Resources_Manager.i" +#endif /* __ACE_INLINE__ */ + +#include "ace/post.h" + +#endif /* TAO_RT_THREAD_LANE_RESOURCES_MANAGER_H */ diff --git a/TAO/tao/RTCORBA/RT_Thread_Lane_Resources_Manager.i b/TAO/tao/RTCORBA/RT_Thread_Lane_Resources_Manager.i new file mode 100644 index 00000000000..cfa1da318d3 --- /dev/null +++ b/TAO/tao/RTCORBA/RT_Thread_Lane_Resources_Manager.i @@ -0,0 +1 @@ +// $Id$ diff --git a/TAO/tao/RTCORBA/TAO_RTCORBA.dsp b/TAO/tao/RTCORBA/TAO_RTCORBA.dsp index 212051b0044..9d3671c9980 100644 --- a/TAO/tao/RTCORBA/TAO_RTCORBA.dsp +++ b/TAO/tao/RTCORBA/TAO_RTCORBA.dsp @@ -156,15 +156,15 @@ LINK32=link.exe # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
-SOURCE=.\Direct_Priority_Mapping.cpp
+SOURCE=.\Continuous_Priority_Mapping.cpp
# End Source File
# Begin Source File
-SOURCE=.\Linear_Priority_Mapping.cpp
+SOURCE=.\Direct_Priority_Mapping.cpp
# End Source File
# Begin Source File
-SOURCE=.\Pool_Per_Endpoint.cpp
+SOURCE=.\Linear_Priority_Mapping.cpp
# End Source File
# Begin Source File
@@ -242,21 +242,25 @@ SOURCE=.\RTCORBAC.cpp SOURCE=.\Thread_Pool.cpp
# End Source File
+# Begin Source File
+
+SOURCE=.\RT_Thread_Lane_Resources_Manager.cpp
+# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
-SOURCE=.\Direct_Priority_Mapping.h
+SOURCE=.\Continuous_Priority_Mapping.h
# End Source File
# Begin Source File
-SOURCE=.\Linear_Priority_Mapping.h
+SOURCE=.\Direct_Priority_Mapping.h
# End Source File
# Begin Source File
-SOURCE=.\Pool_Per_Endpoint.h
+SOURCE=.\Linear_Priority_Mapping.h
# End Source File
# Begin Source File
@@ -338,21 +342,25 @@ SOURCE=.\RTCORBAC.h SOURCE=.\Thread_Pool.h
# End Source File
+# Begin Source File
+
+SOURCE=.\RT_Thread_Lane_Resources_Manager.h
+# End Source File
# End Group
# Begin Group "Inline Files"
# PROP Default_Filter ".i"
# Begin Source File
-SOURCE=.\Direct_Priority_Mapping.i
+SOURCE=.\Continuous_Priority_Mapping.i
# End Source File
# Begin Source File
-SOURCE=.\Linear_Priority_Mapping.i
+SOURCE=.\Direct_Priority_Mapping.i
# End Source File
# Begin Source File
-SOURCE=.\Pool_Per_Endpoint.i
+SOURCE=.\Linear_Priority_Mapping.i
# End Source File
# Begin Source File
@@ -398,6 +406,10 @@ SOURCE=.\RTCORBAC.i SOURCE=.\Thread_Pool.i
# End Source File
+# Begin Source File
+
+SOURCE=.\RT_Thread_Lane_Resources_Manager.i
+# End Source File
# End Group
# Begin Group "Template Files"
diff --git a/TAO/tao/RTCORBA/TAO_RTCORBA_Static.dsp b/TAO/tao/RTCORBA/TAO_RTCORBA_Static.dsp index ad1c282494f..49b7dd78a44 100644 --- a/TAO/tao/RTCORBA/TAO_RTCORBA_Static.dsp +++ b/TAO/tao/RTCORBA/TAO_RTCORBA_Static.dsp @@ -95,6 +95,10 @@ LIB32=link.exe -lib # PROP Default_Filter "i,inl"
# Begin Source File
+SOURCE=.\Continuous_Priority_Mapping.i
+# End Source File
+# Begin Source File
+
SOURCE=.\Direct_Priority_Mapping.i
# End Source File
# Begin Source File
@@ -103,7 +107,7 @@ SOURCE=.\Linear_Priority_Mapping.i # End Source File
# Begin Source File
-SOURCE=.\Pool_Per_Endpoint.i
+SOURCE=.\RT_Thread_Lane_Resources_Manager.i
# End Source File
# Begin Source File
@@ -155,6 +159,10 @@ SOURCE=.\Thread_Pool.i # PROP Default_Filter "h"
# Begin Source File
+SOURCE=.\Continuous_Priority_Mapping.h
+# End Source File
+# Begin Source File
+
SOURCE=.\Direct_Priority_Mapping.h
# End Source File
# Begin Source File
@@ -163,7 +171,7 @@ SOURCE=.\Linear_Priority_Mapping.h # End Source File
# Begin Source File
-SOURCE=.\Pool_Per_Endpoint.h
+SOURCE=.\RT_Thread_Lane_Resources_Manager.h
# End Source File
# Begin Source File
@@ -251,6 +259,10 @@ SOURCE=.\Thread_Pool.h # PROP Default_Filter "cpp"
# Begin Source File
+SOURCE=.\Continuous_Priority_Mapping.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\Direct_Priority_Mapping.cpp
# End Source File
# Begin Source File
@@ -259,7 +271,7 @@ SOURCE=.\Linear_Priority_Mapping.cpp # End Source File
# Begin Source File
-SOURCE=.\Pool_Per_Endpoint.cpp
+SOURCE=.\RT_Thread_Lane_Resources_Manager.cpp
# End Source File
# Begin Source File
diff --git a/TAO/tao/RTCORBA/Thread_Pool.cpp b/TAO/tao/RTCORBA/Thread_Pool.cpp index be3f4bf7f60..aba3f630f2d 100644 --- a/TAO/tao/RTCORBA/Thread_Pool.cpp +++ b/TAO/tao/RTCORBA/Thread_Pool.cpp @@ -7,14 +7,71 @@ ACE_RCSID(tao, Thread_Pool, "$Id$") #include "tao/Exception.h" #include "ace/Auto_Ptr.h" #include "tao/ORB_Core.h" +#include "tao/Acceptor_Registry.h" +#include "tao/Transport_Cache_Manager.h" +#include "tao/debug.h" +#include "tao/RTCORBA/Priority_Mapping_Manager.h" +#include "tao/Leader_Follower.h" #if !defined (__ACE_INLINE__) # include "Thread_Pool.i" #endif /* ! __ACE_INLINE__ */ -TAO_Thread_Pool_Threads::TAO_Thread_Pool_Threads (TAO_Thread_Lane &lane, - ACE_Thread_Manager &tm) - : ACE_Task_Base (&tm), +TAO_RT_New_Leader_Generator::TAO_RT_New_Leader_Generator (TAO_Thread_Lane &lane) + : lane_ (lane) +{ +} + +void +TAO_RT_New_Leader_Generator::no_leaders_available (void) +{ + // Note that we are checking this condition below without the lock + // held. The value of <static_threads> and <dynamic_threads> does + // not change, but <current_threads> increases when new dynamic + // threads are created. Even if we catch <current_threads> in an + // inconsistent state, we will double check later with the lock + // held. Therefore, this check should not cause any big problems. + if (this->lane_.current_threads () == + this->lane_.static_threads () + + this->lane_.dynamic_threads ()) + return; + + TAO_Thread_Pool_Manager &manager = + this->lane_.pool ().manager (); + + ACE_GUARD (ACE_SYNCH_MUTEX, + mon, + manager.lock ()); + + if (this->lane_.current_threads () < + (this->lane_.static_threads () + + this->lane_.dynamic_threads ()) && + !manager.orb_core ().has_shutdown ()) + { + if (TAO_debug_level > 0) + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("TAO Process %P Pool %d Lane %d Thread %t\n") + ACE_TEXT ("Current number of threads = %d; static threads = %d; dynamic threads = %d\n") + ACE_TEXT ("No leaders available; creating new leader!\n"), + this->lane_.pool ().id (), + this->lane_.id (), + this->lane_.current_threads (), + this->lane_.static_threads (), + this->lane_.dynamic_threads ())); + + int result = + this->lane_.create_dynamic_threads (1); + + if (result != 0) + ACE_ERROR ((LM_ERROR, + "Pool %d Lane %d Thread %t: cannot create dynamic thread\n", + this->lane_.pool ().id (), + this->lane_.id ())); + } +} + +TAO_Thread_Pool_Threads::TAO_Thread_Pool_Threads (TAO_Thread_Lane &lane) + : ACE_Task_Base (lane.pool ().manager ().orb_core ().thr_mgr ()), lane_ (lane) { } @@ -28,43 +85,167 @@ TAO_Thread_Pool_Threads::lane (void) const int TAO_Thread_Pool_Threads::svc (void) { - CORBA::ORB_var orb = - this->lane ().thread_pool ().orb (); + TAO_ORB_Core &orb_core = + this->lane ().pool ().manager ().orb_core (); + + if (orb_core.has_shutdown ()) + return 0; + + // Set TSS resources for this thread. + TAO_Thread_Pool_Threads::set_tss_resources (orb_core, + this->lane_); - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY + CORBA::ORB_ptr orb = + orb_core.orb (); + + ACE_TRY_NEW_ENV { + // Run the ORB. orb->run (ACE_TRY_ENV); ACE_TRY_CHECK; } ACE_CATCHANY { + // No point propagating this exception. Print it out. ACE_ERROR ((LM_ERROR, "orb->run() raised exception for thread %t\n")); + + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + ""); } ACE_ENDTRY; return 0; } -TAO_Thread_Lane::TAO_Thread_Lane (TAO_Thread_Pool &thread_pool, +void +TAO_Thread_Pool_Threads::set_tss_resources (TAO_ORB_Core &orb_core, + TAO_Thread_Lane &thread_lane) +{ + /// Get the ORB_Core's TSS resources. + TAO_ORB_Core_TSS_Resources &tss = + *orb_core.get_tss_resources (); + + /// Set the lane attribute in TSS. + tss.lane_ = &thread_lane; +} + +TAO_Thread_Lane::TAO_Thread_Lane (TAO_Thread_Pool &pool, CORBA::ULong id, CORBA::Short lane_priority, CORBA::ULong static_threads, - CORBA::ULong dynamic_threads) - : thread_pool_ (thread_pool), + CORBA::ULong dynamic_threads, + CORBA::Environment &) + : pool_ (pool), id_ (id), lane_priority_ (lane_priority), static_threads_ (static_threads), dynamic_threads_ (dynamic_threads), - threads_ (*this, - thread_pool_.thread_manager_) + current_threads_ (0), + threads_ (*this), + new_thread_generator_ (*this), + resources_ (pool.manager ().orb_core (), + &new_thread_generator_), + native_priority_ (TAO_INVALID_PRIORITY) +{ +} + +void +TAO_Thread_Lane::validate_and_map_priority (CORBA::Environment &ACE_TRY_ENV) +{ + // Check that the priority is in bounds. + if (this->lane_priority_ < RTCORBA::minPriority || + this->lane_priority_ > RTCORBA::maxPriority) + ACE_THROW (CORBA::BAD_PARAM ()); + + CORBA::ORB_ptr orb = + this->pool_.manager ().orb_core ().orb (); + + // Get the priority mapping manager. + CORBA::Object_var obj = + orb->resolve_initial_references (TAO_OBJID_PRIORITYMAPPINGMANAGER, + ACE_TRY_ENV); + ACE_CHECK; + + TAO_Priority_Mapping_Manager_var mapping_manager = + TAO_Priority_Mapping_Manager::_narrow (obj.in (), + ACE_TRY_ENV); + ACE_CHECK; + + RTCORBA::PriorityMapping *pm = + mapping_manager.in ()->mapping (); + + // Map CORBA priority to native priority. + CORBA::Boolean result = + pm->to_native (this->lane_priority_, + this->native_priority_); + + if (!result) + ACE_THROW (CORBA::DATA_CONVERSION ()); + + if (TAO_debug_level > 3) + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("TAO (%P|%t) - creating thread at ") + ACE_TEXT ("(corba:native) priority %d:%d\n"), + this->lane_priority_, + this->native_priority_)); +} + +void +TAO_Thread_Lane::open (CORBA::Environment &ACE_TRY_ENV) +{ + // Validate and map priority. + this->validate_and_map_priority (ACE_TRY_ENV); + ACE_CHECK; + + // Open the acceptor registry. + int result = 0; + result = + this->resources_.open_acceptor_registry (1, + ACE_TRY_ENV); + ACE_CHECK; + + if (result == -1) + ACE_THROW (CORBA::INTERNAL ( + CORBA_SystemException::_tao_minor_code ( + TAO_ACCEPTOR_REGISTRY_OPEN_LOCATION_CODE, + 0), + CORBA::COMPLETED_NO)); +} + +TAO_Thread_Lane::~TAO_Thread_Lane (void) +{ +} + +void +TAO_Thread_Lane::finalize (void) +{ + // Finalize resources. + this->resources_.finalize (); +} + +void +TAO_Thread_Lane::shutdown_reactor (void) +{ + this->resources_.shutdown_reactor (); +} + +void +TAO_Thread_Lane::wait (void) +{ + this->threads_.wait (); +} + +int +TAO_Thread_Lane::is_collocated (const TAO_MProfile &mprofile) { + return this->resources_.is_collocated (mprofile); } int TAO_Thread_Lane::create_static_threads (void) { + // Create static threads. return this->create_dynamic_threads (this->static_threads_); } @@ -91,22 +272,40 @@ TAO_Thread_Lane::create_dynamic_threads (CORBA::ULong number_of_threads) for (index = 0; index != number_of_threads; ++index) - stack_size_array[index] = this->thread_pool_.stack_size_; + stack_size_array[index] = + this->pool ().stack_size_; // Make sure the dynamically created stack size array is properly // deleted. ACE_Auto_Basic_Array_Ptr<size_t> auto_stack_size_array (stack_size_array); + TAO_ORB_Core &orb_core = + this->pool ().manager ().orb_core (); + + long flags = + default_flags | + orb_core.orb_params ()->scope_policy () | + orb_core.orb_params ()->sched_policy (); + // Activate the threads. - return this->threads_.activate (default_flags, - number_of_threads, - force_active, - this->lane_priority_, - default_grp_id, - default_task, - default_thread_handles, - default_stack, - stack_size_array); + int result = + this->threads_.activate (flags, + number_of_threads, + force_active, + this->native_priority_, + default_grp_id, + default_task, + default_thread_handles, + default_stack, + stack_size_array); + + if (result != 0) + return result; + + this->current_threads_ += + number_of_threads; + + return result; } CORBA::ULong @@ -116,9 +315,9 @@ TAO_Thread_Lane::id (void) const } TAO_Thread_Pool & -TAO_Thread_Lane::thread_pool (void) const +TAO_Thread_Lane::pool (void) const { - return this->thread_pool_; + return this->pool_; } CORBA::Short @@ -127,6 +326,12 @@ TAO_Thread_Lane::lane_priority (void) const return this->lane_priority_; } +CORBA::Short +TAO_Thread_Lane::native_priority (void) const +{ + return this->native_priority_; +} + CORBA::ULong TAO_Thread_Lane::static_threads (void) const { @@ -139,13 +344,32 @@ TAO_Thread_Lane::dynamic_threads (void) const return this->dynamic_threads_; } +CORBA::ULong +TAO_Thread_Lane::current_threads (void) const +{ + return this->current_threads_; +} + +void +TAO_Thread_Lane::current_threads (CORBA::ULong current_threads) +{ + this->current_threads_ = current_threads; +} + TAO_Thread_Pool_Threads & TAO_Thread_Lane::threads (void) { return this->threads_; } -TAO_Thread_Pool::TAO_Thread_Pool (CORBA::ULong id, +TAO_Thread_Lane_Resources & +TAO_Thread_Lane::resources (void) +{ + return this->resources_; +} + +TAO_Thread_Pool::TAO_Thread_Pool (TAO_Thread_Pool_Manager &manager, + CORBA::ULong id, CORBA::ULong stack_size, CORBA::ULong static_threads, CORBA::ULong dynamic_threads, @@ -153,8 +377,9 @@ TAO_Thread_Pool::TAO_Thread_Pool (CORBA::ULong id, CORBA::Boolean allow_request_buffering, CORBA::ULong max_buffered_requests, CORBA::ULong max_request_buffer_size, - CORBA::ORB_ptr orb) - : id_ (id), + CORBA::Environment &ACE_TRY_ENV) + : manager_ (manager), + id_ (id), stack_size_ (stack_size), allow_borrowing_ (0), allow_request_buffering_ (allow_request_buffering), @@ -162,26 +387,34 @@ TAO_Thread_Pool::TAO_Thread_Pool (CORBA::ULong id, max_request_buffer_size_ (max_request_buffer_size), lanes_ (0), number_of_lanes_ (1), - thread_manager_ (*orb->orb_core ()->thr_mgr ()), - orb_ (CORBA::ORB::_duplicate (orb)) + with_lanes_ (0) { + // No support for buffering. + if (allow_request_buffering) + ACE_THROW (CORBA::NO_IMPLEMENT ()); + + // Create one lane. this->lanes_ = new TAO_Thread_Lane *[this->number_of_lanes_]; - this->lanes_[0] = new TAO_Thread_Lane (*this, - 0, - default_priority, - static_threads, - dynamic_threads); + this->lanes_[0] = + new TAO_Thread_Lane (*this, + 0, + default_priority, + static_threads, + dynamic_threads, + ACE_TRY_ENV); } -TAO_Thread_Pool::TAO_Thread_Pool (CORBA::ULong id, +TAO_Thread_Pool::TAO_Thread_Pool (TAO_Thread_Pool_Manager &manager, + CORBA::ULong id, CORBA::ULong stack_size, const RTCORBA::ThreadpoolLanes &lanes, CORBA::Boolean allow_borrowing, CORBA::Boolean allow_request_buffering, CORBA::ULong max_buffered_requests, CORBA::ULong max_request_buffer_size, - CORBA::ORB_ptr orb) - : id_ (id), + CORBA::Environment &ACE_TRY_ENV) + : manager_ (manager), + id_ (id), stack_size_ (stack_size), allow_borrowing_ (allow_borrowing), allow_request_buffering_ (allow_request_buffering), @@ -189,22 +422,43 @@ TAO_Thread_Pool::TAO_Thread_Pool (CORBA::ULong id, max_request_buffer_size_ (max_request_buffer_size), lanes_ (0), number_of_lanes_ (lanes.length ()), - thread_manager_ (*orb->orb_core ()->thr_mgr ()), - orb_ (CORBA::ORB::_duplicate (orb)) + with_lanes_ (1) { + // No support for buffering or borrowing. + if (allow_borrowing || + allow_request_buffering) + ACE_THROW (CORBA::NO_IMPLEMENT ()); + + // Create multiple lane. this->lanes_ = new TAO_Thread_Lane *[this->number_of_lanes_]; for (CORBA::ULong i = 0; i != this->number_of_lanes_; ++i) - this->lanes_[i] = new TAO_Thread_Lane (*this, - i, - lanes[i].lane_priority, - lanes[i].static_threads, - lanes[i].dynamic_threads); + this->lanes_[i] = + new TAO_Thread_Lane (*this, + i, + lanes[i].lane_priority, + lanes[i].static_threads, + lanes[i].dynamic_threads, + ACE_TRY_ENV); +} + +void +TAO_Thread_Pool::open (CORBA::Environment &ACE_TRY_ENV) +{ + // Open all the lanes. + for (CORBA::ULong i = 0; + i != this->number_of_lanes_; + ++i) + { + this->lanes_[i]->open (ACE_TRY_ENV); + ACE_CHECK; + } } TAO_Thread_Pool::~TAO_Thread_Pool (void) { + // Delete all the lanes. for (CORBA::ULong i = 0; i != this->number_of_lanes_; ++i) @@ -213,6 +467,54 @@ TAO_Thread_Pool::~TAO_Thread_Pool (void) delete[] this->lanes_; } +void +TAO_Thread_Pool::finalize (void) +{ + // Finalize all the lanes. + for (CORBA::ULong i = 0; + i != this->number_of_lanes_; + ++i) + this->lanes_[i]->finalize (); +} + +void +TAO_Thread_Pool::shutdown_reactor (void) +{ + // Finalize all the lanes. + for (CORBA::ULong i = 0; + i != this->number_of_lanes_; + ++i) + this->lanes_[i]->shutdown_reactor (); +} + +void +TAO_Thread_Pool::wait (void) +{ + // Finalize all the lanes. + for (CORBA::ULong i = 0; + i != this->number_of_lanes_; + ++i) + this->lanes_[i]->wait (); +} + +int +TAO_Thread_Pool::is_collocated (const TAO_MProfile &mprofile) +{ + // Finalize all the lanes. + for (CORBA::ULong i = 0; + i != this->number_of_lanes_; + ++i) + { + int result = + this->lanes_[i]->is_collocated (mprofile); + + if (result) + return result; + } + + return 0; +} + int TAO_Thread_Pool::create_static_threads (void) { @@ -232,6 +534,18 @@ TAO_Thread_Pool::create_static_threads (void) return 0; } +int +TAO_Thread_Pool::with_lanes (void) const +{ + return this->with_lanes_; +} + +TAO_Thread_Pool_Manager & +TAO_Thread_Pool::manager (void) const +{ + return this->manager_; +} + CORBA::ULong TAO_Thread_Pool::id (void) const { @@ -280,18 +594,6 @@ TAO_Thread_Pool::number_of_lanes (void) const return this->number_of_lanes_; } -ACE_Thread_Manager & -TAO_Thread_Pool::thread_manager (void) -{ - return this->thread_manager_; -} - -CORBA::ORB_ptr -TAO_Thread_Pool::orb (void) const -{ - return CORBA::ORB::_duplicate (this->orb_.in ()); -} - #define TAO_THREAD_POOL_MANAGER_GUARD \ ACE_GUARD_THROW_EX ( \ ACE_SYNCH_MUTEX, \ @@ -303,22 +605,71 @@ TAO_Thread_Pool::orb (void) const 0), \ CORBA::COMPLETED_NO)); -TAO_Thread_Pool_Manager::TAO_Thread_Pool_Manager (TAO_ORB_Core *orb_core) +TAO_Thread_Pool_Manager::TAO_Thread_Pool_Manager (TAO_ORB_Core &orb_core) : orb_core_ (orb_core), thread_pools_ (), - thread_pool_id_counter_ (0), + thread_pool_id_counter_ (1), lock_ () { } TAO_Thread_Pool_Manager::~TAO_Thread_Pool_Manager (void) { + // Delete all the pools. for (THREAD_POOLS::ITERATOR iterator = this->thread_pools_.begin (); iterator != this->thread_pools_.end (); ++iterator) delete (*iterator).int_id_; } +void +TAO_Thread_Pool_Manager::finalize (void) +{ + // Finalize all the pools. + for (THREAD_POOLS::ITERATOR iterator = this->thread_pools_.begin (); + iterator != this->thread_pools_.end (); + ++iterator) + (*iterator).int_id_->finalize (); +} + +void +TAO_Thread_Pool_Manager::shutdown_reactor (void) +{ + // Finalize all the pools. + for (THREAD_POOLS::ITERATOR iterator = this->thread_pools_.begin (); + iterator != this->thread_pools_.end (); + ++iterator) + (*iterator).int_id_->shutdown_reactor (); +} + +void +TAO_Thread_Pool_Manager::wait (void) +{ + // Finalize all the pools. + for (THREAD_POOLS::ITERATOR iterator = this->thread_pools_.begin (); + iterator != this->thread_pools_.end (); + ++iterator) + (*iterator).int_id_->wait (); +} + +int +TAO_Thread_Pool_Manager::is_collocated (const TAO_MProfile &mprofile) +{ + // Finalize all the pools. + for (THREAD_POOLS::ITERATOR iterator = this->thread_pools_.begin (); + iterator != this->thread_pools_.end (); + ++iterator) + { + int result = + (*iterator).int_id_->is_collocated (mprofile); + + if (result) + return result; + } + + return 0; +} + RTCORBA::ThreadpoolId TAO_Thread_Pool_Manager::create_threadpool (CORBA::ULong stacksize, CORBA::ULong static_threads, @@ -393,7 +744,8 @@ TAO_Thread_Pool_Manager::create_threadpool_i (CORBA::ULong stacksize, TAO_Thread_Pool *thread_pool = 0; ACE_NEW_THROW_EX (thread_pool, - TAO_Thread_Pool (this->thread_pool_id_counter_, + TAO_Thread_Pool (*this, + this->thread_pool_id_counter_, stacksize, static_threads, dynamic_threads, @@ -401,7 +753,7 @@ TAO_Thread_Pool_Manager::create_threadpool_i (CORBA::ULong stacksize, allow_request_buffering, max_buffered_requests, max_request_buffer_size, - this->orb_core_->orb ()), + ACE_TRY_ENV), CORBA::NO_MEMORY ()); ACE_CHECK_RETURN (0); @@ -423,14 +775,15 @@ TAO_Thread_Pool_Manager::create_threadpool_with_lanes_i (CORBA::ULong stacksize, TAO_Thread_Pool *thread_pool = 0; ACE_NEW_THROW_EX (thread_pool, - TAO_Thread_Pool (this->thread_pool_id_counter_, + TAO_Thread_Pool (*this, + this->thread_pool_id_counter_, stacksize, lanes, allow_borrowing, allow_request_buffering, max_buffered_requests, max_request_buffer_size, - this->orb_core_->orb ()), + ACE_TRY_ENV), CORBA::NO_MEMORY ()); ACE_CHECK_RETURN (0); @@ -446,11 +799,15 @@ TAO_Thread_Pool_Manager::create_threadpool_helper (TAO_Thread_Pool *thread_pool, // Make sure of safe deletion in case of errors. auto_ptr<TAO_Thread_Pool> safe_thread_pool (thread_pool); + // Open the pool. + thread_pool->open (ACE_TRY_ENV); + ACE_CHECK_RETURN (0); + // Create the static threads. int result = thread_pool->create_static_threads (); - // Throw exceptin in case of errors. + // Throw exception in case of errors. if (result != 0) ACE_THROW_RETURN (CORBA::INTERNAL (), result); @@ -493,10 +850,31 @@ TAO_Thread_Pool_Manager::destroy_threadpool_i (RTCORBA::ThreadpoolId thread_pool if (result != 0) ACE_THROW (RTCORBA::RTORB::InvalidThreadpool ()); + // Shutdown reactor. + thread_pool->shutdown_reactor (); + + // Wait for the threads. + thread_pool->wait (); + + // Finalize resources. + thread_pool->finalize (); + // Delete the thread pool. delete thread_pool; } +TAO_ORB_Core & +TAO_Thread_Pool_Manager::orb_core (void) const +{ + return this->orb_core_; +} + +ACE_SYNCH_MUTEX & +TAO_Thread_Pool_Manager::lock (void) +{ + return this->lock_; +} + TAO_Thread_Pool_Manager::THREAD_POOLS & TAO_Thread_Pool_Manager::thread_pools (void) { @@ -529,4 +907,3 @@ template class ACE_Auto_Basic_Array_Ptr<size_t>; #pragma instantiate ACE_Auto_Basic_Array_Ptr<size_t> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ - diff --git a/TAO/tao/RTCORBA/Thread_Pool.h b/TAO/tao/RTCORBA/Thread_Pool.h index bce170bd27e..3f8bdeb4f80 100644 --- a/TAO/tao/RTCORBA/Thread_Pool.h +++ b/TAO/tao/RTCORBA/Thread_Pool.h @@ -18,14 +18,44 @@ # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -#include "ace/Task.h" -#include "RTCORBA.h" -#include "tao/ORB.h" +#define TAO_RTCORBA_SAFE_INCLUDE +#include "RTCORBAC.h" +#undef TAO_RTCORBA_SAFE_INCLUDE + #include "ace/Hash_Map_Manager.h" +#include "tao/Thread_Lane_Resources.h" +#include "tao/New_Leader_Generator.h" +#include "ace/Task.h" class TAO_Thread_Lane; /** + * @class TAO_RT_New_Leader_Generator + * + * @brief Class for creating dynamic threads. + * + * \nosubgrouping + * + **/ +class TAO_RTCORBA_Export TAO_RT_New_Leader_Generator + : public TAO_New_Leader_Generator +{ +public: + + /// Constructor. + TAO_RT_New_Leader_Generator (TAO_Thread_Lane &lane); + + /// Leader/Follower class uses this method to notify the system that + /// we are out of leaders. + void no_leaders_available (void); + +private: + + /// Lane associated with this leader generator. + TAO_Thread_Lane &lane_; +}; + +/** * @class TAO_Thread_Pool_Threads * * @brief Class representing a thread running in a thread lane. @@ -38,8 +68,7 @@ class TAO_RTCORBA_Export TAO_Thread_Pool_Threads : public ACE_Task_Base public: /// Constructor. - TAO_Thread_Pool_Threads (TAO_Thread_Lane &lane, - ACE_Thread_Manager &tm); + TAO_Thread_Pool_Threads (TAO_Thread_Lane &lane); /// Method executed when a thread is spawned. int svc (void); @@ -47,6 +76,10 @@ public: /// Accessor to the lane to which this thread belongs to. TAO_Thread_Lane &lane (void) const; + /// Set TSS resources for the current thread. + static void set_tss_resources (TAO_ORB_Core &orb_core, + TAO_Thread_Lane &thread_lane); + private: /// Lane to which this thread belongs to. @@ -72,7 +105,26 @@ public: CORBA::ULong id, CORBA::Short lane_priority, CORBA::ULong static_threads, - CORBA::ULong dynamic_threads); + CORBA::ULong dynamic_threads, + CORBA::Environment &ACE_TRY_ENV); + + /// Destructor. + ~TAO_Thread_Lane (void); + + /// Open the lane. + void open (CORBA::Environment &ACE_TRY_ENV); + + /// Finalize the resources. + void finalize (void); + + /// Shutdown the reactor. + void shutdown_reactor (void); + + /// Wait for threads to exit. + void wait (void); + + // Does <mprofile> belong to us? + int is_collocated (const TAO_MProfile &mprofile); /// Create the static threads - only called once. int create_static_threads (void); @@ -84,29 +136,49 @@ public: /// @name Accessors // @{ + TAO_Thread_Pool &pool (void) const; + CORBA::ULong id (void) const; + CORBA::Short lane_priority (void) const; CORBA::ULong static_threads (void) const; CORBA::ULong dynamic_threads (void) const; - CORBA::ULong id (void) const; + CORBA::ULong current_threads (void) const; + void current_threads (CORBA::ULong); + + CORBA::Short native_priority (void) const; - TAO_Thread_Pool &thread_pool (void) const; TAO_Thread_Pool_Threads &threads (void); + TAO_Thread_Lane_Resources &resources (void); + // @} private: - TAO_Thread_Pool &thread_pool_; + /// Validate lane's priority and map it to a native value. + void validate_and_map_priority (CORBA::Environment &ACE_TRY_ENV); + + TAO_Thread_Pool &pool_; CORBA::ULong id_; CORBA::Short lane_priority_; CORBA::ULong static_threads_; CORBA::ULong dynamic_threads_; + CORBA::ULong current_threads_; + TAO_Thread_Pool_Threads threads_; + + TAO_RT_New_Leader_Generator new_thread_generator_; + + TAO_Thread_Lane_Resources resources_; + + CORBA::Short native_priority_; }; +class TAO_Thread_Pool_Manager; + /** * @class TAO_Thread_Pool * @@ -123,7 +195,8 @@ class TAO_RTCORBA_Export TAO_Thread_Pool public: /// Constructor (for pools without lanes). - TAO_Thread_Pool (CORBA::ULong id, + TAO_Thread_Pool (TAO_Thread_Pool_Manager &manager, + CORBA::ULong id, CORBA::ULong stack_size, CORBA::ULong static_threads, CORBA::ULong dynamic_threads, @@ -131,27 +204,47 @@ public: CORBA::Boolean allow_request_buffering, CORBA::ULong max_buffered_requests, CORBA::ULong max_request_buffer_size, - CORBA::ORB_ptr orb); + CORBA::Environment &ACE_TRY_ENV); /// Constructor (for pools with lanes). - TAO_Thread_Pool (CORBA::ULong id, + TAO_Thread_Pool (TAO_Thread_Pool_Manager &manager, + CORBA::ULong id, CORBA::ULong stack_size, const RTCORBA::ThreadpoolLanes &lanes, CORBA::Boolean allow_borrowing, CORBA::Boolean allow_request_buffering, CORBA::ULong max_buffered_requests, CORBA::ULong max_request_buffer_size, - CORBA::ORB_ptr orb); + CORBA::Environment &ACE_TRY_ENV); /// Destructor. ~TAO_Thread_Pool (void); + /// Open the pool. + void open (CORBA::Environment &ACE_TRY_ENV); + + /// Finalize the resources. + void finalize (void); + + /// Shutdown the reactor. + void shutdown_reactor (void); + + /// Wait for threads to exit. + void wait (void); + + // Does <mprofile> belong to us? + int is_collocated (const TAO_MProfile &mprofile); + /// Create the static threads - only called once. int create_static_threads (void); + /// Check if this thread pool has (explicit) lanes. + int with_lanes (void) const; + /// @name Accessors // @{ + TAO_Thread_Pool_Manager &manager (void) const; CORBA::ULong id (void) const; CORBA::ULong stack_size (void) const; @@ -160,9 +253,6 @@ public: CORBA::ULong max_buffered_requests (void) const; CORBA::ULong max_request_buffer_size (void) const; - ACE_Thread_Manager &thread_manager (void); - - CORBA::ORB_ptr orb (void) const; TAO_Thread_Lane **lanes (void); CORBA::ULong number_of_lanes (void) const; @@ -170,6 +260,7 @@ public: private: + TAO_Thread_Pool_Manager &manager_; CORBA::ULong id_; CORBA::ULong stack_size_; @@ -180,12 +271,11 @@ private: TAO_Thread_Lane **lanes_; CORBA::ULong number_of_lanes_; - - ACE_Thread_Manager &thread_manager_; - - CORBA::ORB_var orb_; + int with_lanes_; }; +class TAO_ORB_Core; + /** * @class TAO_Thread_Pool_Manager * @@ -199,14 +289,22 @@ class TAO_RTCORBA_Export TAO_Thread_Pool_Manager public: /// Constructor. - TAO_Thread_Pool_Manager (TAO_ORB_Core *orb_core); + TAO_Thread_Pool_Manager (TAO_ORB_Core &orb_core); /// Destructor. ~TAO_Thread_Pool_Manager (void); - /// Create the static threads - only called once. - int - create_static_threads (void); + /// Finalize the resources. + void finalize (void); + + /// Shutdown the reactor. + void shutdown_reactor (void); + + /// Wait for threads to exit. + void wait (void); + + // Does <mprofile> belong to us? + int is_collocated (const TAO_MProfile &mprofile); /// Create a threadpool without lanes. RTCORBA::ThreadpoolId @@ -217,7 +315,7 @@ public: CORBA::Boolean allow_request_buffering, CORBA::ULong max_buffered_requests, CORBA::ULong max_request_buffer_size, - CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ()) + CORBA::Environment &ACE_TRY_ENV) ACE_THROW_SPEC ((CORBA::SystemException)); /// Create a threadpool with lanes. @@ -228,22 +326,29 @@ public: CORBA::Boolean allow_request_buffering, CORBA::ULong max_buffered_requests, CORBA::ULong max_request_buffer_size, - CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ()) + CORBA::Environment &ACE_TRY_ENV) ACE_THROW_SPEC ((CORBA::SystemException)); /// Destroy a threadpool. - void - destroy_threadpool (RTCORBA::ThreadpoolId threadpool, - CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ()) + void destroy_threadpool (RTCORBA::ThreadpoolId threadpool, + CORBA::Environment &ACE_TRY_ENV) ACE_THROW_SPEC ((CORBA::SystemException, RTCORBA::RTORB::InvalidThreadpool)); /// Collection of thread pools. typedef ACE_Hash_Map_Manager<RTCORBA::ThreadpoolId, TAO_Thread_Pool *, ACE_Null_Mutex> THREAD_POOLS; - /// Access the thread pools managed by this class. + /// @name Accessors + // @{ + + ACE_SYNCH_MUTEX &lock (void); + + TAO_ORB_Core &orb_core (void) const; + THREAD_POOLS &thread_pools (void); + // @} + private: /// @name Helpers @@ -282,7 +387,7 @@ private: // @} - TAO_ORB_Core *orb_core_; + TAO_ORB_Core &orb_core_; THREAD_POOLS thread_pools_; RTCORBA::ThreadpoolId thread_pool_id_counter_; |