Repo-Init
 
Loading...
Searching...
No Matches
Tracer.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "client/crashpad_client.h"
4
5#include <thread>
6
10class Tracer {
11 private:
12 std::shared_ptr<std::atomic_flag> _checkFlag;
13
14 std::string _serverPath;
15 std::string _serverProxy;
16 std::string _handlerPath;
17 std::map<std::string, std::string> _annotations;
18 std::vector<base::FilePath> _attachments;
19 std::string _reportPath;
20 std::unique_ptr<crashpad::CrashpadClient> _clientHandler;
21
22 std::unique_ptr<std::jthread> _thread;
23
27 void startHandler();
28
33 void threadFunc(const std::stop_token &stopToken) const noexcept;
34
40 static bool checkPidIsRunning(pid_t processId);
41
47 static bool checkSocketIsRunning(int sockId);
48
53 static inline std::string getSelfExecutableDir();
54
59 static void dumpSharedLibraryInfo(const std::string &filePath);
60
61 public:
71 explicit Tracer(std::shared_ptr<std::atomic_flag> checkFlag, std::string serverPath = "",
72 std::string serverProxy = "", const std::string &crashpadHandlerPath = "",
73 const std::string &reportPath = "", std::vector<base::FilePath> attachments = {});
74
76 Tracer(const Tracer & /*unused*/) = delete;
77
79 Tracer(Tracer && /*unused*/) = delete;
80
82 Tracer &operator=(Tracer /*unused*/) = delete;
83
85 Tracer &operator=(Tracer && /*unused*/) = delete;
86
91
96 [[nodiscard]] static bool isRunning();
97};
static bool checkSocketIsRunning(int sockId)
Definition Tracer.cpp:90
Tracer & operator=(Tracer &&)=delete
Move assignment operator.
std::string _reportPath
Definition Tracer.hpp:19
Tracer & operator=(Tracer)=delete
Copy assignment operator.
static void dumpSharedLibraryInfo(const std::string &filePath)
Definition Tracer.cpp:131
Tracer(Tracer &&)=delete
Move constructor.
static bool isRunning()
Definition Tracer.cpp:110
Tracer(const Tracer &)=delete
Copy constructor.
void startHandler()
Definition Tracer.cpp:23
std::unique_ptr< crashpad::CrashpadClient > _clientHandler
Definition Tracer.hpp:20
std::string _serverPath
Definition Tracer.hpp:14
std::string _serverProxy
Definition Tracer.hpp:15
std::unique_ptr< std::jthread > _thread
Definition Tracer.hpp:22
std::vector< base::FilePath > _attachments
Definition Tracer.hpp:18
std::shared_ptr< std::atomic_flag > _checkFlag
Definition Tracer.hpp:12
static std::string getSelfExecutableDir()
Definition Tracer.cpp:100
std::map< std::string, std::string > _annotations
Definition Tracer.hpp:17
void threadFunc(const std::stop_token &stopToken) const noexcept
Definition Tracer.cpp:57
std::string _handlerPath
Definition Tracer.hpp:16
Tracer(std::shared_ptr< std::atomic_flag > checkFlag, std::string serverPath="", std::string serverProxy="", const std::string &crashpadHandlerPath="", const std::string &reportPath="", std::vector< base::FilePath > attachments={})
Definition Tracer.cpp:171
static bool checkPidIsRunning(pid_t processId)
Definition Tracer.cpp:88