-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProcessReader.cpp
82 lines (40 loc) · 1.44 KB
/
ProcessReader.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// ProcessReader.cpp
// Implements the ProcessReader class representing a helper class used for reading process stdout and stderr
#include "ProcessReader.h"
ProcessReader::ProcessReader(QProcess & a_Process, QByteArray & a_StdOut, QByteArray & a_StdErr):
Super(nullptr),
m_Process(a_Process),
m_StdOut(a_StdOut),
m_StdErr(a_StdErr),
m_HasTerminated(false),
m_HasHadError(false)
{
connect(&a_Process, SIGNAL(readyReadStandardOutput()), this, SLOT(onProcessStdOutReady()));
connect(&a_Process, SIGNAL(readyReadStandardError()), this, SLOT(onProcessStdErrReady()));
connect(&a_Process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(onProcessFinished(int,QProcess::ExitStatus)));
connect(&a_Process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(onError(QProcess::ProcessError)));
}
bool ProcessReader::waitForFinished(int a_TimeoutMsec)
{
return m_Process.waitForFinished(a_TimeoutMsec);
}
void ProcessReader::onProcessStdOutReady()
{
m_StdOut.append(m_Process.readAllStandardOutput());
}
void ProcessReader::onProcessStdErrReady()
{
m_StdErr.append(m_Process.readAllStandardError());
}
void ProcessReader::onProcessFinished(int a_ExitCode, QProcess::ExitStatus a_ExitStatus)
{
Q_UNUSED(a_ExitCode);
Q_UNUSED(a_ExitStatus);
m_HasTerminated = true;
}
void ProcessReader::onError(QProcess::ProcessError a_Error)
{
Q_UNUSED(a_Error);
m_HasTerminated = true;
m_HasHadError = true;
}