13 #ifndef hifi_AssignmentClientMonitor_h
14 #define hifi_AssignmentClientMonitor_h
16 #include <QtCore/QCoreApplication>
17 #include <QtCore/qpointer.h>
18 #include <QtCore/QProcess>
19 #include <QtCore/QDateTime>
20 #include <QtCore/QSharedPointer>
23 #include <Assignment.h>
25 #include "AssignmentClientChildData.h"
26 #include <HTTPManager.h>
27 #include <HTTPConnection.h>
29 extern const char* NUM_FORKS_PARAMETER;
33 QString logStdoutPath;
34 QString logStderrPath;
37 class AssignmentClientMonitor :
public QObject,
public HTTPRequestHandler {
40 AssignmentClientMonitor(
const unsigned int numAssignmentClientForks,
const unsigned int minAssignmentClientForks,
41 const unsigned int maxAssignmentClientForks, Assignment::Type requestAssignmentType,
42 QString assignmentPool, quint16 listenPort, quint16 childMinListenPort,
43 QString assignmentServerHostname, quint16 assignmentServerPort, quint16 httpStatusServerPort,
44 QString logDirectory,
bool disableDomainPortAutoDiscovery);
45 ~AssignmentClientMonitor();
47 void stopChildProcesses();
50 void childProcessFinished(qint64 pid, quint16 port,
int exitCode, QProcess::ExitStatus exitStatus);
51 void handleChildStatusPacket(QSharedPointer<ReceivedMessage> message);
53 bool handleHTTPRequest(
HTTPConnection* connection,
const QUrl& url,
bool skipSubHandler =
false)
override;
59 void spawnChildClient();
60 void simultaneousWaitOnChildren(
int waitMsecs);
61 void adjustOSResources(
unsigned int numForks)
const;
63 QTimer _checkSparesTimer;
69 const unsigned int _numAssignmentClientForks;
70 const unsigned int _minAssignmentClientForks;
71 const unsigned int _maxAssignmentClientForks;
73 Assignment::Type _requestAssignmentType;
74 QString _assignmentPool;
75 QString _assignmentServerHostname;
76 quint16 _assignmentServerPort;
78 QMap<qint64, ACProcess> _childProcesses;
80 quint16 _childMinListenPort;
81 QSet<quint16> _childListenPorts;
83 bool _wantsChildFileLogging {
false };
84 bool _disableDomainPortAutoDiscovery {
false };
Handles a single HTTP connection.
Definition: HTTPConnection.h:43
Handles HTTP connections.
Definition: HTTPManager.h:32