diff options
author | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1997-10-17 11:36:00 +0000 |
---|---|---|
committer | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1997-10-17 11:36:00 +0000 |
commit | bf8d5aba015b2b05d938ac035ae3b564def4603e (patch) | |
tree | 2c5f24750cb17cecb69aa20307ce70ba57603994 /ace | |
parent | db012466073caac9f97980dce7a6af648684d0d1 (diff) | |
download | ATCD-bf8d5aba015b2b05d938ac035ae3b564def4603e.tar.gz |
move ace_svc_handler_lock_ to Object_Manager
Diffstat (limited to 'ace')
-rw-r--r-- | ace/Object_Manager.cpp | 2 | ||||
-rw-r--r-- | ace/Object_Manager.h | 1 | ||||
-rw-r--r-- | ace/Svc_Handler.cpp | 35 | ||||
-rw-r--r-- | ace/Svc_Handler.h | 13 |
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__) |