diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1997-09-04 02:58:38 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1997-09-04 02:58:38 +0000 |
commit | 9381dc335de041c194d3f9c01d197d915e3b3e06 (patch) | |
tree | ceb2633f270ffa4abcb9efb66958d411a027d18d /ace | |
parent | 212f5d8199c40b1d3eb5b0767914fc71bf254d29 (diff) | |
download | ATCD-9381dc335de041c194d3f9c01d197d915e3b3e06.tar.gz |
ChangeLogTag:Wed Sep 3 21:38:18 1997 Carlos O'Ryan <coryan@polka.cs.wustl.edu>
Diffstat (limited to 'ace')
-rw-r--r-- | ace/OS.h | 2 | ||||
-rw-r--r-- | ace/README | 4 | ||||
-rw-r--r-- | ace/Timer_Hash_T.cpp | 14 | ||||
-rw-r--r-- | ace/Timer_Hash_T.h | 2 | ||||
-rw-r--r-- | ace/Timer_Heap_T.cpp | 10 | ||||
-rw-r--r-- | ace/Timer_Heap_T.h | 2 | ||||
-rw-r--r-- | ace/Timer_List.cpp | 2 | ||||
-rw-r--r-- | ace/Timer_List_T.cpp | 7 | ||||
-rw-r--r-- | ace/Timer_List_T.h | 2 | ||||
-rw-r--r-- | ace/Timer_Queue_T.h | 1 | ||||
-rw-r--r-- | ace/Timer_Wheel_T.cpp | 14 | ||||
-rw-r--r-- | ace/Timer_Wheel_T.h | 2 | ||||
-rw-r--r-- | ace/config-irix6.x-sgic++.h | 7 |
13 files changed, 44 insertions, 25 deletions
@@ -4169,7 +4169,7 @@ private: #else /* ! ACE_HAS_TSS_EMULATION */ # if defined (TLS_MINIMUM_AVAILABLE) -# // WIN32 platforms define TLS_MINIMUM_AVAILABLE natively. + // WIN32 platforms define TLS_MINIMUM_AVAILABLE natively. # define ACE_DEFAULT_THREAD_KEYS TLS_MINIMUM_AVAILABLE # endif /* TSL_MINIMUM_AVAILABLE */ #endif /* ACE_HAS_TSS_EMULATION */ diff --git a/ace/README b/ace/README index e078b71e92d..f52e4ec40a7 100644 --- a/ace/README +++ b/ace/README @@ -89,6 +89,7 @@ ACE_HAS_NONCONST_GETBY Platform uses non-const char * in calls to gethostbyadd ACE_HAS_NONCONST_MSGSND Platform has a non-const parameter to msgsend() (e.g., SCO). ACE_HAS_NONCONST_SELECT_TIMEVAL Platform's select() uses non-const timeval* (only found on Linux right now) ACE_HAS_OLD_MALLOC Compiler/platform uses old malloc()/free() prototypes (ugh) +ACE_HAS_ONLY_TWO_PARAMS_FOR_ASCTIME_R_AND_CTIME_R Uses ctime_r & asctime_r with only two parameters vs. three. ACE_HAS_ONEARG_SIGWAIT sigwait() takes only one argument. ACE_HAS_ONLY_SCHED_OTHER Platform, e.g., Solaris 2.5, only supports SCHED_OTHER POSIX scheduling policy. ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R Uses ctime_r & asctime_r with only two parameters vs. three. @@ -113,7 +114,8 @@ ACE_HAS_PTHREAD_SIGMASK Platform has pthread_sigmask() defined. ACE_HAS_PTHREAD_T Platform has pthread_t defined. ACE_HAS_PTHREAD_YIELD_VOIDPTR pthread_yield() takes a void pointer arg. ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS Platform will recurse infinitely on thread exits from TSS cleanup routines (e.g., AIX). -ACE_HAS_REENTRANT_FUNCTIONS Platform supports reentrant functions (i.e., all the POSIX *_r functions). +ACE_HAS_REENTRANT_FUNCTIONS Platform supports reentrant functions (i.e., all the POSIX *_r functions). +ACE_LACKS_NETDB_REENTRANT_FUNCTIONS Platform does not support reentrant netdb functions (getprotobyname_r, getprotobynumber_r, gethostbyaddr_r, gethostbyname_r, getservbyname_r). ACE_HAS_REGEX Platform supports the POSIX regular expression library ACE_HAS_SELECT_H Platform has special header for select(). ACE_HAS_SEMUN Compiler/platform defines a union semun for SysV shared memory diff --git a/ace/Timer_Hash_T.cpp b/ace/Timer_Hash_T.cpp index 326d30bded1..bdd0241fc3d 100644 --- a/ace/Timer_Hash_T.cpp +++ b/ace/Timer_Hash_T.cpp @@ -181,7 +181,7 @@ ACE_Timer_Hash_Iterator_T<TYPE, FUNCTOR, LOCK, BUCKET>::item (void) template <class TYPE, class FUNCTOR, class LOCK, class BUCKET> ACE_Timer_Queue_Iterator_T<TYPE, FUNCTOR, LOCK> & ACE_Timer_Hash_T<TYPE, FUNCTOR, LOCK, BUCKET>::iter (void) { - return this->iterator_; + return *this->iterator_; } // Create an empty queue. @@ -195,8 +195,7 @@ ACE_Timer_Hash_T<TYPE, FUNCTOR, LOCK, BUCKET>::ACE_Timer_Hash_T (size_t table_si table_ (new BUCKET* [table_size]), table_size_ (table_size), table_functor_ (this), - earliest_position_ (0), - iterator_ (*this) + earliest_position_ (0) { ACE_TRACE ("ACE_Timer_Hash_T::ACE_Timer_Hash_T"); @@ -207,6 +206,8 @@ ACE_Timer_Hash_T<TYPE, FUNCTOR, LOCK, BUCKET>::ACE_Timer_Hash_T (size_t table_si this->table_[i] = new BUCKET (&this->table_functor_, this->free_list_); this->table_[i]->gettimeofday (ACE_OS::gettimeofday); } + + iterator_ = new HASH_ITERATOR(*this); } @@ -218,8 +219,7 @@ ACE_Timer_Hash_T<TYPE, FUNCTOR, LOCK, BUCKET>::ACE_Timer_Hash_T (FUNCTOR *upcall table_ (new BUCKET* [ACE_DEFAULT_TIMER_HASH_TABLE_SIZE]), table_size_ (ACE_DEFAULT_TIMER_HASH_TABLE_SIZE), table_functor_ (this), - earliest_position_ (0), - iterator_ (*this) + earliest_position_ (0) { ACE_TRACE ("ACE_Timer_Hash_T::ACE_Timer_Hash_T"); @@ -230,6 +230,8 @@ ACE_Timer_Hash_T<TYPE, FUNCTOR, LOCK, BUCKET>::ACE_Timer_Hash_T (FUNCTOR *upcall this->table_[i] = new BUCKET (&this->table_functor_, this->free_list_); this->table_[i]->gettimeofday (ACE_OS::gettimeofday); } + + iterator_ = new HASH_ITERATOR(*this); } @@ -241,6 +243,8 @@ ACE_Timer_Hash_T<TYPE, FUNCTOR, LOCK, BUCKET>::~ACE_Timer_Hash_T (void) ACE_TRACE ("ACE_Timer_Hash_T::~ACE_Timer_Hash_T"); ACE_MT (ACE_GUARD (LOCK, ace_mon, this->mutex_)); + delete iterator_; + for (size_t i = 0; i < this->table_size_; i++) delete this->table_[i]; diff --git a/ace/Timer_Hash_T.h b/ace/Timer_Hash_T.h index 050cafa1fe2..2095bef8a1f 100644 --- a/ace/Timer_Hash_T.h +++ b/ace/Timer_Hash_T.h @@ -222,7 +222,7 @@ private: size_t earliest_position_; // Index to the position with the earliest entry - HASH_ITERATOR iterator_; + HASH_ITERATOR *iterator_; // Iterator used to expire timers. // = Don't allow these operations for now. diff --git a/ace/Timer_Heap_T.cpp b/ace/Timer_Heap_T.cpp index fb495f0245b..5ee5ad53388 100644 --- a/ace/Timer_Heap_T.cpp +++ b/ace/Timer_Heap_T.cpp @@ -71,7 +71,6 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Heap_T (size_t size, : INHERITED (upcall_functor, freelist), max_size_ (size), cur_size_ (0), - iterator_ (*this), timer_ids_freelist_ (0), preallocated_nodes_ (0), preallocated_nodes_freelist_ (0) @@ -110,6 +109,8 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Heap_T (size_t size, this->preallocated_nodes_freelist_ = &this->preallocated_nodes_[0]; } + + iterator_ = new HEAP_ITERATOR(*this); } template <class TYPE, class FUNCTOR, class LOCK> @@ -118,7 +119,6 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Heap_T (FUNCTOR *upcall_functor : INHERITED (upcall_functor, freelist), max_size_ (ACE_DEFAULT_TIMERS), cur_size_ (0), - iterator_ (*this), timer_ids_freelist_ (0), preallocated_nodes_ (0), preallocated_nodes_freelist_ (0) @@ -136,6 +136,8 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Heap_T (FUNCTOR *upcall_functor // array. for (size_t i = 0; i < this->max_size_; i++) this->timer_ids_[i] = -((long) (i + 1)); + + iterator_ = new HEAP_ITERATOR(*this); } @@ -144,6 +146,8 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::~ACE_Timer_Heap_T (void) { ACE_TRACE ("ACE_Timer_Heap::~ACE_Timer_Heap"); + delete iterator_; + // Clean up all the nodes still in the queue for (size_t i = 0; i < this->cur_size_; i++) { @@ -220,7 +224,7 @@ ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::is_empty (void) const template <class TYPE, class FUNCTOR, class LOCK> ACE_Timer_Queue_Iterator_T<TYPE, FUNCTOR, LOCK> & ACE_Timer_Heap_T<TYPE, FUNCTOR, LOCK>::iter (void) { - return this->iterator_; + return *this->iterator_; } // Returns earliest time in a non-empty queue. diff --git a/ace/Timer_Heap_T.h b/ace/Timer_Heap_T.h index 65dca3e5a4e..30af1755bcb 100644 --- a/ace/Timer_Heap_T.h +++ b/ace/Timer_Heap_T.h @@ -210,7 +210,7 @@ private: size_t cur_size_; // Current size of the heap. - HEAP_ITERATOR iterator_; + HEAP_ITERATOR *iterator_; // Iterator used to expire timers. ACE_Timer_Node_T<TYPE> **heap_; diff --git a/ace/Timer_List.cpp b/ace/Timer_List.cpp index 8bae22eb456..cbf0635b54c 100644 --- a/ace/Timer_List.cpp +++ b/ace/Timer_List.cpp @@ -11,9 +11,11 @@ #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template class ACE_Timer_List_T<ACE_Event_Handler *, ACE_Event_Handler_Handle_Timeout_Upcall<ACE_SYNCH_RECURSIVE_MUTEX>, ACE_SYNCH_RECURSIVE_MUTEX>; template class ACE_Timer_List_Iterator_T<ACE_Event_Handler *, ACE_Event_Handler_Handle_Timeout_Upcall<ACE_SYNCH_RECURSIVE_MUTEX>, ACE_SYNCH_RECURSIVE_MUTEX>; +template class ACE_Async_Timer_Queue_Adapter<ACE_Timer_List_T<ACE_Event_Handler*,ACE_Event_Handler_Handle_Timeout_Upcall<ACE_Recursive_Thread_Mutex>,ACE_Recursive_Thread_Mutex> >; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #pragma instantiate ACE_Timer_List_T<ACE_Event_Handler *, ACE_Event_Handler_Handle_Timeout_Upcall<ACE_SYNCH_RECURSIVE_MUTEX>, ACE_SYNCH_RECURSIVE_MUTEX> #pragma instantiate ACE_Timer_List_Iterator_T<ACE_Event_Handler *, ACE_Event_Handler_Handle_Timeout_Upcall<ACE_SYNCH_RECURSIVE_MUTEX>, ACE_SYNCH_RECURSIVE_MUTEX> +#pragma instantiate ACE_Async_Timer_Queue_Adapter<ACE_Timer_List_T<ACE_Event_Handler*,ACE_Event_Handler_Handle_Timeout_Upcall<ACE_Recursive_Thread_Mutex>,ACE_Recursive_Thread_Mutex> > #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/ace/Timer_List_T.cpp b/ace/Timer_List_T.cpp index adfedd402ee..211c617ff35 100644 --- a/ace/Timer_List_T.cpp +++ b/ace/Timer_List_T.cpp @@ -58,7 +58,7 @@ ACE_Timer_List_Iterator_T<TYPE, FUNCTOR, LOCK>::item (void) template <class TYPE, class FUNCTOR, class LOCK> ACE_Timer_Queue_Iterator_T<TYPE, FUNCTOR, LOCK> & ACE_Timer_List_T<TYPE, FUNCTOR, LOCK>::iter (void) { - return this->iterator_; + return *this->iterator_; } // Create an empty list. @@ -68,12 +68,13 @@ ACE_Timer_List_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_List_T (FUNCTOR *upcall_functor ACE_Free_List<ACE_Timer_Node_T <TYPE> > *freelist) : ACE_Timer_Queue_T<TYPE, FUNCTOR, LOCK> (upcall_functor, freelist), head_ (new ACE_Timer_Node_T<TYPE>), - iterator_ (*this), timer_id_ (0) { ACE_TRACE ("ACE_Timer_List_T::ACE_Timer_List"); this->head_->set_next (this->head_); this->head_->set_prev (this->head_); + + iterator_ = new LIST_ITERATOR(*this); } @@ -105,6 +106,8 @@ ACE_Timer_List_T<TYPE, FUNCTOR, LOCK>::~ACE_Timer_List_T (void) ACE_TRACE ("ACE_Timer_List_T::~ACE_Timer_List_T"); ACE_MT (ACE_GUARD (LOCK, ace_mon, this->mutex_)); + delete iterator_; + ACE_Timer_Node_T<TYPE> *curr = this->head_->get_next (); while (curr != this->head_) diff --git a/ace/Timer_List_T.h b/ace/Timer_List_T.h index dcbac409d26..f0489458794 100644 --- a/ace/Timer_List_T.h +++ b/ace/Timer_List_T.h @@ -161,7 +161,7 @@ private: ACE_Timer_Node_T<TYPE> *head_; // Pointer to linked list of <ACE_Timer_Handles>. - LIST_ITERATOR iterator_; + LIST_ITERATOR *iterator_; // Iterator used to expire timers. long timer_id_; diff --git a/ace/Timer_Queue_T.h b/ace/Timer_Queue_T.h index 3051e4e17b2..4b2b4321cd7 100644 --- a/ace/Timer_Queue_T.h +++ b/ace/Timer_Queue_T.h @@ -21,6 +21,7 @@ #include "ace/Time_Value.h" #include "ace/Signal.h" #include "ace/Free_List.h" +#include "ace/Signal.h" // This should be nested within the ACE_Timer_Queue class but some C++ // compilers still don't like this... diff --git a/ace/Timer_Wheel_T.cpp b/ace/Timer_Wheel_T.cpp index 86dee8a4356..c90eeb2fd7e 100644 --- a/ace/Timer_Wheel_T.cpp +++ b/ace/Timer_Wheel_T.cpp @@ -106,8 +106,7 @@ ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Wheel_T (size_t wheelsize, : INHERITED (upcall_functor, freelist), wheel_size_ (wheelsize), resolution_ (resolution), - earliest_pos_ (0), - iterator_ (*this) + earliest_pos_ (0) { ACE_TRACE ("ACE_Timer_Wheel_T::ACE_Timer_Wheel_T"); size_t i; @@ -129,6 +128,8 @@ ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Wheel_T (size_t wheelsize, // Do the preallocation this->free_list_->resize (prealloc); + + iterator_ = new WHEEL_ITERATOR(*this); } template <class TYPE, class FUNCTOR, class LOCK> @@ -137,8 +138,7 @@ ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Wheel_T (FUNCTOR *upcall_funct : INHERITED (upcall_functor, freelist), wheel_size_ (ACE_DEFAULT_TIMER_WHEEL_SIZE), resolution_ (ACE_DEFAULT_TIMER_WHEEL_RESOLUTION), - earliest_pos_ (0), - iterator_ (*this) + earliest_pos_ (0) { ACE_TRACE ("ACE_Timer_Wheel_T::ACE_Timer_Wheel_T"); size_t i; @@ -156,6 +156,8 @@ ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::ACE_Timer_Wheel_T (FUNCTOR *upcall_funct tempnode->set_prev (tempnode); this->wheel_[i] = tempnode; } + + iterator_ = new WHEEL_ITERATOR(*this); } // Destructor just cleans up its memory @@ -165,6 +167,8 @@ ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::~ACE_Timer_Wheel_T (void) { ACE_TRACE ("ACE_Timer_Wheel_T::~ACE_Timer_Wheel_T"); + delete iterator_; + for (size_t i = 0; i < this->wheel_size_; i++) { // delete nodes until only the dummy node is left @@ -482,7 +486,7 @@ ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::reschedule (ACE_Timer_Node_T<TYPE> *expi template <class TYPE, class FUNCTOR, class LOCK> ACE_Timer_Queue_Iterator_T<TYPE, FUNCTOR, LOCK> & ACE_Timer_Wheel_T<TYPE, FUNCTOR, LOCK>::iter (void) { - return this->iterator_; + return *this->iterator_; } // Dummy version of expire to get rid of warnings in Sun CC 4.2 diff --git a/ace/Timer_Wheel_T.h b/ace/Timer_Wheel_T.h index 30981de7378..2ab6bc6491e 100644 --- a/ace/Timer_Wheel_T.h +++ b/ace/Timer_Wheel_T.h @@ -188,7 +188,7 @@ private: long size_; // Keeps track of the size of the queue - ACE_Timer_Wheel_Iterator_T<TYPE, FUNCTOR, LOCK> iterator_; + WHEEL_ITERATOR *iterator_; // Iterator used to expire timers. ACE_Timer_Node_T<TYPE> *freelist_; diff --git a/ace/config-irix6.x-sgic++.h b/ace/config-irix6.x-sgic++.h index 4e3ebe725eb..687d48fbf6f 100644 --- a/ace/config-irix6.x-sgic++.h +++ b/ace/config-irix6.x-sgic++.h @@ -29,13 +29,12 @@ // even though it supports pthreads! (like Irix 6.2) #define ACE_LACKS_CONDATTR_PSHARED -// Platform lacks pthread_thr_sigsetmask (e.g., MVS, HP/UX, OSF/1 3.2, -// Irix 6.2) -#define ACE_LACKS_PTHREAD_THR_SIGSETMASK - // IRIX 6.2 supports a variant of POSIX Pthreads, supposedly POSIX 1c #define ACE_HAS_PTHREADS +// Platforms has pthread_thr_sigsetmask +#define ACE_HAS_PTHREAD_SIGMASK + // Platform has pthread_equal(). #define ACE_HAS_PTHREAD_EQUAL |