diff options
author | iliyan <iliyan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2007-02-22 18:55:20 +0000 |
---|---|---|
committer | iliyan <iliyan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2007-02-22 18:55:20 +0000 |
commit | 1b00cae0939871bfcb9fab8c306aa8f47cc5a3be (patch) | |
tree | 6b3fdca23d1765323cba09896fe9af08fce0d6cb | |
parent | a759ce187bc35d1a8a43d1c050c4bb0b859c058f (diff) | |
download | ATCD-1b00cae0939871bfcb9fab8c306aa8f47cc5a3be.tar.gz |
ChangeLogTag: Thu Feb 22 18:37:00 UTC 2007 Iliyan Jeliazkov <iliyan@ociweb.com>
-rw-r--r-- | ACE/ChangeLog | 17 | ||||
-rw-r--r-- | ACE/ace/Service_Config.cpp | 27 | ||||
-rw-r--r-- | ACE/ace/Service_Config.h | 12 | ||||
-rw-r--r-- | ACE/ace/Service_Config.inl | 6 | ||||
-rw-r--r-- | ACE/ace/Service_Gestalt.cpp | 3 | ||||
-rw-r--r-- | ACE/ace/Service_Gestalt.h | 2 |
6 files changed, 27 insertions, 40 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog index ee18d7a7472..c19533bb04e 100644 --- a/ACE/ChangeLog +++ b/ACE/ChangeLog @@ -1,3 +1,16 @@ +Thu Feb 22 18:37:00 UTC 2007 Iliyan Jeliazkov <iliyan@ociweb.com> + + * ace/Service_Config.h: + * ace/Service_Config.inl: + * ace/Service_Config.cpp: + * ace/Service_Gestalt.h: + * ace/Service_Gestalt.cpp: + + Fixing build troubles caused by the different ACE_TSS interface + for single-threaded builds. Eliminated the intermediary class + (TSS_Resources) and now storing the actual service gestalt + pointer in TSS, thus reducig the memory allocation overhead. + Thu Feb 22 16:45:30 UTC 2007 Steve Huston <shuston@riverace.com> * tests/MT_SOCK_Test.cpp: Document the actual cause of what's been @@ -39,7 +52,7 @@ Thu Feb 22 13:03:01 UTC 2007 Carlos O'Ryan <coryan@atdesk.com> * Merged changes from the bug_2815 branch. From revision 77182 to revision 77315. - Tue Feb 20 18:17:00 UTC 2007 Carlos O'Ryan <coryan@atdesk.com> + Tue Feb 20 18:17:00 UTC 2007 Carlos O'Ryan <coryan@atdesk.com> * ace/ace_for_tao.mpc: Add Notification_Queue.cpp to this file too. Thanks to Johnny @@ -91,7 +104,7 @@ Thu Feb 22 13:03:01 UTC 2007 Carlos O'Ryan <coryan@atdesk.com> * ace/Notification_Queue.h: * ace/Notification_Queue.inl: - * ace/Notification_Queue.cpp: + * ace/Notification_Queue.cpp: Re-factored to use ACE_Intrusive_List in the implementation. This eliminates memory allocations during additions and removal of elements. Also, many of the operations cannot fail, so the diff --git a/ACE/ace/Service_Config.cpp b/ACE/ace/Service_Config.cpp index 8da4ad45aeb..040ebc59b01 100644 --- a/ACE/ace/Service_Config.cpp +++ b/ACE/ace/Service_Config.cpp @@ -89,27 +89,6 @@ int ACE_Service_Config::be_a_daemon_ = 0; int ACE_Service_Config::signum_ = SIGHUP; -/// -ACE_Service_Config::TSS_Resources::TSS_Resources (void) - : ptr_ (ACE_Service_Config::global()) -{ -} - -/// -ACE_Service_Gestalt * -ACE_Service_Config::TSS_Resources::ptr () const -{ - return this->ptr_; -} - -/// -ACE_Service_Gestalt * -ACE_Service_Config::TSS_Resources::ptr (ACE_Service_Gestalt *n) -{ - return this->ptr_ = n; -} - - void ACE_Service_Config::dump (void) const { @@ -395,6 +374,7 @@ ACE_Service_Config::ACE_Service_Config (int ignore_static_svcs, size_t size, int signum) : ACE_Service_Gestalt (size, false, ignore_static_svcs) + , tss_ (this) { ACE_TRACE ("ACE_Service_Config::ACE_Service_Config"); @@ -462,6 +442,7 @@ ACE_Service_Config::create_service_type_impl (const ACE_TCHAR *name, ACE_Service_Config::ACE_Service_Config (const ACE_TCHAR program_name[], const ACE_TCHAR *logger_key) : ACE_Service_Gestalt (ACE_Service_Repository::DEFAULT_SIZE, false) + , tss_ (this) { ACE_TRACE ("ACE_Service_Config::ACE_Service_Config"); @@ -568,6 +549,10 @@ ACE_Service_Config::fini_svcs (void) ACE_Service_Config::~ACE_Service_Config (void) { ACE_TRACE ("ACE_Service_Config::~ACE_Service_Config"); + + // We do not want ~ACE_TSS<> to delete this again (single-thread + // builds) + this->tss_.ts_object (0); } // ************************************************************ diff --git a/ACE/ace/Service_Config.h b/ACE/ace/Service_Config.h index f6c7e5f0975..6151f8f4cc1 100644 --- a/ACE/ace/Service_Config.h +++ b/ACE/ace/Service_Config.h @@ -218,17 +218,7 @@ protected: * independent of which thread is actually using the SC at the time * to do so. */ - class ACE_Export TSS_Resources - { - public: - TSS_Resources (void); - ACE_Service_Gestalt *ptr () const; - ACE_Service_Gestalt *ptr (ACE_Service_Gestalt *n); - private: - ACE_Service_Gestalt *ptr_; - }; - - ACE_TSS_TYPE (TSS_Resources) tss_; + ACE_TSS <ACE_Service_Gestalt> tss_; /// = Static interfaces diff --git a/ACE/ace/Service_Config.inl b/ACE/ace/Service_Config.inl index ec07c3847a7..341692c79ea 100644 --- a/ACE/ace/Service_Config.inl +++ b/ACE/ace/Service_Config.inl @@ -60,7 +60,7 @@ ACE_Service_Config::parse_args (int argc, ACE_TCHAR *argv[]) ACE_INLINE ACE_Service_Gestalt * ACE_Service_Config::instance (void) { - return ACE_Service_Config::global ()->tss_->ptr (); + return ACE_Service_Config::global ()->tss_; } @@ -72,14 +72,14 @@ ACE_Service_Config::instance (void) ACE_INLINE ACE_Service_Gestalt * ACE_Service_Config::current (void) { - return ACE_Service_Config::global ()->tss_->ptr (); + return ACE_Service_Config::global ()->tss_; } /// A mutator to set the "current" (TSS) gestalt instance. ACE_INLINE ACE_Service_Gestalt* ACE_Service_Config::current (ACE_Service_Gestalt *newcurrent) { - return ACE_Service_Config::global ()->tss_->ptr (newcurrent); + return ACE_Service_Config::global ()->tss_.ts_object (newcurrent); } diff --git a/ACE/ace/Service_Gestalt.cpp b/ACE/ace/Service_Gestalt.cpp index 8b6eeb9fc97..ff3ea6f8289 100644 --- a/ACE/ace/Service_Gestalt.cpp +++ b/ACE/ace/Service_Gestalt.cpp @@ -1298,8 +1298,7 @@ ACE_Service_Gestalt::close (void) { ACE_TRACE ("ACE_Service_Gestalt::close"); - this->is_opened_--; - if (this->is_opened_ > 0) + if (!this->is_opened_ || --this->is_opened_ != 0) return 0; // Delete the list fo svc.conf files diff --git a/ACE/ace/Service_Gestalt.h b/ACE/ace/Service_Gestalt.h index a5d656a53a5..319ce7a0864 100644 --- a/ACE/ace/Service_Gestalt.h +++ b/ACE/ace/Service_Gestalt.h @@ -83,7 +83,7 @@ public: /// Constructor either associates the instance with the process-wide /// singleton instance of ACE_Service_Repository, or creates and /// manages its own instance of the specified size. - ACE_Service_Gestalt (size_t size, + ACE_Service_Gestalt (size_t size = 1024, bool svc_repo_is_owned = true, bool no_static_svcs = true); |