]> git.cworth.org Git - apitrace/blob - gui/retracer.h
Replay and parse json in a thread.
[apitrace] / gui / retracer.h
1 #ifndef RETRACER_H
2 #define RETRACER_H
3
4 #include <QThread>
5 #include <QProcess>
6
7 class ApiTraceState;
8 namespace QJson {
9     class Parser;
10 }
11
12 /* internal class used by the retracer to run
13  * in the thread */
14 class RetraceProcess : public QObject
15 {
16     Q_OBJECT
17 public:
18     RetraceProcess(QObject *parent=0);
19     ~RetraceProcess();
20
21     QProcess *process() const;
22
23     QString fileName() const;
24     void setFileName(const QString &name);
25
26     bool isBenchmarking() const;
27     void setBenchmarking(bool bench);
28
29     bool isDoubleBuffered() const;
30     void setDoubleBuffered(bool db);
31
32     void setCaptureAtCallNumber(qlonglong num);
33     qlonglong captureAtCallNumber() const;
34
35     bool captureState() const;
36     void setCaptureState(bool enable);
37
38 public slots:
39     void start();
40     void terminate();
41
42 signals:
43     void finished(const QString &output);
44     void error(const QString &msg);
45     void foundState(const ApiTraceState &state);
46
47 private slots:
48     void replayFinished();
49     void replayError(QProcess::ProcessError err);
50
51 private:
52     QString m_fileName;
53     bool m_benchmarking;
54     bool m_doubleBuffered;
55     bool m_captureState;
56     qlonglong m_captureCall;
57
58     QProcess *m_process;
59     QJson::Parser *m_jsonParser;
60 };
61
62 class Retracer : public QThread
63 {
64     Q_OBJECT
65 public:
66     Retracer(QObject *parent=0);
67
68     QString fileName() const;
69     void setFileName(const QString &name);
70
71     bool isBenchmarking() const;
72     void setBenchmarking(bool bench);
73
74     bool isDoubleBuffered() const;
75     void setDoubleBuffered(bool db);
76
77     void setCaptureAtCallNumber(qlonglong num);
78     qlonglong captureAtCallNumber() const;
79
80     bool captureState() const;
81     void setCaptureState(bool enable);
82
83 signals:
84     void finished(const QString &output);
85     void foundState(const ApiTraceState &state);
86     void error(const QString &msg);
87
88 protected:
89     virtual void run();
90
91 private slots:
92     void cleanup();
93 private:
94     QString m_fileName;
95     bool m_benchmarking;
96     bool m_doubleBuffered;
97     bool m_captureState;
98     qlonglong m_captureCall;
99
100     QProcessEnvironment m_processEnvironment;
101 };
102
103 #endif