History

pass -t to children even if run in parent mode. monitor (parent) only interacts with its own children

Seth Alves committed 11 years ago

Commit 8affca61 parent b1189126 files · +42 −16Browse files

Showing the changes to assignment-client/src/AssignmentClientMonitor.cpp (1 of 6 files). Show all

Unified · Split

assignment-client/src/AssignmentClientMonitor.cpp+18−4
@@ -20,23 +20,26 @@ · 19 unmodified lines
2020 #include "PacketHeaders.h"
2121 #include "SharedUtil.h"
2222
23−const char* NUM_FORKS_PARAMETER = "-n";
2423
2524 const QString ASSIGNMENT_CLIENT_MONITOR_TARGET_NAME = "assignment-client-monitor";
2625
2726 AssignmentClientMonitor::AssignmentClientMonitor(const unsigned int numAssignmentClientForks,
2827 const unsigned int minAssignmentClientForks,
2928 const unsigned int maxAssignmentClientForks,
30− QString assignmentPool, QUuid walletUUID, QString assignmentServerHostname,
29+ Assignment::Type requestAssignmentType, QString assignmentPool,
30+ QUuid walletUUID, QString assignmentServerHostname,
3131 quint16 assignmentServerPort) :
3232 _numAssignmentClientForks(numAssignmentClientForks),
3333 _minAssignmentClientForks(minAssignmentClientForks),
3434 _maxAssignmentClientForks(maxAssignmentClientForks),
35+ _requestAssignmentType(requestAssignmentType),
3536 _assignmentPool(assignmentPool),
3637 _walletUUID(walletUUID),
3738 _assignmentServerHostname(assignmentServerHostname),
3839 _assignmentServerPort(assignmentServerPort)
3940 {
41+ qDebug() << "_requestAssignmentType =" << _requestAssignmentType;
42+
4043 // start the Logging class with the parent's target name
4144 LogHandler::getInstance().setTargetName(ASSIGNMENT_CLIENT_MONITOR_TARGET_NAME);
4245
@@ -47,8 +50,10 @@ AssignmentClientMonitor::AssignmentClientMonitor(const unsigned int numAssignmen · 4 unmodified lines
4750
4851 connect(&nodeList->getNodeSocket(), &QUdpSocket::readyRead, this, &AssignmentClientMonitor::readPendingDatagrams);
4952
50− nodeList->putLocalPortIntoSharedMemory(ASSIGNMENT_CLIENT_MONITOR_LOCAL_PORT_SMEM_KEY, this,
51− nodeList->getNodeSocket().localPort());
53+ qint64 pid = QCoreApplication::applicationPid ();
54+
55+ nodeList->putLocalPortIntoSharedMemory(QString(ASSIGNMENT_CLIENT_MONITOR_LOCAL_PORT_SMEM_KEY) + "-" + QString::number(pid),
56+ this, nodeList->getNodeSocket().localPort());
5257
5358 // use QProcess to fork off a process for each of the child assignment clients
5459 for (unsigned int i = 0; i < _numAssignmentClientForks; i++) {
@@ -96,6 +101,15 @@ void AssignmentClientMonitor::spawnChildClient() { · 41 unmodified lines
96101 _childArguments.append("--" + CUSTOM_ASSIGNMENT_SERVER_PORT_OPTION);
97102 _childArguments.append(QString::number(_assignmentServerPort));
98103 }
104+ if (_requestAssignmentType != Assignment::AllTypes) {
105+ _childArguments.append("--" + ASSIGNMENT_TYPE_OVERRIDE_OPTION);
106+ _childArguments.append(QString::number(_requestAssignmentType));
107+ }
108+
109+ // tell children which shared memory key to use
110+ qint64 pid = QCoreApplication::applicationPid ();
111+ _childArguments.append("--" + PARENT_PID_OPTION);
112+ _childArguments.append(QString::number(pid));
99113
100114 // make sure that the output from the child process appears in our output
101115 assignmentClient->setProcessChannelMode(QProcess::ForwardedChannels);