Overte C++ Documentation
OctreeStatsProvider.h
1 //
2 // OctreeStatsProvider.h
3 // interface/src/ui
4 //
5 // Created by Vlad Stelmahovsky on 3/12/17.
6 // Copyright 2017 High Fidelity, Inc.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 
12 #ifndef hifi_OctreeStatsProvider_h
13 #define hifi_OctreeStatsProvider_h
14 
15 #include <OctreeSceneStats.h>
16 #include <QTimer>
17 #include <QColor>
18 
19 #include "DependencyManager.h"
20 
21 class OctreeStatsProvider : public QObject, public Dependency {
22  Q_OBJECT
23  SINGLETON_DEPENDENCY
24 
25  Q_PROPERTY(int serversNum READ serversNum NOTIFY serversNumChanged)
26  Q_PROPERTY(QString serverElements READ serverElements NOTIFY serverElementsChanged)
27  Q_PROPERTY(QString localElements READ localElements NOTIFY localElementsChanged)
28  Q_PROPERTY(QString localElementsMemory READ localElementsMemory NOTIFY localElementsMemoryChanged)
29  Q_PROPERTY(QString sendingMode READ sendingMode NOTIFY sendingModeChanged)
30  Q_PROPERTY(QString processedPackets READ processedPackets NOTIFY processedPacketsChanged)
31  Q_PROPERTY(QString processedPacketsElements READ processedPacketsElements NOTIFY processedPacketsElementsChanged)
32  Q_PROPERTY(QString processedPacketsEntities READ processedPacketsEntities NOTIFY processedPacketsEntitiesChanged)
33  Q_PROPERTY(QString processedPacketsTiming READ processedPacketsTiming NOTIFY processedPacketsTimingChanged)
34  Q_PROPERTY(QString outboundEditPackets READ outboundEditPackets NOTIFY outboundEditPacketsChanged)
35  Q_PROPERTY(QString entityUpdateTime READ entityUpdateTime NOTIFY entityUpdateTimeChanged)
36  Q_PROPERTY(QString entityUpdates READ entityUpdates NOTIFY entityUpdatesChanged)
37 
38  Q_PROPERTY(QStringList servers READ servers NOTIFY serversChanged)
39 
40 public:
41  OctreeStatsProvider(QObject* parent, NodeToOctreeSceneStats* model);
42  ~OctreeStatsProvider();
43 
44  int serversNum() const;
45 
46  QString serverElements() const {
47  return m_serverElements;
48  }
49 
50  QString localElements() const {
51  return m_localElements;
52  }
53 
54  QString localElementsMemory() const {
55  return m_localElementsMemory;
56  }
57 
58  QString sendingMode() const {
59  return m_sendingMode;
60  }
61 
62  QString processedPackets() const {
63  return m_processedPackets;
64  }
65 
66  QString processedPacketsElements() const {
67  return m_processedPacketsElements;
68  }
69 
70  QString processedPacketsEntities() const {
71  return m_processedPacketsEntities;
72  }
73 
74  QString processedPacketsTiming() const {
75  return m_processedPacketsTiming;
76  }
77 
78  QString outboundEditPackets() const {
79  return m_outboundEditPackets;
80  }
81 
82  QString entityUpdateTime() const {
83  return m_entityUpdateTime;
84  }
85 
86  QString entityUpdates() const {
87  return m_entityUpdates;
88  }
89 
90  QStringList servers() const {
91  return m_servers;
92  }
93 
94 signals:
95 
96  void serversNumChanged(int serversNum);
97  void serverElementsChanged(const QString &serverElements);
98  void localElementsChanged(const QString &localElements);
99  void sendingModeChanged(const QString &sendingMode);
100  void processedPacketsChanged(const QString &processedPackets);
101  void localElementsMemoryChanged(const QString &localElementsMemory);
102  void processedPacketsElementsChanged(const QString &processedPacketsElements);
103  void processedPacketsEntitiesChanged(const QString &processedPacketsEntities);
104  void processedPacketsTimingChanged(const QString &processedPacketsTiming);
105  void outboundEditPacketsChanged(const QString &outboundEditPackets);
106  void entityUpdateTimeChanged(const QString &entityUpdateTime);
107  void entityUpdatesChanged(const QString &entityUpdates);
108 
109  void serversChanged(const QStringList &servers);
110 
111 public slots:
112  void startUpdates();
113  void stopUpdates();
114  QColor getColor() const;
115 
116 private slots:
117  void updateOctreeStatsData();
118 protected:
119  void updateOctreeServers();
120  void showOctreeServersOfType(NodeType_t serverType);
121 
122 private:
123  NodeToOctreeSceneStats* _model;
124  int _statCount;
125 
126  const int SAMPLES_PER_SECOND = 10;
127  SimpleMovingAverage _averageUpdatesPerSecond;
128  quint64 _lastWindowAt = usecTimestampNow();
129  quint64 _lastKnownTrackedEdits = 0;
130 
131  quint64 _lastRefresh = 0;
132 
133  QTimer _updateTimer;
134  int m_serversNum { 0 };
135  QString m_serverElements;
136  QString m_localElements;
137  QString m_localElementsMemory;
138  QString m_sendingMode;
139  QString m_processedPackets;
140  QString m_processedPacketsElements;
141  QString m_processedPacketsEntities;
142  QString m_processedPacketsTiming;
143  QString m_outboundEditPackets;
144  QString m_entityUpdateTime;
145  QString m_entityUpdates;
146  QStringList m_servers;
147 };
148 
149 #endif // hifi_OctreeStatsProvider_h
quint8 NodeType_t
An 8-bit value identifying the type of a node - domain server, audio mixer, etc.
Definition: NodeType.h:22
Definition: OctreeSceneStats.h:274