QtPass 1.6.0
Multi-platform GUI for pass, the standard unix password manager.
Loading...
Searching...
No Matches
executor.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2016 Anne Jan Brouwer
2// SPDX-License-Identifier: GPL-3.0-or-later
3#ifndef SRC_EXECUTOR_H_
4#define SRC_EXECUTOR_H_
5
6#include <QObject>
7#include <QProcess>
8#include <QQueue>
9
17
24
28
32
36
40
44
50
54
63
67
76class Executor : public QObject {
77 Q_OBJECT
78
83 struct execQueueItem {
87 int id;
91 QString app;
95 QStringList args;
99 QString input;
103 bool readStdout;
109 bool readStderr;
114 QString workingDir;
115 };
116
117 QQueue<execQueueItem> m_execQueue;
118 QProcess m_process;
119 bool running;
120 void executeNext();
121 void startProcess(const QString &app, const QStringList &args);
122 static void startProcessBlocking(QProcess &internal, const QString &app,
123 const QStringList &args);
124
125public:
126 explicit Executor(QObject *parent = nullptr);
127
128 void execute(int id, const QString &app, const QStringList &args,
129 bool readStdout, bool readStderr = true);
130
131 void execute(int id, const QString &workDir, const QString &app,
132 const QStringList &args, bool readStdout,
133 bool readStderr = true);
134
135 void execute(int id, const QString &app, const QStringList &args,
136 QString input = QString(), bool readStdout = false,
137 bool readStderr = true);
138
139 void execute(int id, const QString &workDir, const QString &app,
140 const QStringList &args, QString input = QString(),
141 bool readStdout = false, bool readStderr = true);
142
143 static auto executeBlocking(QString app, const QStringList &args,
144 const QString &input = QString(),
145 QString *process_out = nullptr,
146 QString *process_err = nullptr) -> int;
147
148 static auto executeBlocking(QString app, const QStringList &args,
149 QString *process_out,
150 QString *process_err = nullptr) -> int;
151
152 static auto executeBlocking(const QStringList &env, QString app,
153 const QStringList &args,
154 QString *process_out = nullptr,
155 QString *process_err = nullptr) -> int;
156
157 void setEnvironment(const QStringList &env);
158
159 auto cancelNext() -> int;
160private slots:
161 void finished(int exitCode, QProcess::ExitStatus exitStatus);
162signals:
171 void finished(int id, int exitCode, const QString &output,
172 const QString &errout);
176 void starting();
186 void error(int id, int exitCode, const QString &output,
187 const QString &errout);
188};
189
190#endif // SRC_EXECUTOR_H_
static auto executeBlocking(QString app, const QStringList &args, const QString &input=QString(), QString *process_out=nullptr, QString *process_err=nullptr) -> int
Executor::executeBlocking blocking version of the executor, takes input and presents it as stdin.
Definition executor.cpp:223
void execute(int id, const QString &app, const QStringList &args, bool readStdout, bool readStderr=true)
Executor::execute execute an app.
Definition executor.cpp:111
void error(int id, int exitCode, const QString &output, const QString &errout)
error signal that is emited when process finishes with an error
Executor(QObject *parent=nullptr)
Executor::Executor executes external applications.
Definition executor.cpp:22
void setEnvironment(const QStringList &env)
Executor::setEnvironment set environment variables for executor processes.
Definition executor.cpp:321
void finished(int id, int exitCode, const QString &output, const QString &errout)
finished signal that is emited when process finishes
void starting()
starting signal that is emited when process starts
auto cancelNext() -> int
Executor::cancelNext cancels execution of first process in queue if it's not already running.
Definition executor.cpp:331