crash_report_writer.h 866 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. // This file is part of Desktop App Toolkit,
  2. // a set of libraries for developing nice desktop applications.
  3. //
  4. // For license and copyright information please follow this link:
  5. // https://github.com/desktop-app/legal/blob/master/LEGAL
  6. //
  7. #pragma once
  8. #include "base/file_lock.h"
  9. namespace base {
  10. class CrashReportWriter final {
  11. public:
  12. CrashReportWriter(const QString &path);
  13. ~CrashReportWriter();
  14. void start();
  15. void addAnnotation(std::string key, std::string value);
  16. private:
  17. [[nodiscard]] QString reportPath() const;
  18. [[nodiscard]] std::optional<QByteArray> readPreviousReport();
  19. bool openReport();
  20. void closeReport();
  21. void startCatching();
  22. void finishCatching();
  23. const QString _path;
  24. FileLock _reportLock;
  25. QFile _reportFile;
  26. std::optional<QByteArray> _previousReport;
  27. std::map<std::string, std::string> _annotations;
  28. };
  29. } // namespace base