PIP  1.0.0_rc3
Platform-Independent Primitives
PIDiagnostics Class Reference

Connection quality diagnostics. More...

Inheritance diagram for PIDiagnostics:

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 Types inherited from PITimer
enum  TimerImplementation { Thread = 0x01, ThreadRT = 0x02, Pool = 0x04 }
 Timer implementations. More...
 

Public Member Functions

 PIDiagnostics (bool start_=true)
 Constructs an empty diagnostics and if "start_" start it.
 
PIDiagnostics::State state () const
 Returns current state.
 
float disconnectTimeout () const
 Returns period of full disconnect in seconds and period of averaging frequency.
 
void setDisconnectTimeout (float s)
 Returns period of full disconnect in seconds and period of averaging frequency.
 
float immediateFrequency () const
 Returns immediate receive frequency, packets/s.
 
float integralFrequency () const
 Returns integral receive frequency for disconnectTimeout() seconds, packets/s.
 
ullong receiveCountPerSec () const
 Returns correct received packets per second.
 
ullong sendCountPerSec () const
 Returns sended packets per second.
 
ullong receiveBytesPerSec () const
 Returns correct received bytes per second.
 
ullong sendBytesPerSec () const
 Returns sended bytes per second.
 
ullong receiveBytes () const
 Returns overall correct received bytes.
 
ullong wrongBytes () const
 Returns overall wrong received bytes.
 
ullong sendBytes () const
 Returns overall sended bytes.
 
ullong receiveCount () const
 Returns overall correct received packets count.
 
ullong wrongCount () const
 Returns overall wrong received packets count.
 
ullong sendCount () const
 Returns overall sended packets count.
 
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".
 
const float * immediateFrequency_ptr () const
 Returns immediate receive frequency pointer, packets/s. Useful for output to PIConsole.
 
const float * integralFrequency_ptr () const
 Returns integral receive frequency pointer for period, packets/s. Useful for output to PIConsole.
 
const ullong * receiveCountPerSec_ptr () const
 Returns correct received packets per second pointer. Useful for output to PIConsole.
 
const ullong * sendCountPerSec_ptr () const
 Returns sended packets per second pointer. Useful for output to PIConsole.
 
const ullong * receiveBytesPerSec_ptr () const
 Returns correct received bytes per second pointer. Useful for output to PIConsole.
 
const ullong * sendBytesPerSec_ptr () const
 Returns sended bytes per second pointer. Useful for output to PIConsole.
 
const ullong * receiveBytes_ptr () const
 Returns overall correct received bytes pointer. Useful for output to PIConsole.
 
const ullong * wrongBytes_ptr () const
 Returns overall wrong received bytes pointer. Useful for output to PIConsole.
 
const ullong * sendBytes_ptr () const
 Returns overall sended bytes pointer. Useful for output to PIConsole.
 
const ullong * receiveCount_ptr () const
 Returns overall correct received packets count pointer. Useful for output to PIConsole.
 
const ullong * wrongCount_ptr () const
 Returns overall wrong received packets count pointer. Useful for output to PIConsole.
 
const ullong * sendCount_ptr () const
 Returns overall sended packets count pointer. Useful for output to PIConsole.
 
const int * quality_ptr () const
 Returns connection quality pointer. Useful for output to PIConsole.
 
const PIStringreceiveSpeed_ptr () const
 Returns receive speed pointer in format "n {B|kB|MB|GB|TB}/s". Useful for output to PIConsole.
 
const PIStringsendSpeed_ptr () const
 Returns send speed pointer in format "n {B|kB|MB|GB|TB}/s". Useful for output to PIConsole.
 
- Public Member Functions inherited from PITimer
 PITimer ()
 Constructs timer with PITimer::Thread implementation.
 
 PITimer (TimerImplementation ti)
 Constructs timer with "ti" implementation.
 
 PITimer (TimerEvent slot, void *data=0, TimerImplementation ti=Thread)
 Constructs timer with "slot" slot, "data" data and "ti" implementation.
 
PITimer::TimerImplementation implementation () const
 Returns timer implementation.
 
double interval () const
 Returns timer loop delay in milliseconds.
 
void setInterval (double ms)
 Set timer loop delay in milliseconds.
 
bool isRunning () const
 Returns if timer is started.
 
bool isStopped () const
 Returns if timer is not started.
 
void startDeferred (double delay_ms)
 Start timer with interval() loop delay after delay_msecs delay. More...
 
void startDeferred (double interval_ms, double delay_ms)
 Start timer with interval_msecs loop delay after delay_msecs delay. More...
 
void startDeferred (PIDateTime start_datetime)
 Start timer with interval() loop delay after start_datetime date and time. More...
 
void startDeferred (double interval_ms, PIDateTime start_datetime)
 Start timer with interval_msecs loop delay after start_datetime date and time. More...
 
void setData (void *data_)
 Set custom data.
 
void setSlot (TimerEvent slot)
 Set timer tick function.
 
void * data () const
 Returns common data passed to tick functions.
 
void addDelimiter (int delim, TimerEvent slot=0)
 Add frequency delimiter delim with optional delimiter slot slot.
 
void removeDelimiter (int delim)
 Remove all frequency delimiters delim.
 
void removeDelimiter (TimerEvent slot)
 Remove all frequency delimiters with slot slot.
 
void removeDelimiter (int delim, TimerEvent slot)
 Remove all frequency delimiters delim with slot slot.
 
bool start ()
 Start timer with interval() loop delay. More...
 
bool start (double interval_ms_d)
 Start timer with msecs loop delay. More...
 
bool restart ()
 Stop and start timer with interval() loop delay.
 
bool stop ()
 Stop timer.
 
void clearDelimiters ()
 Remove all frequency delimiters.
 
void tickEvent (void *data_, 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 object class name.
 
bool debug () const
 Return if debug of this object is active.
 
void setName (const PIString &name)
 Set object name.
 
void setDebug (bool debug)
 Set object debug active.
 
const PIMap< PIString, PIVariant > & properties () const
 Returns properties of the object.
 
int propertiesCount () const
 Returns properties count of the object.
 
PIVariant property (const PIString &name) const
 Returns property with name "name".
 
void setProperty (const PIString &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 PIString &name) const
 Returns if property with name "name" exists.
 

Handlers

void start (double msecs)
 Start diagnostics evaluations with period "msecs" milliseconds.
 
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)
 Disconnect object "src" from all connections with event name "sig".
 
static void piDisconnect (PIObject *src)
 Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
 
static PIObjectfindByName (const PIString &name)
 Returns PIObject* with name "name" or 0, if there is no object found.
 
- 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.
 
void deleted ()
 Raise before object delete. More...
 

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%