diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2008-03-04 14:51:23 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2008-03-04 14:51:23 +0000 |
commit | 99aa8c60282c7b8072eb35eb9ac815702f5bf586 (patch) | |
tree | bda96bf8c3a4c2875a083d7b16720533c8ffeaf4 /ACE/ace/Select_Reactor_Base.inl | |
parent | c4078c377d74290ebe4e66da0b4975da91732376 (diff) | |
download | ATCD-99aa8c60282c7b8072eb35eb9ac815702f5bf586.tar.gz |
undoing accidental deletion
Diffstat (limited to 'ACE/ace/Select_Reactor_Base.inl')
-rw-r--r-- | ACE/ace/Select_Reactor_Base.inl | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/ACE/ace/Select_Reactor_Base.inl b/ACE/ace/Select_Reactor_Base.inl new file mode 100644 index 00000000000..178a8373291 --- /dev/null +++ b/ACE/ace/Select_Reactor_Base.inl @@ -0,0 +1,152 @@ +// -*- C++ -*- +// +// $Id$ + +#include "ace/Reactor.h" + +ACE_BEGIN_VERSIONED_NAMESPACE_DECL + +ACE_INLINE ACE_Select_Reactor_Handler_Repository::size_type +ACE_Select_Reactor_Handler_Repository::size (void) const +{ +#ifdef ACE_WIN32 + return this->event_handlers_.total_size (); +#else + return this->event_handlers_.size (); +#endif /* ACE_WIN32 */ +} + +ACE_INLINE ACE_Select_Reactor_Handler_Repository::max_handlep1_type +ACE_Select_Reactor_Handler_Repository::max_handlep1 (void) const +{ +#ifdef ACE_WIN32 + return this->event_handlers_.current_size (); +#else + return this->max_handlep1_; +#endif /* ACE_WIN32 */ +} + +ACE_INLINE int +ACE_Select_Reactor_Handler_Repository::unbind (ACE_HANDLE handle, + ACE_Reactor_Mask mask) +{ + // Do not refactor this code to optimize the call to the unbind impl. + // To resolve bug 2653, unbind must be called even when find_eh returns + // event_handlers_.end(). + + return !this->handle_in_range (handle) ? -1 + : this->unbind (handle, + this->find_eh (handle), + mask); +} + +ACE_INLINE ACE_Event_Handler * +ACE_Select_Reactor_Handler_Repository::find (ACE_HANDLE handle) +{ + ACE_TRACE ("ACE_Select_Reactor_Handler_Repository::find"); + + ACE_Event_Handler * eh = 0; + + if (this->handle_in_range (handle)) + { + map_type::iterator const pos = this->find_eh (handle); + + if (pos != this->event_handlers_.end ()) + { +#ifdef ACE_WIN32 + eh = (*pos).item (); +#else + eh = *pos; +#endif /* ACE_WIN32 */ + } + } + // Don't bother setting errno. It isn't used in the select()-based + // reactors and incurs a TSS access. + // else + // { + // errno = ENOENT; + // } + + return eh; +} + +// ------------------------------------------------------------------ + +ACE_INLINE bool +ACE_Select_Reactor_Handler_Repository_Iterator::done (void) const +{ +#ifdef ACE_WIN32 + return this->current_ != this->rep_->event_handlers_.end (); +#else + return this->current_ != (this->rep_->event_handlers_.begin () + + this->rep_->max_handlep1 ()); +#endif /* ACE_WIN32 */ +} + +// ------------------------------------------------------------------ + +ACE_INLINE +ACE_Event_Tuple::ACE_Event_Tuple (void) + : handle_ (ACE_INVALID_HANDLE), + event_handler_ (0) +{ +} + +ACE_INLINE +ACE_Event_Tuple::ACE_Event_Tuple (ACE_Event_Handler* eh, + ACE_HANDLE h) + : handle_ (h), + event_handler_ (eh) +{ +} + +ACE_INLINE bool +ACE_Event_Tuple::operator== (const ACE_Event_Tuple &rhs) const +{ + return this->handle_ == rhs.handle_; +} + +ACE_INLINE bool +ACE_Event_Tuple::operator!= (const ACE_Event_Tuple &rhs) const +{ + return !(*this == rhs); +} + +#if defined (ACE_WIN32_VC8) || defined (ACE_WIN32_VC9) +# pragma warning (push) +# pragma warning (disable:4355) /* Use of 'this' in initializer list */ +#endif +ACE_INLINE +ACE_Select_Reactor_Impl::ACE_Select_Reactor_Impl (bool ms) + : handler_rep_ (*this) + , timer_queue_ (0) + , signal_handler_ (0) + , notify_handler_ (0) + , delete_timer_queue_ (false) + , delete_signal_handler_ (false) + , delete_notify_handler_ (false) + , initialized_ (false) + , restart_ (0) + , requeue_position_ (-1) // Requeue at end of waiters by default. + , state_changed_ (0) + , mask_signals_ (ms) + , supress_renew_ (0) +{ +} +#if defined (ACE_WIN32_VC8) || defined (ACE_WIN32_VC9) +# pragma warning (pop) +#endif + +ACE_INLINE int +ACE_Select_Reactor_Impl::supress_notify_renew (void) +{ + return this->supress_renew_; +} + +ACE_INLINE void +ACE_Select_Reactor_Impl::supress_notify_renew (int sr) +{ + this->supress_renew_ = sr; +} + +ACE_END_VERSIONED_NAMESPACE_DECL |