UniSet 2.32.1
Классы | Открытые члены | Защищенные типы | Защищенные члены | Защищенные данные | Полный список членов класса
Класс uniset::LT_Object

#include <LT_Object.h>

Граф наследования:uniset::LT_Object:
Inheritance graph
[см. легенду]

Классы

class  Timer_eq
 
struct  TimerInfo
 

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

virtual timeout_t askTimer (uniset::TimerId timerid, timeout_t timeMS, clock_t ticks=-1, uniset::Message::Priority p=uniset::Message::High)
 
timeout_t checkTimers (UniSetObject *obj)
 
timeout_t getTimeInterval (uniset::TimerId timerid) const
 
timeout_t getTimeLeft (uniset::TimerId timerid) const
 

Защищенные типы

typedef std::deque< TimerInfoTimersList
 

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

virtual std::string getTimerName (int id) const
 
TimersList getTimersList () const
 

Защищенные данные

timeout_t sleepTime
 

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

Заметки
'_LT' - это "local timers". Класс реализующий механизм работы с локальными таймерами. Обеспечивает более надёжную работу т.к. позволяет обходится без удалённого заказа таймеров у TimеService-а. Но следует помнить, что при этом объект использующий такие таймеры становится более ресурсоёмким, т.к. во время работы поток обработки сообщений не "спит", как у обычного UniSetObject-а, а тратит время на проверку таймеров (правда при условии, что в списке есть хотя бы один заказ)
Основной принцип
Проверяет список таймеров и при срабатывании формирует стандартное уведомление uniset::TimerMessage, которое помещается в очередь указанному объекту. При проверке таймеров, определяется минимальное время оставшееся до очередного срабатывания. Если в списке не остаётся ни одного таймера - возвращает UniSetTimers::WaitUpTime.

Примерный код использования выглядит так:

class MyClass:
public UniSetObject
{
...
int sleepTime;
UniSetObject_LT lt;
void callback();
}
void callback()
{
// При реализации с использованием waitMessage() каждый раз при вызове askTimer() необходимо
// проверять возвращаемое значение на UniSetTimers::WaitUpTime и вызывать termWaiting(),
// чтобы избежать ситуации, когда процесс до заказа таймера 'спал'(в функции waitMessage()) и после
// заказа продолжит спать (т.е. обработчик вызван не будет)...
try
{
if( waitMessage(msg, sleepTime) )
processingMessage(&msg);
sleepTime=lt.checkTimers(this);
}
catch( uniset::Exception& ex)
{
cout << myname << "(callback): " << ex << endl;
}
}
void askTimers()
{
// проверяйте возвращаемое значение
if( lt.askTimer(Timer1, 1000) != UniSetTimer::WaitUpTime )
termWaiting();
}
Definition Exceptions.h:46
timeout_t sleepTime
Definition LT_Object.h:197
Definition UniSetObject.h:80
static const timeout_t WaitUpTime
Definition PassiveTimer.h:69
Предупреждения
Точность работы определяется периодичностью вызова обработчика.
См. также
TimerService

Методы

◆ askTimer()

timeout_t LT_Object::askTimer ( uniset::TimerId timerid,
timeout_t timeMS,
clock_t ticks = -1,
uniset::Message::Priority p = uniset::Message::High )
virtual

заказ таймера

Аргументы
timerid- идентификатор таймера
timeMS- период. 0 - означает отказ от таймера
ticks- количество уведомлений. "-1" - постоянно
p- приоритет присылаемого сообщения
Возвращает
Возвращает время [мсек] оставшееся до срабатывания очередного таймера

Переопределяется в uniset::UniSetObject.

◆ checkTimers()

timeout_t LT_Object::checkTimers ( UniSetObject * obj)

основная функция обработки.

Аргументы
obj- указатель на объект, которому посылается уведомление
Возвращает
Возвращает время [мсек] оставшееся до срабатывания очередного таймера

◆ getTimeInterval()

timeout_t LT_Object::getTimeInterval ( uniset::TimerId timerid) const

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

Аргументы
timerid- идентификатор таймера
Возвращает
0 - если таймер не найден, время (мсек) если таймер есть.

◆ getTimeLeft()

timeout_t LT_Object::getTimeLeft ( uniset::TimerId timerid) const

получить оставшееся время для таймера timerid

Аргументы
timerid- идентификатор таймера
Возвращает
0 - если таймер не найден, время (мсек) если таймер есть.

◆ getTimerName()

string LT_Object::getTimerName ( int id) const
protectedvirtual

пользовательская функция для вывода названия таймера

Переопределяется в uniset::SharedMemory.

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

◆ sleepTime

timeout_t uniset::LT_Object::sleepTime
protected

текущее время ожидания