diff options
Diffstat (limited to 'ace/Timer_Queue_Adapters.h')
-rw-r--r-- | ace/Timer_Queue_Adapters.h | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/ace/Timer_Queue_Adapters.h b/ace/Timer_Queue_Adapters.h deleted file mode 100644 index 4eda1315222..00000000000 --- a/ace/Timer_Queue_Adapters.h +++ /dev/null @@ -1,173 +0,0 @@ -// -*- C++ -*- -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// ace -// -// = FILENAME -// Timer_Queue_Adapters.h -// -// = AUTHOR -// Douglas C. Schmidt and Carlos O'Ryan -// -// ============================================================================ - -#if !defined (ACE_TIMER_QUEUE_ADAPTERS_H) -#define ACE_TIMER_QUEUE_ADAPTERS_H - -#include "ace/Task.h" -#include "ace/Signal.h" - -template <class TQ> -class ACE_Export ACE_Async_Timer_Queue_Adapter : public ACE_Event_Handler -{ - // = TITLE - // Adapts a <TQ> to be run asynchronously. - // - // = DESCRIPTION - // This implementation uses the <ualarm> call, which generates - // the SIGARLM signal that is caught by this class. -public: - typedef TQ TIMER_QUEUE; - - ACE_Async_Timer_Queue_Adapter (ACE_Sig_Set *mask = 0); - // Register the SIGALRM handler. If <mask> == 0 then block all - // signals when <SIGALRM> is run. Otherwise, just block the signals - // indicated in <mask>. - - long schedule (ACE_Event_Handler *type, - const void *act, - const ACE_Time_Value &delay, - const ACE_Time_Value &interval = ACE_Time_Value::zero); - // Schedule the timer according to the semantics of the - // <ACE_Timer_List>. However, this timer gets dispatched via a - // signal, rather than by a user calling <expire>. - - int cancel (long timer_id, const void **act = 0); - // Cancel the <timer_id> and pass back the <act> if an address is - // passed in. - - int expire (void); - // Dispatch all timers whose values are <= <cur_time>. Returns the - // number of timers canceled. - - TQ &timer_queue (void); - // Access the underlying <TIMER_QUEUE>. - -private: - virtual int schedule_ualarm (void); - // Perform the logic to compute the new ualarm(2) setting. - - virtual int handle_signal (int signum, siginfo_t *, ucontext_t *); - // Called back by <SIGALRM> handler. - - ACE_Sig_Handler sig_handler_; - // Handler for the <SIGALRM> signal, so that we can access our state - // without requiring any global variables. - - TQ timer_queue_; - // Implementation of the timer queue (e.g., <ACE_Timer_List>, - // <ACE_Timer_Heap>, etc.). - - ACE_Sig_Set mask_; - // Mask of signals to be blocked when we're servicing <SIGALRM>. -}; - -template <class TQ> -class ACE_Export ACE_Thread_Timer_Queue_Adapter : public ACE_Task_Base -{ - // = TITLE - // Adapts a Timer_Queue using a separate thread for dispatching. - // - // = DESCRIPTION - // This implementation of a Timer_Queue uses a separate thread to - // dispatch the timers. The base queue need not be thread safe, - // this class takes all the necessary locks. - // - // = NOTE - // This is a case were template parameters will be useful, but - // (IMHO) the effort and portability problems discourage their - // use. -public: - typedef TQ TIMER_QUEUE; - - ACE_Thread_Timer_Queue_Adapter (ACE_Thread_Manager * = ACE_Thread_Manager::instance ()); - // Creates the timer queue. Activation of the task is the user's - // responsibility. - - long schedule (ACE_Event_Handler* handler, - const void *act, - const ACE_Time_Value &delay, - const ACE_Time_Value &interval = ACE_Time_Value::zero); - // Schedule the timer according to the semantics of the <TQ>; wakes - // up the dispatching thread. - - int cancel (long timer_id, const void **act = 0); - // Cancel the <timer_id> add return the <act> parameter if an - // address is passed in. Also wakes up the dispatching thread. - - virtual int svc (void); - // Runs the dispatching thread. - - virtual void deactivate (void); - // Inform the dispatching thread that it should terminate. - - ACE_SYNCH_MUTEX &mutex (void); - // Access the locking mechanism, useful for iteration. - - TQ &timer_queue (void); - // Access the implementation queue, useful for iteration. - - ACE_thread_t thr_id (void); - // Return the thread id of our active object. - - virtual int activate (long flags = THR_NEW_LWP, - int n_threads = 1, - int force_active = 0, - long priority = ACE_DEFAULT_THREAD_PRIORITY, - int grp_id = -1, - ACE_Task_Base *task = 0, - ACE_hthread_t thread_handles[] = 0, - void *stack[] = 0, - size_t stack_size[] = 0, - ACE_thread_t thread_names[] = 0); - // We override the default <activate> method so that we can ensure - // that only a single thread is ever spawned. Otherwise, too many - // weird things can happen... - -private: - TQ timer_queue_; - // The underlying Timer_Queue. - - ACE_SYNCH_CONDITION condition_; - // The dispatching thread sleeps on this condition while waiting to - // dispatch the next timer; it is used to wake it up if there is a - // change on the timer queue. - - ACE_SYNCH_MUTEX mutex_; - // The mutual exclusion mechanism which is required to use the - // <condition_>. - - int active_; - // When deactivate is called this variable turns to false and the - // dispatching thread is signalled, to terminate its main loop. - - ACE_thread_t thr_id_; - // Thread id of our active object task. -}; - -#if defined (__ACE_INLINE__) -#include "ace/Timer_Queue_Adapters.i" -#endif /* __ACE_INLINE__ */ - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "ace/Timer_Queue_Adapters.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("Timer_Queue_Adapters.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#endif /* ACE_TIMER_QUEUE_ADAPTERS_H */ |