UniSet  2.6.0
Классы | Открытые типы | Открытые члены | Статические открытые данные | Защищенные члены | Друзья | Полный список членов класса
Шаблон класса uniset::CallbackTimer< Caller >

Таймер Подробнее...

Классы

struct  FindId_eq
struct  TimerInfo

Открытые типы

typedef void(Caller::* Action )(size_t id)

Открытые члены

 CallbackTimer (Caller *r, Action a)
void run ()
void terminate ()
void reset (size_t id)
void setTiming (size_t id, timeout_t timrMS)
timeout_t getInterval (size_t id)
timeout_t getCurrent (size_t id)
void add (size_t id, timeout_t timeMS) throw (uniset::LimitTimers)
void remove (size_t id)

Статические открытые данные

static const size_t MAXCallbackTimer = 20

Защищенные члены

void work ()
void startTimers ()
void clearTimers ()

Друзья

class ThreadCreator< CBT >

Подробное описание

template<class Caller>
class uniset::CallbackTimer< Caller >

Таймер

Автор
Pavel Vainerman
Создает поток, в котором происходит отсчет тактов (10ms). Позволяет заказывать до CallbackTimer::MAXCallbackTimer таймеров. При срабатывании будет вызвана указанная функция с указанием Id таймера, который сработал. Функция обратного вызова должна удовлетворять шаблону CallbackTimer::Action. Пример создания таймера:
class MyClass
{
public:
void Time(size_t id){ cout << "Timer id: "<< id << endl;}
};
MyClass* rec = new MyClass();
...
CallbackTimer<MyClass> *timer1 = new CallbackTimer<MyClass>(rec);
timer1->add(1, &MyClass::Time, 1000);
timer1->add(5, &MyClass::Time, 1200);
timer1->run();
Заметки
Каждый экземпляр класса CallbackTimer создает поток, поэтому желательно не создавать больше одного экземпляра, для одного процесса (чтобы не порождать много потоков).

Определения типов

template<class Caller >
typedef void(Caller::* uniset::CallbackTimer< Caller >::Action)(size_t id)

прототип функции вызова

Конструктор(ы)

template<class Caller >
uniset::CallbackTimer< Caller >::CallbackTimer ( Caller *  r,
Action  a 
)

Создание таймера

Аргументы
r- указатель на заказчика

Методы

template<class Caller >
void uniset::CallbackTimer< Caller >::add ( size_t  id,
timeout_t  timeMS 
) throw (uniset::LimitTimers)

добавление нового таймера

template<class Caller >
timeout_t uniset::CallbackTimer< Caller >::getCurrent ( size_t  id)

получить текущее значение таймера

template<class Caller >
timeout_t uniset::CallbackTimer< Caller >::getInterval ( size_t  id)

получить интервал, на который установлен таймер, в мс

template<class Caller >
void uniset::CallbackTimer< Caller >::remove ( size_t  id)

удаление таймера

template<class Caller >
void uniset::CallbackTimer< Caller >::reset ( size_t  id)

перезапустить таймер

template<class Caller >
void uniset::CallbackTimer< Caller >::run ( )

запуск таймера

template<class Caller >
void uniset::CallbackTimer< Caller >::setTiming ( size_t  id,
timeout_t  timrMS 
)

установить таймер и запустить

template<class Caller >
void uniset::CallbackTimer< Caller >::terminate ( )

остановка

Данные класса

template<class Caller >
const size_t uniset::CallbackTimer< Caller >::MAXCallbackTimer = 20
static

Максимальное количество таймеров