Overte C++ Documentation
DomainServerNodeData.h
1 //
2 // DomainServerNodeData.h
3 // domain-server/src
4 //
5 // Created by Stephen Birarda on 2/6/2014.
6 // Copyright 2014 High Fidelity, Inc.
7 // Copyright 2021 Vircadia contributors.
8 //
9 // Distributed under the Apache License, Version 2.0.
10 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
11 //
12 
13 #ifndef hifi_DomainServerNodeData_h
14 #define hifi_DomainServerNodeData_h
15 
16 #include <QtCore/QElapsedTimer>
17 #include <QtCore/QHash>
18 #include <QtCore/QUuid>
19 #include <QtCore/QJsonObject>
20 
21 #include <SockAddr.h>
22 #include <NLPacket.h>
23 #include <NodeData.h>
24 #include <NodeType.h>
25 
26 class DomainServerNodeData : public NodeData {
27 public:
28  DomainServerNodeData();
29 
30  const QJsonObject& getStatsJSONObject() const { return _statsJSONObject; }
31 
32  void updateJSONStats(QByteArray statsByteArray);
33 
34  void setAssignmentUUID(const QUuid& assignmentUUID) { _assignmentUUID = assignmentUUID; }
35  const QUuid& getAssignmentUUID() const { return _assignmentUUID; }
36 
37  void setUsername(const QString& username) { _username = username; }
38  const QString& getUsername() const { return _username; }
39 
40  QElapsedTimer& getPaymentIntervalTimer() { return _paymentIntervalTimer; }
41 
42  void setSendingSockAddr(const SockAddr& sendingSockAddr) { _sendingSockAddr = sendingSockAddr; }
43  const SockAddr& getSendingSockAddr() { return _sendingSockAddr; }
44 
45  void setIsAuthenticated(bool isAuthenticated) { _isAuthenticated = isAuthenticated; }
46  bool isAuthenticated() const { return _isAuthenticated; }
47 
48  QHash<QUuid, QUuid>& getSessionSecretHash() { return _sessionSecretHash; }
49 
50  const NodeSet& getNodeInterestSet() const { return _nodeInterestSet; }
51  void setNodeInterestSet(const NodeSet& nodeInterestSet) { _nodeInterestSet = nodeInterestSet; }
52 
53  void setNodeVersion(const QString& nodeVersion) { _nodeVersion = nodeVersion; }
54  const QString& getNodeVersion() { return _nodeVersion; }
55 
56  void setHardwareAddress(const QString& hardwareAddress) { _hardwareAddress = hardwareAddress; }
57  const QString& getHardwareAddress() { return _hardwareAddress; }
58 
59  void setMachineFingerprint(const QUuid& machineFingerprint) { _machineFingerprint = machineFingerprint; }
60  const QUuid& getMachineFingerprint() { return _machineFingerprint; }
61 
62  void setLastDomainCheckinTimestamp(quint64 lastDomainCheckinTimestamp) { _lastDomainCheckinTimestamp = lastDomainCheckinTimestamp; }
63  quint64 getLastDomainCheckinTimestamp() { return _lastDomainCheckinTimestamp; }
64 
65  void addOverrideForKey(const QString& key, const QString& value, const QString& overrideValue);
66  void removeOverrideForKey(const QString& key, const QString& value);
67 
68  const QString& getPlaceName() { return _placeName; }
69  void setPlaceName(const QString& placeName) { _placeName = placeName; }
70 
71  bool wasAssigned() const { return _wasAssigned; }
72  void setWasAssigned(bool wasAssigned) { _wasAssigned = wasAssigned; }
73 
74  bool hasCheckedIn() const { return _hasCheckedIn; }
75  void setHasCheckedIn(bool hasCheckedIn) { _hasCheckedIn = hasCheckedIn; }
76 
77 private:
78  QJsonObject overrideValuesIfNeeded(const QJsonObject& newStats);
79  QJsonArray overrideValuesIfNeeded(const QJsonArray& newStats);
80 
81  QHash<QUuid, QUuid> _sessionSecretHash;
82  QUuid _assignmentUUID;
83  QString _username;
84  QElapsedTimer _paymentIntervalTimer;
85 
86  using StringPairHash = QHash<QPair<QString, QString>, QString>;
87  QJsonObject _statsJSONObject;
88  static StringPairHash _overrideHash;
89 
90  SockAddr _sendingSockAddr;
91  bool _isAuthenticated = true;
92  NodeSet _nodeInterestSet;
93  QString _nodeVersion;
94  QString _hardwareAddress;
95  QUuid _machineFingerprint;
96  quint64 _lastDomainCheckinTimestamp;
97  QString _placeName;
98 
99  bool _wasAssigned { false };
100 
101  bool _hasCheckedIn { false };
102 };
103 
104 #endif // hifi_DomainServerNodeData_h
NodeType.