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