summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriliyan <iliyan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2007-02-22 18:55:20 +0000
committeriliyan <iliyan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2007-02-22 18:55:20 +0000
commit1b00cae0939871bfcb9fab8c306aa8f47cc5a3be (patch)
tree6b3fdca23d1765323cba09896fe9af08fce0d6cb
parenta759ce187bc35d1a8a43d1c050c4bb0b859c058f (diff)
downloadATCD-1b00cae0939871bfcb9fab8c306aa8f47cc5a3be.tar.gz
ChangeLogTag: Thu Feb 22 18:37:00 UTC 2007 Iliyan Jeliazkov <iliyan@ociweb.com>
-rw-r--r--ACE/ChangeLog17
-rw-r--r--ACE/ace/Service_Config.cpp27
-rw-r--r--ACE/ace/Service_Config.h12
-rw-r--r--ACE/ace/Service_Config.inl6
-rw-r--r--ACE/ace/Service_Gestalt.cpp3
-rw-r--r--ACE/ace/Service_Gestalt.h2
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);