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

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

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

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>
singleton 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

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