Guitar
TraceEventWriter.h
Go to the documentation of this file.
1 #ifndef TRACEEVENTWRITER_H
2 #define TRACEEVENTWRITER_H
3 
4 #include <chrono>
5 #include <QFile>
6 #include <mutex>
7 #include <thread>
8 #include <condition_variable>
9 #include <deque>
10 #include <memory>
11 
13 public:
14  struct Event {
15  std::string name;
16  std::string category;
17  char phase = 0;
18  uint64_t timestamp;
19  int64_t duration = 0; // only for complete events
20  int32_t pid;
21  int32_t tid;
22  std::string args_comment;
23  };
24  enum Phase {
25  PHASE_BEGIN = 'B',
26  PHASE_END = 'E',
29  };
30 private:
31  std::mutex mutex_;
32  std::thread thread_;
33  std::condition_variable cv_;
34  bool interrupted_ = false;
35  std::deque<std::shared_ptr<Event>> queue_;
36  QFile file_;
37  std::chrono::steady_clock::time_point start_time_;
38  uint64_t ts();
39  std::string escape(std::string const &s);
40  void write(Event const &item, bool comma);
41 public:
44  void open(const QString &dir);
45  void close();
46  void put(Event event);
47 };
48 
49 #endif // TRACEEVENTWRITER_H
Definition: TraceEventWriter.h:12
std::mutex mutex_
Definition: TraceEventWriter.h:31
std::deque< std::shared_ptr< Event > > queue_
Definition: TraceEventWriter.h:35
std::chrono::steady_clock::time_point start_time_
Definition: TraceEventWriter.h:37
Phase
Definition: TraceEventWriter.h:24
@ PHASE_BEGIN
Definition: TraceEventWriter.h:25
@ PHASE_COMPLETE
Definition: TraceEventWriter.h:28
@ PHASE_END
Definition: TraceEventWriter.h:26
@ PHASE_COUNTER
Definition: TraceEventWriter.h:27
void write(Event const &item, bool comma)
Definition: TraceEventWriter.cpp:36
uint64_t ts()
Definition: TraceEventWriter.cpp:24
void put(Event event)
Definition: TraceEventWriter.cpp:155
std::thread thread_
Definition: TraceEventWriter.h:32
TraceEventWriter()
Definition: TraceEventWriter.cpp:70
std::condition_variable cv_
Definition: TraceEventWriter.h:33
QFile file_
Definition: TraceEventWriter.h:36
void close()
Definition: TraceEventWriter.cpp:124
std::string escape(std::string const &s)
Definition: TraceEventWriter.cpp:30
~TraceEventWriter()
Definition: TraceEventWriter.cpp:75
bool interrupted_
Definition: TraceEventWriter.h:34
void open(const QString &dir)
Definition: TraceEventWriter.cpp:80
Definition: TraceEventWriter.h:14
std::string category
Definition: TraceEventWriter.h:16
int32_t tid
Definition: TraceEventWriter.h:21
std::string name
Definition: TraceEventWriter.h:15
std::string args_comment
Definition: TraceEventWriter.h:22
char phase
Definition: TraceEventWriter.h:17
int32_t pid
Definition: TraceEventWriter.h:20
int64_t duration
Definition: TraceEventWriter.h:19
uint64_t timestamp
Definition: TraceEventWriter.h:18