NAME

ACE_Timer_Queue_T

SYNOPSIS

#include <ace/Timer_Queue_T.h>

template<class TYPE, class FUNCTOR, class ACE_LOCK> class ACE_Timer_Queue_T { public: typedef ACE_Timer_Queue_Iterator_T<TYPE, FUNCTOR, ACE_LOCK> ITERATOR; ACE_Timer_Queue_T ( FUNCTOR *upcall_functor = 0, ACE_Free_List<ACE_Timer_Node_T <TYPE> > *freelist = 0 ); virtual ~ACE_Timer_Queue_T (void); virtual int is_empty (void) const = 0; virtual const ACE_Time_Value &earliest_time (void) const = 0; virtual long schedule ( const TYPE &type, const void *act, const ACE_Time_Value &delay, const ACE_Time_Value &interval = ACE_Time_Value::zero ) = 0; virtual int cancel ( const TYPE &type, int dont_call_handle_close = 1 ) = 0; virtual int cancel ( long timer_id, const void **act = 0, int dont_call_handle_close = 1 ) = 0; virtual int expire (const ACE_Time_Value &current_time); virtual int expire (void); virtual ACE_Time_Value gettimeofday (void); void gettimeofday (ACE_Time_Value (*gettimeofday)(void)); virtual ACE_Time_Value *calculate_timeout (ACE_Time_Value *max); virtual ACE_Time_Value *calculate_timeout ( ACE_Time_Value *max, ACE_Time_Value *the_timeout ); void timer_skew (const ACE_Time_Value &skew); const ACE_Time_Value &timer_skew (void) const; ACE_LOCK &mutex (void); FUNCTOR &upcall_functor (void); virtual ITERATOR &iter (void) = 0; virtual ACE_Timer_Node_T<TYPE> *remove_first (void) = 0; virtual void dump (void) const; virtual ACE_Timer_Node_T<TYPE> *get_first (void) = 0; virtual void return_node (ACE_Timer_Node_T<TYPE> *); protected: virtual void upcall ( TYPE &type, const void *act, const ACE_Time_Value &cur_time ); virtual void reschedule (ACE_Timer_Node_T<TYPE> *) = 0; virtual ACE_Timer_Node_T<TYPE> *alloc_node (void); virtual void free_node (ACE_Timer_Node_T<TYPE> *); ACE_LOCK mutex_; ACE_Free_List<ACE_Timer_Node_T<TYPE> > *free_list_; ACE_Time_Value (*gettimeofday_)(void); FUNCTOR *upcall_functor_; int delete_upcall_functor_; int delete_free_list_; private: ACE_Time_Value timeout_; ACE_Time_Value timer_skew_; inline ACE_UNIMPLEMENTED_FUNC ( ACE_Timer_Queue_T (const ACE_Timer_Queue_T<TYPE, FUNCTOR, ACE_LOCK> &) ); };

DESCRIPTION

This is an abstract base class that provides hook for implementing specialized policies such as ACE_Timer_List and ACE_Timer_Heap.

Initialization and termination methods.

ACE_Timer_Queue_T (
    FUNCTOR *upcall_functor = 0,
    ACE_Free_List<ACE_Timer_Node_T <TYPE> > *freelist = 0
    );

virtual ~ACE_Timer_Queue_T (void);

virtual int is_empty (void) const = 0;

virtual const ACE_Time_Value &earliest_time (void) const = 0;

virtual long schedule (
    const TYPE &type,
    const void *act,
    const ACE_Time_Value &delay,
    const ACE_Time_Value &interval = ACE_Time_Value::zero
    ) = 0;

virtual int cancel (
    const TYPE &type,
    int dont_call_handle_close = 1
    ) = 0;

virtual int cancel (
    long timer_id,
    const void **act = 0,
    int dont_call_handle_close = 1
    ) = 0;

virtual int expire (const ACE_Time_Value &current_time);

virtual int expire (void);

virtual ACE_Time_Value gettimeofday (void);

void gettimeofday (ACE_Time_Value (*gettimeofday)(void));

virtual ACE_Time_Value *calculate_timeout (ACE_Time_Value *max);

virtual ACE_Time_Value *calculate_timeout (
    ACE_Time_Value *max,
    ACE_Time_Value *the_timeout
    );

Set/get the timer skew for the Timer_Queue.

void timer_skew (const ACE_Time_Value &skew);

const ACE_Time_Value &timer_skew (void) const;

ACE_LOCK &mutex (void);

FUNCTOR &upcall_functor (void);

virtual ITERATOR &iter (void) = 0;

virtual ACE_Timer_Node_T<TYPE> *remove_first (void) = 0;

virtual void dump (void) const;

virtual ACE_Timer_Node_T<TYPE> *get_first (void) = 0;

virtual void return_node (ACE_Timer_Node_T<TYPE> *);

Don't allow these operations for now.

inline ACE_UNIMPLEMENTED_FUNC (
    ACE_Timer_Queue_T (const ACE_Timer_Queue_T<TYPE, FUNCTOR, ACE_LOCK> &)
    );

AUTHOR

Doug Schmidt, Irfan Pyarali, and Darrell Brunsch

TITLE

Provides an interface to timers.

LIBRARY

ace