PIP 5.5.3
Platform-Independent Primitives
Classes | Public Types | Public Member Functions | List of all members
PIDiagnostics Class Reference

Connection quality diagnostics. More...

Inheritance diagram for PIDiagnostics:
Inheritance graph
[legend]

Classes

struct  State
 Information about current diagnostics state. More...
 

Public Types

enum  Quality {
  Unknown = 1 , Failure = 2 , Bad = 3 , Average = 4 ,
  Good = 5
}
 Connection quality. More...
 

Public Member Functions

 PIDiagnostics (bool start_=true)
 Constructs an empty diagnostics and if "start_" start it.
 
PIDiagnostics::State state () const
 Returns current state.
 
PISystemTime disconnectTimeout () const
 Returns period of full disconnect in seconds and period of averaging frequency.
 
void setDisconnectTimeout (float s) DEPRECATEDM("use setDisconnectTimeout(PISystemTime)")
 Returns period of full disconnect in seconds and period of averaging frequency.
 
void setDisconnectTimeout (PISystemTime tm)
 Returns period of full disconnect and period of averaging frequency.
 
PIDiagnostics::Quality quality () const
 Returns connection quality.
 
PIString receiveSpeed () const
 Returns receive speed in format "n {B|kB|MB|GB|TB}/s".
 
PIString sendSpeed () const
 Returns send speed in format "n {B|kB|MB|GB|TB}/s".
 
- Public Member Functions inherited from PITimer
 PITimer ()
 Constructs timer.
 
 PITimer (std::function< void(int)> func)
 Constructs timer with method void(int)
 
 PITimer (std::function< void()> func)
 Constructs timer with method void()
 
PISystemTime interval () const
 Returns timer loop delay.
 
void setInterval (PISystemTime interval)
 Set timer loop delay.
 
bool isRunning () const
 Returns if timer is started.
 
bool isStopping () const
 Return if timer is stopping.
 
bool waitForFinish (PISystemTime timeout={})
 Wait for timer stop.
 
bool start (PISystemTime interval)
 Start timer with "interval" loop delay.
 
bool start (PISystemTime interval, std::function< void()> func)
 Start timer with "interval" loop delay and tick function "func".
 
void stopAndWait (int timeout_ms)
 Stop timer and wait for finish.
 
void stopAndWait (PISystemTime timeout={})
 Stop timer and wait for finish.
 
void setSlot (std::function< void()> func)
 Set timer tick function.
 
void setSlot (std::function< void(int)> func)
 Set timer tick function.
 
bool isCallQueuedEvents () const
 Returns if timer should exec maybeCallQueuedEvents() at every tick. By default true.
 
void setCallQueuedEvents (bool yes)
 Set timer exec maybeCallQueuedEvents() at every tick.
 
void addDelimiter (int delim, std::function< void(int)> func=nullptr)
 Add frequency delimiter "delim" with optional delimiter slot "slot".
 
void addDelimiter (int delim, std::function< void()> func)
 Add frequency delimiter "delim" with optional delimiter slot "slot".
 
void addDelimiter (int delim, std::function< void(void *)> slot)
 Add frequency delimiter "delim" with optional delimiter slot "slot".
 
void removeDelimiter (int delim)
 Remove all frequency delimiters "delim".
 
bool start ()
 Start timer with interval() loop delay.
 
bool restart ()
 Stop and start timer with interval() loop delay.
 
void stop ()
 Stop timer (don`t wait for finish)
 
void clearDelimiters ()
 Remove all frequency delimiters.
 
void tickEvent (int delimiter)
 Raise on timer tick. More...
 
- Public Member Functions inherited from PIObject
 PIObject (const PIString &name=PIString())
 Contructs PIObject with name "name".
 
PIString name () const
 Returns object name.
 
virtual const char * className () const
 Returns object class name.
 
virtual const char * parentClassName () const
 Returns parent class name.
 
bool debug () const
 Return if piCoutObj of this object is active.
 
void setName (const PIString &name)
 Set object name.
 
void setDebug (bool debug)
 Set object piCoutObj active.
 
PIVariant property (const char *name) const
 Returns property with name "name".
 
void setProperty (const char *name, const PIVariant &value)
 Set property with name "name" to "value". If there is no such property in object it will be added.
 
bool isPropertyExists (const char *name) const
 Returns if property with name "name" exists.
 
PIStringList scopeList () const
 Returns subclass scope of this object (including this class name)
 
void piDisconnect (const PIString &sig, PIObject *dest, void *ev_h)
 Disconnect object from all connections with event name "sig", connected to destination object "dest" and handler "ev_h".
 
void piDisconnect (const PIString &sig, PIObject *dest)
 Disconnect object from all connections with event name "sig", connected to destination object "dest".
 
void piDisconnect (const PIString &sig)
 Disconnect object from all connections with event name "sig".
 
bool isPIObject () const
 Returns if this is valid PIObject (check signature)
 
template<typename T >
bool isTypeOf () const
 Returns if this is valid PIObject subclass "T" (check signature and classname)
 
template<typename T >
T * cast () const
 Returns cast to T if this is valid subclass "T" (check by isTypeOf()) or "nullptr".
 
void callQueuedEvents ()
 Execute all posted events from CONNECTU_QUEUED connections.
 
bool maybeCallQueuedEvents ()
 Check if any CONNECTU_QUEUED connections to this object and execute them. More...
 
void deleteLater ()
 Mark object to delete. More...
 
void deleted (PIObject *o)
 Raise before object delete. More...
 

Handlers

void reset ()
 Reset diagnostics counters.
 
void received (int size, bool correct)
 Notify diagnostics about "correct" corected received packet.
 
void sended (int size)
 Notify diagnostics about sended packet.
 

Events

void qualityChanged (PIDiagnostics::Quality new_quality, PIDiagnostics::Quality old_quality)
 Raise on change receive quality from "old_quality" to "new_quality".
 

Additional Inherited Members

- Static Public Member Functions inherited from PIObject
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest, void *ev_h)
 Disconnect object "src" from all connections with event name "sig", connected to destination object "dest" and handler "ev_h".
 
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest)
 Disconnect object "src" from all connections with event name "sig", connected to destination object "dest".
 
static void piDisconnect (PIObject *src, const PIString &sig)
 Disconnect object "src" from all connections with event name "sig".
 
static PIObjectfindByName (const PIString &name)
 Returns PIObject* with name "name" or 0, if there is no object found.
 
static bool isPIObject (const PIObject *o)
 Returns if "o" is valid PIObject (check signature)
 
template<typename T >
static bool isTypeOf (const PIObject *o)
 Returns if "o" is valid PIObject subclass "T" (check signature and classname)
 
virtual void tick (int delimiter)
 Timer execution function, similar to "slot" or event timeout(). By default does nothing.
 
- Protected Member Functions inherited from PIObject
PIObjectemitter () const
 Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
 
virtual void propertyChanged (const char *name)
 Virtual function executes after property with name "name" has been changed.
 

Detailed Description

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.

Member Enumeration Documentation

◆ Quality

Connection quality.

Enumerator
Unknown 

Unknown, no one packet received yet

Failure 

No connection, no one correct packet received for last period

Bad 

Bad connection, correct packets received <= 20%

Average 

Average connection, correct packets received > 20% and <= 80%

Good 

Good connection, correct packets received > 80%