summaryrefslogtreecommitdiff
path: root/ace
diff options
context:
space:
mode:
authorlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-10-17 11:36:00 +0000
committerlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-10-17 11:36:00 +0000
commitbf8d5aba015b2b05d938ac035ae3b564def4603e (patch)
tree2c5f24750cb17cecb69aa20307ce70ba57603994 /ace
parentdb012466073caac9f97980dce7a6af648684d0d1 (diff)
downloadATCD-bf8d5aba015b2b05d938ac035ae3b564def4603e.tar.gz
move ace_svc_handler_lock_ to Object_Manager
Diffstat (limited to 'ace')
-rw-r--r--ace/Object_Manager.cpp2
-rw-r--r--ace/Object_Manager.h1
-rw-r--r--ace/Svc_Handler.cpp35
-rw-r--r--ace/Svc_Handler.h13
4 files changed, 20 insertions, 31 deletions
diff --git a/ace/Object_Manager.cpp b/ace/Object_Manager.cpp
index a8919bc66af..75457e80d13 100644
--- a/ace/Object_Manager.cpp
+++ b/ace/Object_Manager.cpp
@@ -107,6 +107,7 @@ ACE_Object_Manager::ACE_Object_Manager (void)
ACE_PREALLOCATE_OBJECT (ACE_Thread_Mutex, ACE_DUMP_LOCK)
ACE_PREALLOCATE_OBJECT (ACE_Thread_Mutex, ACE_OS_MONITOR_LOCK)
ACE_PREALLOCATE_OBJECT (ACE_Recursive_Thread_Mutex, ACE_SIG_HANDLER_LOCK)
+ ACE_PREALLOCATE_OBJECT (ACE_Thread_Mutex, ACE_SVC_HANDLER_LOCK)
ACE_PREALLOCATE_OBJECT (ACE_TOKEN_CONST::MUTEX,
ACE_TOKEN_MANAGER_CREATION_LOCK)
ACE_PREALLOCATE_OBJECT (ACE_TOKEN_CONST::MUTEX,
@@ -203,6 +204,7 @@ ACE_Object_Manager::~ACE_Object_Manager (void)
ACE_DELETE_PREALLOCATED_OBJECT (ACE_Thread_Mutex, ACE_OS_MONITOR_LOCK)
ACE_DELETE_PREALLOCATED_OBJECT (ACE_Recursive_Thread_Mutex,
ACE_SIG_HANDLER_LOCK)
+ ACE_DELETE_PREALLOCATED_OBJECT (ACE_Thread_Mutex, ACE_SVC_HANDLER_LOCK)
ACE_DELETE_PREALLOCATED_OBJECT (ACE_TOKEN_CONST::MUTEX,
ACE_TOKEN_MANAGER_CREATION_LOCK)
ACE_DELETE_PREALLOCATED_OBJECT (ACE_TOKEN_CONST::MUTEX,
diff --git a/ace/Object_Manager.h b/ace/Object_Manager.h
index 92f8d489495..f9c4cc93d7f 100644
--- a/ace/Object_Manager.h
+++ b/ace/Object_Manager.h
@@ -164,6 +164,7 @@ public:
ACE_DUMP_LOCK,
ACE_OS_MONITOR_LOCK,
ACE_SIG_HANDLER_LOCK,
+ ACE_SVC_HANDLER_LOCK,
ACE_TOKEN_MANAGER_CREATION_LOCK,
ACE_TOKEN_INVARIANTS_CREATION_LOCK,
ACE_TSS_CLEANUP_LOCK,
diff --git a/ace/Svc_Handler.cpp b/ace/Svc_Handler.cpp
index 2811ad35b98..fc0075c9ccb 100644
--- a/ace/Svc_Handler.cpp
+++ b/ace/Svc_Handler.cpp
@@ -16,12 +16,6 @@
#define PR_ST_1 ACE_PEER_STREAM_1
#define PR_ST_2 ACE_PEER_STREAM_2
-#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) && !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
-// Lock the creation of the Singleton.
-template <PR_ST_1, ACE_SYNCH_1>
-ACE_Thread_Mutex ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::ace_svc_handler_lock_;
-#endif /* defined (ACE_MT_SAFE) && !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) */
-
#if defined (ACE_HAS_SIG_C_FUNC)
extern "C" void
ACE_Svc_Handler_cleanup (void *object, void *)
@@ -48,12 +42,6 @@ ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::instance (void)
{
ACE_TRACE ("ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::allocated");
-#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) && defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
- // Lock the creation of the Singleton. This should be inside of
- // ACE_Svc_Handler, but GNU G++ is too lame to handle this...
- static ACE_Thread_Mutex ace_svc_handler_lock_;
-#endif /* defined (ACE_MT_SAFE) && defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) */
-
static ACE_TSS_TYPE (ACE_Dynamic) *instance_;
// Determines if we were dynamically allocated. Note that this
// should be inside of ACE_Svc_Handler, but G++ is too lame to
@@ -63,10 +51,13 @@ ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::instance (void)
if (instance_ == 0)
{
- ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, ace_svc_handler_lock_, 0));
+ ACE_MT (ACE_Thread_Mutex *lock =
+ ACE_Managed_Object<ACE_Thread_Mutex>::get_preallocated_object
+ (ACE_Object_Manager::ACE_SVC_HANDLER_LOCK);
+ ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, *lock, 0));
if (instance_ == 0)
- ACE_NEW_RETURN (instance_, ACE_TSS_TYPE (ACE_Dynamic), 0);
+ ACE_NEW_RETURN (instance_, ACE_TSS_TYPE (ACE_Dynamic), 0);
// Register for destruction with ACE_Object_Manager.
#if defined (ACE_HAS_SIG_C_FUNC)
@@ -118,8 +109,8 @@ ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::operator delete (void *obj)
template <PR_ST_1, ACE_SYNCH_1>
ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::ACE_Svc_Handler (ACE_Thread_Manager *tm,
- ACE_Message_Queue<ACE_SYNCH_2> *mq,
- ACE_Reactor *reactor)
+ ACE_Message_Queue<ACE_SYNCH_2> *mq,
+ ACE_Reactor *reactor)
: ACE_Task<ACE_SYNCH_2> (tm, mq)
{
ACE_TRACE ("ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::ACE_Svc_Handler");
@@ -156,16 +147,16 @@ ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::open (void *)
if (client_addr.addr_to_string (buf, sizeof buf) == -1)
ACE_ERROR_RETURN ((LM_ERROR, "%p\n",
- "can't obtain peer's address"), -1);
+ "can't obtain peer's address"), -1);
ACE_DEBUG ((LM_DEBUG, "connected to %s on fd %d\n",
- buf, this->peer_.get_handle ()));
+ buf, this->peer_.get_handle ()));
#endif /* DEBUGGING */
if (this->reactor ()
&& this->reactor ()->register_handler
(this, ACE_Event_Handler::READ_MASK) == -1)
ACE_ERROR_RETURN ((LM_ERROR, "%p",
- "unable to register client handler"), -1);
+ "unable to register client handler"), -1);
return 0;
}
@@ -180,7 +171,7 @@ ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::shutdown (void)
if (this->reactor ())
{
ACE_Reactor_Mask mask = ACE_Event_Handler::ALL_EVENTS_MASK |
- ACE_Event_Handler::DONT_CALL;
+ ACE_Event_Handler::DONT_CALL;
// Make sure there are no timers.
this->reactor ()->cancel_timer (this);
@@ -241,7 +232,7 @@ ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::~ACE_Svc_Handler (void)
template <PR_ST_1, ACE_SYNCH_1> int
ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::handle_close (ACE_HANDLE,
- ACE_Reactor_Mask)
+ ACE_Reactor_Mask)
{
ACE_TRACE ("ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::handle_close");
@@ -251,7 +242,7 @@ ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::handle_close (ACE_HANDLE,
template <PR_ST_1, ACE_SYNCH_1> int
ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::handle_timeout (const ACE_Time_Value &,
- const void *)
+ const void *)
{
ACE_TRACE ("ACE_Svc_Handler<PR_ST_2, ACE_SYNCH_2>::handle_timeout");
return this->handle_close ();
diff --git a/ace/Svc_Handler.h b/ace/Svc_Handler.h
index 17238d1acd9..8e9289dcc3f 100644
--- a/ace/Svc_Handler.h
+++ b/ace/Svc_Handler.h
@@ -45,8 +45,8 @@ class ACE_Svc_Handler : public ACE_Task<ACE_SYNCH_2>
public:
// = Initialization and termination methods.
ACE_Svc_Handler (ACE_Thread_Manager * = 0,
- ACE_Message_Queue<ACE_SYNCH_2> * = 0,
- ACE_Reactor * = ACE_Reactor::instance ());
+ ACE_Message_Queue<ACE_SYNCH_2> * = 0,
+ ACE_Reactor * = ACE_Reactor::instance ());
virtual ~ACE_Svc_Handler (void);
@@ -73,14 +73,14 @@ public:
// = Demultiplexing hooks.
virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE,
- ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK);
+ ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK);
// Perform termination activities on the SVC_HANDLER. The default
// behavior is to close down the <peer_> (to avoid descriptor leaks)
// and to delete this (to avoid memory leaks)! If you don't want
// this behavior make sure you override this method...
virtual int handle_timeout (const ACE_Time_Value &time,
- const void *);
+ const void *);
// Default behavior when timeouts occur is to close down the
// <Svc_Handler> by calling <handle_close>.
@@ -137,11 +137,6 @@ private:
char closing_;
// Keeps track of whether we are in the process of closing (required
// to avoid circular calls to <handle_close>).
-
-#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) && !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
- static ACE_Thread_Mutex ace_svc_handler_lock_;
- // Lock the creation of the Singleton.
-#endif /* defined (ACE_MT_SAFE) && !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) */
};
#if defined (__ACE_INLINE__)