Guitar
TraceEventWriter.h
Go to the documentation of this file.
1 
2 #ifndef TRACEEVENTWRITER_H
3 #define TRACEEVENTWRITER_H
4 
5 #include <QFile>
6 #include <chrono>
7 #include <condition_variable>
8 #include <deque>
9 #include <memory>
10 #include <mutex>
11 #include <thread>
12 
13 struct TraceEventItem;
14 
16 public:
17  enum Phase {
18  PHASE_BEGIN = 'B',
19  PHASE_END = 'E',
22  };
23 private:
24  std::mutex mutex_;
25  std::thread thread_;
26  std::condition_variable cv_;
27  bool interrupted_ = false;
28  std::deque<std::shared_ptr<TraceEventItem>> queue_;
29  QFile file_;
30  std::chrono::steady_clock::time_point start_time_;
31  uint64_t ts();
32  std::string escape(std::string const &s);
33  void write(TraceEventItem const &item, bool comma);
34 public:
37  void open(const QString &dir);
38  void close();
39  void put(const TraceEventItem &event);
40 };
41 
42 #endif // TRACEEVENTWRITER_H
Definition: TraceEventWriter.h:15
std::mutex mutex_
Definition: TraceEventWriter.h:24
std::chrono::steady_clock::time_point start_time_
Definition: TraceEventWriter.h:30
Phase
Definition: TraceEventWriter.h:17
@ PHASE_BEGIN
Definition: TraceEventWriter.h:18
@ PHASE_COMPLETE
Definition: TraceEventWriter.h:21
@ PHASE_END
Definition: TraceEventWriter.h:19
@ PHASE_COUNTER
Definition: TraceEventWriter.h:20
std::deque< std::shared_ptr< TraceEventItem > > queue_
Definition: TraceEventWriter.h:28
uint64_t ts()
Definition: TraceEventWriter.cpp:24
std::thread thread_
Definition: TraceEventWriter.h:25
TraceEventWriter()
Definition: TraceEventWriter.cpp:70
std::condition_variable cv_
Definition: TraceEventWriter.h:26
void put(const TraceEventItem &event)
Definition: TraceEventWriter.cpp:155
QFile file_
Definition: TraceEventWriter.h:29
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:27
void write(TraceEventItem const &item, bool comma)
Definition: TraceEventWriter.cpp:36
void open(const QString &dir)
Definition: TraceEventWriter.cpp:80
Definition: TraceEventItem.h:7