PIP 5.6.1
Platform-Independent Primitives
Классы | Открытые типы | Открытые члены | Полный список членов класса
Класс PIDiagnostics

Диагностика соединения для частоты пакетов, пропускной способности и качества приема Подробнее...

#include <pidiagnostics.h>

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

Классы

struct  State
 Снимок текущих счетчиков и производных статистик. Подробнее...
 

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

enum  Quality
 Качество приема, оцениваемое по недавней истории пакетов.
 

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

 PIDiagnostics (bool start_=true)
 Создает диагностику и при необходимости сразу запускает периодическую оценку.
 
virtual ~PIDiagnostics ()
 Останавливает обновление диагностики.
 
PIDiagnostics::State state () const
 Возвращает потокобезопасный снимок текущего состояния диагностики.
 
PISystemTime disconnectTimeout () const
 Возвращает таймаут отключения и окно усреднения.
 
void setDisconnectTimeout (float s) DEPRECATEDM("use setDisconnectTimeout(PISystemTime)")
 Устанавливает таймаут отключения в секундах.
 
void setDisconnectTimeout (PISystemTime tm)
 Устанавливает таймаут отключения и окно усреднения.
 
PIDiagnostics::Quality quality () const
 Возвращает текущее качество приема.
 
PIString receiveSpeed () const
 Возвращает строку отформатированной скорости приема.
 
PIString sendSpeed () const
 Возвращает строку отформатированной скорости отправки.
 
- Открытые члены унаследованные от PITimer
 PITimer ()
 Создает таймер без обратного вызова тика.
 
 PITimer (std::function< void(int)> func)
 Создает таймер с обратным вызовом, принимающим значение делителя.
 
 PITimer (std::function< void()> func)
 Создает таймер с обратным вызовом, игнорирующим значение делителя.
 
virtual ~PITimer ()
 Уничтожает таймер и останавливает его внутренний рабочий поток.
 
PISystemTime interval () const
 Возвращает настроенный базовый интервал между основными тиками.
 
void setInterval (PISystemTime interval)
 Устанавливает базовый интервал. Если таймер запущен, перезапускает его с новым значением.
 
bool isRunning () const
 Возвращает, работает ли сейчас поток таймера.
 
bool isStopping () const
 Возвращает, был ли запрошен останов и идет ли еще завершение.
 
bool waitForFinish (PISystemTime timeout={})
 Ожидает завершения таймера. Возвращает false, если таймаут истек раньше.
 
bool start (PISystemTime interval)
 Устанавливает базовый интервал и запускает таймер.
 
bool start (PISystemTime interval, std::function< void()> func)
 Устанавливает базовый интервал и обратный вызов тика, затем запускает таймер.
 
bool start (double interval_ms) DEPRECATEDM("use start(PISystemTime)")
 Устаревшая перегрузка start(), принимающая миллисекунды.
 
void stopAndWait (int timeout_ms)
 Устаревшая перегрузка stopAndWait(), принимающая миллисекунды.
 
void stopAndWait (PISystemTime timeout={})
 Запрашивает остановку и ожидает завершения рабочего потока.
 
void setSlot (std::function< void()> func)
 Устанавливает обратный вызов тика, игнорирующий значение делителя.
 
void setSlot (std::function< void(int)> func)
 Устанавливает обратный вызов тика, принимающий текущее значение делителя.
 
void needLockRun (bool need)
 Включает блокировку внутреннего мьютекса вокруг обработки тиков.
 
bool isCallQueuedEvents () const
 Возвращает, должен ли таймер обрабатывать отложенную доставку для себя как исполнителя на каждом основном тике. По умолчанию true.
 
void setCallQueuedEvents (bool yes)
 Включает или отключает обработку отложенной доставки через maybeCallQueuedEvents() на каждом основном тике.
 
void addDelimiter (int delim, std::function< void(int)> func=nullptr)
 Добавляет делитель частоты, который вызывает func каждые delim основных тиков.
 
void addDelimiter (int delim, std::function< void()> func)
 Добавляет делитель с обратным вызовом, игнорирующим значение делителя.
 
void addDelimiter (int delim, std::function< void(void *)> slot)
 Добавляет делитель с сигнатурой обратного вызова, принимающей указатель.
 
void removeDelimiter (int delim)
 Удаляет все делители со значением delim.
 
bool start ()
 Запускает таймер с текущим значением interval().
 
bool restart ()
 Останавливает таймер, затем снова запускает его с текущим значением interval().
 
void stop ()
 Запрашивает остановку и пробуждает поток таймера, но не ожидает завершения.
 
void lock ()
 Блокирует внутренний мьютекс таймера.
 
void unlock ()
 Разблокирует внутренний мьютекс таймера.
 
void clearDelimiters ()
 Удаляет все делители частоты
 
void tickEvent (int delimiter)
 Вызывается на каждом тике таймера и на настроенных тиках делителей. Подробнее...
 
- Открытые члены унаследованные от PIObject
 PIObject (const PIString &name=PIString())
 Создает объект и инициализирует его свойство name.
 
virtual ~PIObject ()
 Уничтожает объект, вызывает deleted() и отключает его от событийного графа.
 
PIString name () const
 Возвращает свойство name этого объекта.
 
virtual const char * className () const
 Возвращает зарегистрированное имя класса этого объекта.
 
virtual uint classNameID () const
 Возвращает хэш от className().
 
virtual const char * parentClassName () const
 Возвращает зарегистрированное имя родительского класса, либо пустую строку для корня.
 
bool debug () const
 Возвращает, включен ли вывод piCoutObj для этого объекта.
 
void setName (const PIString &name)
 Устанавливает свойство name этого объекта.
 
void setDebug (bool debug)
 Включает или отключает вывод piCoutObj для этого объекта.
 
PIVariant property (const char *name) const
 Возвращает свойство объекта по имени "name".
 
void setProperty (const char *name, const PIVariant &value)
 Устанавливает свойство "name" в значение "value" и создаёт его при необходимости. Подробнее...
 
bool isPropertyExists (const char *name) const
 Возвращает, существует ли свойство "name".
 
void setThreadSafe (bool yes)
 Включает или отключает внутренний мьютекс объекта во время выполнения обработчиков. Подробнее...
 
bool isThreadSafe () const
 Возвращает, включен ли внутренний мьютекс объекта для выполнения обработчиков.
 
bool execute (const PIString &method, const PIVector< PIVariantSimple > &vl)
 Выполняет зарегистрированный метод или метод-обработчик по имени с переданными аргументами. Подробнее...
 
bool execute (const PIString &method)
 Перегрузка execute() для метода без аргументов.
 
bool execute (const PIString &method, const PIVariantSimple &v0)
 Перегрузка execute() для одного аргумента.
 
bool execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1)
 Перегрузка execute() для двух аргументов.
 
bool execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2)
 Перегрузка execute() для трёх аргументов.
 
bool execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3)
 Перегрузка execute() для четырёх аргументов.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVector< PIVariantSimple > &vl)
 Ставит выполнение зарегистрированного метода в очередь объекта-исполнителя. Подробнее...
 
bool executeQueued (PIObject *performer, const PIString &method)
 Перегрузка executeQueued() для метода без аргументов.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0)
 Перегрузка executeQueued() для одного аргумента.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1)
 Перегрузка executeQueued() для двух аргументов.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2)
 Перегрузка executeQueued() для трёх аргументов.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3)
 Перегрузка executeQueued() для четырёх аргументов.
 
void dump (const PIString &line_prefix=PIString()) const
 Выводит диагностическую информацию об объекте в проектный поток вывода.
 
PIStringList scopeList () const
 Возвращает зарегистрированную цепочку наследования объекта, включая его собственный класс.
 
PIStringList methodsEH () const
 Возвращает полные сигнатуры всех зарегистрированных событий и обработчиков для области этого класса.
 
bool isMethodEHContains (const PIString &name) const
 Возвращает, существует ли зарегистрированное событие или обработчик с таким именем.
 
PIString methodEHArguments (const PIString &name) const
 Возвращает список типов аргументов зарегистрированного метода через запятую.
 
PIString methodEHFullFormat (const PIString &name) const
 Возвращает полную зарегистрированную сигнатуру метода.
 
PIString methodEHFromAddr (const void *addr) const
 Возвращает имя зарегистрированного метода для указанного адреса точки входа.
 
void piDisconnect (const PIString &sig, PIObject *dest, void *ev_h)
 Разрывает соединения этого объекта-источника с конкретным обработчиком объекта-приемника для события "sig".
 
void piDisconnect (const PIString &sig, PIObject *dest)
 Разрывает все соединения этого объекта-источника от события "sig" к объекту-приемнику "dest".
 
void piDisconnect (const PIString &sig)
 Разрывает все соединения этого объекта-источника от события "sig".
 
bool isPIObject () const
 Возвращает, указывает ли этот указатель на ещё существующий экземпляр PIObject.
 
template<typename T >
bool isTypeOf () const
 Возвращает, принадлежит ли этот объект классу "T" или одному из его зарегистрированных потомков.
 
template<typename T >
T * cast () const
 Возвращает этот объект, приведённый к типу "T", если isTypeOf<T>() успешно, иначе nullptr.
 
void callQueuedEvents ()
 Выполняет все отложенные доставки, поставленные в очередь этому объекту-исполнителю.
 
bool maybeCallQueuedEvents ()
 Выполняет отложенные доставки только если этот объект использовался как исполнитель. Подробнее...
 
void deleteLater ()
 Планирует отложенное удаление объекта. Подробнее...
 
void deleted (PIObject *o)
 Вызывается непосредственно перед уничтожением объекта. Подробнее...
 

Handlers

void start ()
 Запускает периодическую оценку диагностики с интервалом по умолчанию.
 
void start (PISystemTime interval)
 Запускает периодическую оценку диагностики с интервалом "interval".
 
void reset ()
 Сбрасывает счетчики, скользящую историю и производные статистики.
 
void received (int size)
 
void received (int size, bool correct)
 Уведомляет диагностику об одном принятом пакете размером "size".
 
void sended (int size)
 Уведомляет диагностику об одном отправленном пакете размером "size".
 

Events

void qualityChanged (PIDiagnostics::Quality new_quality, PIDiagnostics::Quality old_quality)
 Генерируется при изменении качества приема с "old_quality" на "new_quality".
 

Дополнительные унаследованные члены

- Открытые статические члены унаследованные от PIObject
static bool execute (PIObject *o, const PIString &method, const PIVector< PIVariantSimple > &vl)
 Статическая удобная обёртка над execute().
 
static bool execute (PIObject *o, const PIString &method)
 Статическая перегрузка execute() без аргументов.
 
static bool execute (PIObject *o, const PIString &method, const PIVariantSimple &v0)
 Статическая перегрузка execute() для одного аргумента.
 
static bool execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1)
 Статическая перегрузка execute() для двух аргументов.
 
static bool execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2)
 Статическая перегрузка execute() для трёх аргументов.
 
static bool execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3)
 Статическая перегрузка execute() для четырёх аргументов.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVector< PIVariantSimple > &vl)
 Статическая удобная обёртка над executeQueued().
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method)
 Статическая перегрузка executeQueued() без аргументов.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0)
 Статическая перегрузка executeQueued() для одного аргумента.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1)
 Статическая перегрузка executeQueued() для двух аргументов.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2)
 Статическая перегрузка executeQueued() для трёх аргументов.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3)
 Статическая перегрузка executeQueued() для четырёх аргументов.
 
static PIObject::Connection piConnect (PIObject *src, const PIString &sig, PIObject *dest_o, void *dest, void *ev_h, void *e_h, int args, const char *loc)
 Низкоуровневый помощник прямого соединения, лежащий под устаревшими макросами CONNECT*.
 
static PIObject::Connection piConnectU (PIObject *src, const PIString &sig, PIObject *dest_o, void *dest, const PIString &hname, const char *loc, PIObject *performer=0)
 Низкоуровневый помощник соединения по имени, лежащий под CONNECTU() и CONNECTU_QUEUED().
 
static PIObject::Connection piConnectLS (PIObject *src, const PIString &sig, std::function< void()> *f, const char *loc)
 Низкоуровневый помощник, который соединяет событие с лямбдой или обёрткой функтора.
 
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest, void *ev_h)
 Разрывает соединения объекта-источника "src" с конкретным обработчиком объекта-приемника для события "sig".
 
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest)
 Разрывает все соединения объекта-источника "src" от события "sig" к объекту-приемнику "dest".
 
static void piDisconnect (PIObject *src, const PIString &sig)
 Разрывает все соединения объекта-источника "src" от события "sig".
 
static void raiseEvent (PIObject *sender, const uint eventID)
 Внутренний помощник доставки для зарегистрированных событий без аргументов.
 
template<typename T0 >
static void raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0())
 Внутренний помощник доставки для зарегистрированных событий с одним аргументом.
 
template<typename T0 , typename T1 >
static void raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1())
 Внутренний помощник доставки для зарегистрированных событий с двумя аргументами.
 
template<typename T0 , typename T1 , typename T2 >
static void raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1(), const T2 &v2=T2())
 Внутренний помощник доставки для зарегистрированных событий с тремя аргументами.
 
template<typename T0 , typename T1 , typename T2 , typename T3 >
static void raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1(), const T2 &v2=T2(), const T3 &v3=T3())
 Внутренний помощник доставки для зарегистрированных событий с четырьмя аргументами.
 
static PIObjectfindByName (const PIString &name)
 Возвращает первый живой объект с именем "name", либо nullptr.
 
static bool isPIObject (const PIObject *o)
 Возвращает, указывает ли "o" на ещё существующий экземпляр PIObject.
 
static bool isPIObject (const void *o)
 Перегрузка isPIObject() для нетипизированного указателя.
 
template<typename T >
static bool isTypeOf (const PIObject *o)
 Возвращает, принадлежит ли "o" классу "T" или одному из его зарегистрированных потомков.
 
template<typename T >
static bool isTypeOf (const void *o)
 Перегрузка isTypeOf() для нетипизированного указателя.
 
static PIString simplifyType (const char *a, bool readable=true)
 Упрощает запись типа C++ для метаданных зарегистрированных методов.
 
virtual void tick (int delimiter)
 Виртуальный метод тика. Основной цикл передает делитель 1, дополнительные делители передают свое значение.
 
- Защищенные члены унаследованные от PIObject
PIObjectemitter () const
 Возвращает объект-источник, который вызвал текущее событие. Подробнее...
 
virtual void propertyChanged (const char *name)
 Виртуальный метод, вызываемый после изменения свойства "name" через setProperty().
 

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

Диагностика соединения для частоты пакетов, пропускной способности и качества приема

Connection quality diagnostics.

Класс обеспечивает диагностику качества связи на основе статистики приема пакетов

Synopsis

This class provide abstract connection quality diagnostics and counting. You should create instance of PIDiagnostics and on packet receive call function received(), on packet send call function sended(). PIDiagnostics calculates correct, wrong and sended counters, packets per second, bytes per seconds, immediate and integral receive frequencies and receive/send speeds in human readable representation. There statistics are calculates one time per period, by default 1 second. To calculate them you should start PIDiagnostics with function start() or pass true to constructor.