Overte C++ Documentation
ThreadedAssignment.h
1 //
2 // ThreadedAssignment.h
3 // libraries/networking/src
4 //
5 // Created by Stephen Birarda on 12/3/2013.
6 // Copyright 2013 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_ThreadedAssignment_h
13 #define hifi_ThreadedAssignment_h
14 
15 #include <QtCore/QSharedPointer>
16 
17 #include "ReceivedMessage.h"
18 
19 #include "Assignment.h"
20 
21 class ThreadedAssignment : public Assignment {
22  Q_OBJECT
23 public:
24  ThreadedAssignment(ReceivedMessage& message);
25  ~ThreadedAssignment();
26 
27  virtual void aboutToFinish() { };
28  void addPacketStatsAndSendStatsPacket(QJsonObject statsObject);
29 
30 public slots:
32  virtual void run() = 0;
33 
34  Q_INVOKABLE virtual void stop() { setFinished(true); }
35 
36  virtual void sendStatsPacket();
37 
38  void clearQueuedCheckIns() { _numQueuedCheckIns = 0; }
39 
40 signals:
41  void finished();
42 
43 protected:
44  void commonInit(const QString& targetName, NodeType_t nodeType);
45  void setFinished(bool isFinished);
46 
47  bool _isFinished;
48  QTimer _domainServerTimer;
49  QTimer _statsTimer;
50  int _numQueuedCheckIns { 0 };
51 
52 protected slots:
53  void domainSettingsRequestFailed();
54 
55 private slots:
56  void checkInWithDomainServerOrExit();
57 };
58 
59 typedef QSharedPointer<ThreadedAssignment> SharedAssignmentPointer;
60 
61 #endif // hifi_ThreadedAssignment_h
quint8 NodeType_t
An 8-bit value identifying the type of a node - domain server, audio mixer, etc.
Definition: NodeType.h:22
Holds information used for request, creation, and deployment of assignments.
Definition: Assignment.h:28