diff options
Diffstat (limited to 'ace/Handle_Set.cpp')
-rw-r--r-- | ace/Handle_Set.cpp | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/ace/Handle_Set.cpp b/ace/Handle_Set.cpp deleted file mode 100644 index 9c5d25a45b5..00000000000 --- a/ace/Handle_Set.cpp +++ /dev/null @@ -1,215 +0,0 @@ -// Handle_Set.cpp -// $Id$ - -#define ACE_BUILD_DLL -#include "ace/Handle_Set.h" - -#if !defined (__ACE_INLINE__) -#include "ace/Handle_Set.i" -#endif /* __ACE_INLINE__ */ - -ACE_ALLOC_HOOK_DEFINE(ACE_Handle_Set) - -void -ACE_Handle_Set::dump (void) const -{ - ACE_TRACE ("ACE_Handle_Set::dump"); - - ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this)); - - ACE_DEBUG ((LM_DEBUG, "[ ")); - ACE_DEBUG ((LM_DEBUG, "size_ = %d", this->size_)); - ACE_DEBUG ((LM_DEBUG, "\nmax_handle_ = %d", this->max_handle_)); - -#if defined (ACE_WIN32) - for (size_t i = 0; i < this->mask_.fd_count + 1; i++) - ACE_DEBUG ((LM_DEBUG, " %x ", this->mask_.fd_array[i])); -#else /* !ACE_WIN32 */ - for (ACE_HANDLE i = 0; i < this->max_handle_ + 1; i++) - if (this->is_set (i)) - ACE_DEBUG ((LM_DEBUG, " %d ", i)); -#endif /* ACE_WIN32 */ - - ACE_DEBUG ((LM_DEBUG, " ]")); - ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP)); -} - -#if defined (ACE_HAS_BROKEN_BITSHIFT) -static const ACE_UINT32 MSB_MASK = ~(ACE_UINT32 (1) << ACE_UINT32 (NFDBITS - 1)); -#else -// This needs to go here to avoid overflow problems on some compilers. -static const ACE_UINT32 MSB_MASK = ~(1 << (NFDBITS - 1)); -#endif /* ACE_HAS_BROKEN_BITSHIFT */ - -// Table that maps bytes to counts of the enabled bits. - -const char ACE_Handle_Set::nbits_[256] = -{ - 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, - 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, - 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, -}; - -// Constructor, initializes the bitmask to all 0s. - -ACE_Handle_Set::ACE_Handle_Set (void) -{ - ACE_TRACE ("ACE_Handle_Set::ACE_Handle_Set"); - this->reset (); -} - -ACE_Handle_Set::ACE_Handle_Set (const ACE_FD_SET_TYPE &fd_mask) -{ - ACE_TRACE ("ACE_Handle_Set::ACE_Handle_Set"); - this->reset (); - ACE_OS::memcpy ((void *) &this->mask_, (void *) &fd_mask, sizeof - this->mask_); -#if !defined(ACE_WIN32) - this->sync (ACE_Handle_Set::MAXSIZE); -#endif /* !ACE_WIN32 */ -} - -// Counts the number of bits enabled in N. Uses a table lookup to -// speed up the count. - -int -ACE_Handle_Set::count_bits (unsigned long n) const -{ - ACE_TRACE ("ACE_Handle_Set::count_bits"); - return (ACE_Handle_Set::nbits_[n & 0xff] + ACE_Handle_Set::nbits_[(n >> 8) & 0xff] + - ACE_Handle_Set::nbits_[(n >> 16) & 0xff] + ACE_Handle_Set::nbits_[n >> 24]); -} - -// Synchronize the underlying FD_SET with the MAX_FD and the SIZE. - -void -ACE_Handle_Set::sync (ACE_HANDLE max) -{ - ACE_TRACE ("ACE_Handle_Set::sync"); -#if !defined(ACE_WIN32) - this->size_ = 0; - - for (int i = (max - 1) / ACE_Handle_Set::WORDSIZE; i >= 0; i--) - this->size_ += count_bits (this->mask_.fds_bits[i]); - - this->set_max (max); -#else - ACE_UNUSED_ARG(max); -#endif /* !ACE_WIN32 */ -} - -// Resets the MAX_FD after a clear of the original MAX_FD. - -void -ACE_Handle_Set::set_max (ACE_HANDLE current_max) -{ - ACE_TRACE ("ACE_Handle_Set::set_max"); -#if !defined(ACE_WIN32) - - if (this->size_ == 0) - this->max_handle_ = -1; - else - { - int i; - - for (i = (current_max - 1) / ACE_Handle_Set::WORDSIZE; - this->mask_.fds_bits[i] == 0; - i--) - continue; - - this->max_handle_ = i * ACE_Handle_Set::WORDSIZE; - for (fd_mask val = this->mask_.fds_bits[i]; - (val & ~1) != 0; - val = (val >> 1) & MSB_MASK) - this->max_handle_++; - } - - // Do some sanity checking... - if (this->max_handle_ >= ACE_Handle_Set::MAXSIZE) - this->max_handle_ = ACE_Handle_Set::MAXSIZE - 1; -#else - ACE_UNUSED_ARG(current_max); -#endif /* !ACE_WIN32 */ -} - -ACE_ALLOC_HOOK_DEFINE(ACE_Handle_Set_Iterator) - -void -ACE_Handle_Set_Iterator::dump (void) const -{ - ACE_TRACE ("ACE_Handle_Set_Iterator::dump"); - - ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this)); - ACE_DEBUG ((LM_DEBUG, "num_ = %d", this->num_)); - ACE_DEBUG ((LM_DEBUG, "\nindex_ = %d", this->index_)); - ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP)); -} - -void -ACE_Handle_Set_Iterator::operator++ (void) -{ - ACE_TRACE ("ACE_Handle_Set_Iterator::operator++"); - -#if defined(ACE_WIN32) - this->index_++; -#else /* !ACE_WIN32 */ - this->val_ = (this->val_ >> 1) & MSB_MASK; - this->num_++; - - - if (this->val_ == 0) - { - for (this->index_++; - this->index_ < ACE_Handle_Set::NUM_WORDS - && this->handles_.mask_.fds_bits[this->index_] == 0; - this->index_++) - continue; - - if (this->index_ >= ACE_Handle_Set::NUM_WORDS) - { - this->num_ = this->handles_.max_handle_ + 1; - return; - } - else - { - this->val_ = this->handles_.mask_.fds_bits[this->index_]; - this->num_ = this->index_ * ACE_Handle_Set::WORDSIZE; - } - } - - for (; ACE_BIT_DISABLED (this->val_, 1); this->num_++) - this->val_ = (this->val_ >> 1) & MSB_MASK; -#endif /* !ACE_WIN32 */ -} - -ACE_Handle_Set_Iterator::ACE_Handle_Set_Iterator (const ACE_Handle_Set &f) - : handles_ (f), - num_ (0), - index_ (0) -{ - ACE_TRACE ("ACE_Handle_Set_Iterator::ACE_Handle_Set_Iterator"); -#if !defined(ACE_WIN32) - for (; - this->handles_.mask_.fds_bits[this->index_] == 0; - this->index_++) - this->num_ += ACE_Handle_Set::WORDSIZE; - - for (this->val_ = this->handles_.mask_.fds_bits[this->index_]; - (ACE_BIT_DISABLED (this->val_, 1)) && this->num_ < ACE_Handle_Set::MAXSIZE; - this->num_++) - this->val_ = (this->val_ >> 1) & MSB_MASK; -#endif /* !ACE_WIN32 */ -} |