AusweisApp2
Lade ...
Suche ...
Keine Treffer
SignalHandler.h
gehe zur Dokumentation dieser Datei
1
5/*
6 * \brief Implements signal handler for unix and windows.
7 */
8
9#pragma once
10
11#include "Env.h"
12
13#include <QObject>
14#include <functional>
15
16#if defined(Q_OS_UNIX) && !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS)
17 #include <QSocketNotifier>
18 #include <csignal>
19#elif defined(Q_OS_WIN)
20 #include <QReadWriteLock>
21 #include <windows.h>
22#endif
23
24namespace governikus
25{
26
28 : public QObject
29 , private Env::ThreadSafe
30{
31 Q_OBJECT
32
33 Q_DISABLE_COPY(SignalHandler)
34 friend class Env;
35
36 private:
37 bool mInit;
38 std::function<void()> mController;
39
40#ifdef Q_OS_WIN
41 SERVICE_STATUS_HANDLE mServiceStatusHandle;
42 QReadWriteLock mLock;
43#endif
44
46 ~SignalHandler() override;
47
48#if defined(Q_OS_UNIX) && !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS)
49
50 private:
51 QScopedPointer<QSocketNotifier> mSignalSocketNotifier;
52 static int cSignalSocketPair[2];
53
54 void initUnix();
55 static void sigHandler(int pSignal);
56#elif defined(Q_OS_WIN)
57
58 private:
59 static BOOL WINAPI ctrlHandler(DWORD pCtrlType);
60 static VOID WINAPI serviceMain(DWORD pArgc, LPTSTR* pArgv);
61 static VOID WINAPI serviceCtrlHandler(DWORD pCtrlCode);
62 static void registerService();
63 void setServiceStatus(DWORD pCurrentState);
64#endif
65
66 private Q_SLOTS:
67 void onSignalSocketActivated();
68#if defined(Q_OS_WIN)
69 void quit();
70#else
71 void quit() const;
72#endif
73
74 public:
75 void init();
76 void setController(const std::function<void()>& pController);
77};
78
79} // namespace governikus
Definition: Env.h:46
Definition: SignalHandler.h:30
void setController(const std::function< void()> &pController)
Definition: SignalHandler.cpp:66
void init()
Definition: SignalHandler.cpp:46
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16
VOID
Definition: MsgTypes.h:21
Definition: Env.h:51