AusweisApp2
Lade ...
Suche ...
Keine Treffer
ReaderManager.h
gehe zur Dokumentation dieser Datei
1
5#pragma once
6
8#include "Env.h"
9#include "Reader.h"
10#include "ReaderFilter.h"
11#include "ReaderManagerWorker.h"
12
13#include <QMutex>
14#include <QPointer>
15#include <QThread>
16
17
18namespace governikus
19{
21 : public QObject
22 , private Env::ThreadSafe
23{
24 Q_OBJECT
25 friend class Env;
26
27 private:
28 mutable QMutex mMutex;
29 QThread mThread;
30 QPointer<ReaderManagerWorker> mWorker;
31 QMap<QString, ReaderInfo> mReaderInfoCache;
32 QMap<ReaderManagerPlugInType, ReaderManagerPlugInInfo> mPlugInInfoCache;
33
34 protected:
36 ~ReaderManager() override;
37
38 public:
43 void init();
44
48 void reset(ReaderManagerPlugInType pType);
49
53 void startScanAll(bool pAutoConnect = true);
54
58 void startScan(ReaderManagerPlugInType pType, bool pAutoConnect = true);
59
63 void stopScanAll(const QString& pError = QString());
64
68 bool isScanRunning() const;
69
73 bool isScanRunning(ReaderManagerPlugInType pType) const;
74
80 void stopScan(ReaderManagerPlugInType pType, const QString& pError = QString());
81
82 QVector<ReaderManagerPlugInInfo> getPlugInInfos() const;
83 virtual QVector<ReaderInfo> getReaderInfos(const ReaderFilter& pFilter = ReaderFilter()) const;
84 ReaderInfo getReaderInfo(const QString& pReaderName) const;
85 void updateReaderInfo(const QString& pReaderName);
86
93 template<typename T>
94 QMetaObject::Connection callCreateCardConnectionCommand(const QString& pReaderName, const typename QtPrivate::FunctionPointer<T>::Object* pReceiver, T pSlot)
95 {
96 auto* command = new CreateCardConnectionCommand(pReaderName, mWorker);
97 QMetaObject::Connection connection = connect(command, &CreateCardConnectionCommand::fireCommandDone, pReceiver, pSlot, Qt::UniqueConnection);
98 if (connection)
99 {
100 command->run();
101 }
102 else
103 {
104 qCCritical(card) << "Cannot invoke CreateCardConnectionCommand command";
105 command->deleteLater();
106 }
107
108 return connection;
109 }
110
111
112 void updateRetryCounters();
113
114 Q_SIGNALS:
115 void firePluginAdded(const ReaderManagerPlugInInfo& pInfo);
116 void fireStatusChanged(const ReaderManagerPlugInInfo& pInfo);
117 void fireReaderAdded(const ReaderInfo& pInfo);
118 void fireReaderRemoved(const ReaderInfo& pInfo);
120 void fireCardInserted(const ReaderInfo& pInfo);
121 void fireCardRemoved(const ReaderInfo& pInfo);
125
126 private Q_SLOTS:
127 void doUpdateCacheEntry(const ReaderInfo& pInfo);
128 void doRemoveCacheEntry(const ReaderInfo& pInfo);
129 void doFullUpdateCache(const ReaderManagerPlugInInfo& pInfo);
130
131 public Q_SLOTS:
136 void shutdown();
137};
138
139} // namespace governikus
Definition: CreateCardConnectionCommand.h:24
void fireCommandDone(QSharedPointer< CreateCardConnectionCommand > pCommand)
Definition: Env.h:44
Definition: ReaderFilter.h:21
Definition: ReaderInfo.h:17
Definition: ReaderManager.h:23
void fireCardRemoved(const ReaderInfo &pInfo)
void fireCardInserted(const ReaderInfo &pInfo)
void firePluginAdded(const ReaderManagerPlugInInfo &pInfo)
void startScan(ReaderManagerPlugInType pType, bool pAutoConnect=true)
Starts a scan for devices if registered plugin don't scan anytime.
Definition: ReaderManager.cpp:125
ReaderInfo getReaderInfo(const QString &pReaderName) const
Definition: ReaderManager.cpp:280
void updateReaderInfo(const QString &pReaderName)
Definition: ReaderManager.cpp:290
void startScanAll(bool pAutoConnect=true)
Starts a scan for all device types.
Definition: ReaderManager.cpp:142
QMetaObject::Connection callCreateCardConnectionCommand(const QString &pReaderName, const typename QtPrivate::FunctionPointer< T >::Object *pReceiver, T pSlot)
Executes a command to create a CardConnection for a specified reader.
Definition: ReaderManager.h:94
void fireReaderPropertiesUpdated(const ReaderInfo &pInfo)
void fireReaderAdded(const ReaderInfo &pInfo)
void updateRetryCounters()
Definition: ReaderManager.cpp:299
void shutdown()
Shuts down the reader manager service.
Definition: ReaderManager.cpp:104
void init()
Initialize the reader manager service.
Definition: ReaderManager.cpp:39
void fireReaderRemoved(const ReaderInfo &pInfo)
void fireStatusChanged(const ReaderManagerPlugInInfo &pInfo)
void stopScan(ReaderManagerPlugInType pType, const QString &pError=QString())
Stops started scan for devices.
Definition: ReaderManager.cpp:151
void fireCardRetryCounterChanged(const ReaderInfo &pInfo)
virtual QVector< ReaderInfo > getReaderInfos(const ReaderFilter &pFilter=ReaderFilter()) const
Definition: ReaderManager.cpp:265
void reset(ReaderManagerPlugInType pType)
Resets the plugins matching the given type.
Definition: ReaderManager.cpp:87
bool isScanRunning() const
Queries if any plugin is currently scanning.
Definition: ReaderManager.cpp:177
void stopScanAll(const QString &pError=QString())
Stops scan for all device types.
Definition: ReaderManager.cpp:168
QVector< ReaderManagerPlugInInfo > getPlugInInfos() const
Definition: ReaderManager.cpp:205
ReaderManager()
Definition: ReaderManager.cpp:14
~ReaderManager() override
Definition: ReaderManager.cpp:24
#define T(v)
Definition: http_parser.cpp:237
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
Definition: Env.h:46