#ifndef CONNECTIONPROFILER_H
#define CONNECTIONPROFILER_H

#include <QObject>
#include <QTime>

class QTimer;

class ConnectionProfiler : public QObject
{
    Q_OBJECT

public:
    static ConnectionProfiler *instance();
    void addFBUpdate( );
    void addReadBytes( quint64 bytes );
    void addWriteBytes( quint64 bytes);
    void addRect( quint64 rects );
    void addAudioBytes( quint64 packet );
    void addUpdateLatencyTime( quint64 ms );
    void addPaintLatencyTime( quint64 ms );

private slots:
    void updateStats();

private:
    ConnectionProfiler(QObject *parent = 0);
    static ConnectionProfiler *m_instance;
    QTimer *m_interval;
    QTime m_timer;
    quint64 m_audioBytesAccumulator;
    quint64 m_bytesReadAccumulator;
    quint64 m_bytesWrittenAccumulator;
    quint64 m_rectsReadAccumulator;
    quint64 m_fbReadAccumulator;
    quint64 m_updateLatencyAccumulator;
    quint64 m_updateLatencySampleCounter;
    quint64 m_paintLatencyAccumulator;
    quint64 m_paintLatencySampleCounter;
};

#endif // CONNECTIONPROFILER_H

