48 lines · 1.2 KB · C
RawDownload
////  Created by Ryan Huffman on 2016-12-14//  Copyright 2013-2016 High Fidelity, Inc.////  Distributed under the Apache License, Version 2.0.//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html// #pragma once #include <QtCore/QString>#include <QtCore/QVariant>#include <QtCore/QSet>#include <QtCore/QVariantMap> #include <mutex> #include "DependencyManager.h"#include "Trace.h" using EditStatFunction = std::function<QVariant(QVariant currentValue)>; class StatTracker : public Dependency {public:    StatTracker();    QVariant getStat(const QString& name);    void setStat(const QString& name, int64_t value);    void updateStat(const QString& name, int64_t mod);    void incrementStat(const QString& name);    void decrementStat(const QString& name);private:    using Mutex = std::mutex;    using Lock = std::lock_guard<Mutex>;    Mutex _statsLock;    QHash<QString, int64_t> _stats;}; class CounterStat {public:    CounterStat(QString name) : _name(name) {        DependencyManager::get<StatTracker>()->incrementStat(_name);    }        ~CounterStat() {        DependencyManager::get<StatTracker>()->decrementStat(_name);    }    private:    QString _name;};