JS8Call-Improved master
Loading...
Searching...
No Matches
Decoder.h
1#ifndef DECODER_H
2#define DECODER_H
3
7
8#include "JS8_Main/ProcessThread.h"
9
10#include <QByteArray>
11#include <QLoggingCategory>
12#include <QPointer>
13#include <QProcess>
14
15class Worker : public QObject {
16 Q_OBJECT
17 public:
18 ~Worker();
19 public slots:
20 void start(QString path, QStringList args);
21 void quit();
22
23 QProcess *process() const { return m_proc.data(); }
24
25 private:
26 void setProcess(QProcess *proc, int msecs = 1000);
27
28 signals:
29 void ready(QByteArray t);
30 void error(int errorCode, QString errorString);
31 void finished(int exitCode, int statusCode, QString errorString);
32
33 private:
34 QScopedPointer<QProcess> m_proc;
35};
36
37class Decoder : public QObject {
38 Q_OBJECT
39 public:
40 Decoder(QObject *parent = nullptr);
41 ~Decoder();
42
43 void lock();
44 void unlock();
45
46 QString program() const {
47 if (!m_worker.isNull() && m_worker->process() != nullptr) {
48 return m_worker->process()->program();
49 }
50 return {};
51 }
52
53 QStringList arguments() const {
54 if (!m_worker.isNull() && m_worker->process() != nullptr) {
55 return m_worker->process()->arguments();
56 }
57 return {};
58 }
59
60 private:
61 Worker *createWorker();
62
63 public slots:
64 void start(QThread::Priority priority);
65 void quit();
66 bool wait();
67
68 void processStart(QString path, QStringList args);
69 void processReady(QByteArray t);
70 void processQuit();
71
72 void processError(int errorCode, QString errorString);
73 void processFinished(int exitCode, int statusCode, QString errorString);
74
75 signals:
76 void startWorker(QString path, QStringList args);
77 void quitWorker();
78
79 void ready(QByteArray t);
80 void error(int errorCode, QString errorString);
81 void finished(int exitCode, int statusCode, QString errorString);
82
83 private:
84 QPointer<Worker> m_worker;
85 QThread m_thread;
86};
87
88Q_DECLARE_LOGGING_CATEGORY(decoder_js8)
89
90#endif // DECODER_H
Definition Decoder.h:15