AusweisApp2
SignalHandler.h
gehe zur Dokumentation dieser Datei
1 /*
2  * \brief Implements signal handler for unix and windows.
3  *
4  * \copyright Copyright (c) 2014-2022 Governikus GmbH & Co. KG, Germany
5  */
6 
7 #pragma once
8 
9 #include <QObject>
10 #include <functional>
11 
12 #if defined(Q_OS_UNIX) && !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS)
13  #include <QSocketNotifier>
14  #include <csignal>
15 #elif defined(Q_OS_WIN)
16  #include <windows.h>
17 #endif
18 
19 namespace governikus
20 {
21 
23  : public QObject
24 {
25  Q_OBJECT
26 
27  Q_DISABLE_COPY(SignalHandler)
28  friend class Env;
29 
30  private:
31  bool mInit;
32  std::function<void()> mController;
33  bool mQuit;
34 
35  SignalHandler();
36  ~SignalHandler() override;
37  void quit();
38 
39 #if defined(Q_OS_UNIX) && !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS)
40 
41  private:
42  QScopedPointer<QSocketNotifier> mSignalSocketNotifier;
43  static int cSignalSocketPair[2];
44 
45  void initUnix();
46  static void sigHandler(int pSignal);
47 #elif defined(Q_OS_WIN)
48 
49  private:
50  static BOOL WINAPI ctrlHandler(DWORD pCtrlType);
51 #endif
52 
53  private Q_SLOTS:
54  void onSignalSocketActivated();
55 
56  public:
57  void init();
58  void setController(const std::function<void()>& pController);
59  [[nodiscard]] bool shouldQuit() const;
60 };
61 
62 } // namespace governikus
Definition: Env.h:44
Definition: SignalHandler.h:24
void setController(const std::function< void()> &pController)
Definition: SignalHandler.cpp:52
void init()
Definition: SignalHandler.cpp:37
bool shouldQuit() const
Definition: SignalHandler.cpp:73
A simple template renderer.
Definition: ActivationContext.h:15