AusweisApp2
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 
18 namespace 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:
35  ReaderManager();
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
governikus::CreateCardConnectionCommand
Definition: CreateCardConnectionCommand.h:24
governikus::ReaderManager::firePluginAdded
void firePluginAdded(const ReaderManagerPlugInInfo &pInfo)
governikus::ReaderManager::fireCardInserted
void fireCardInserted(const ReaderInfo &pInfo)
ReaderManager.h
governikus::ReaderManager::getReaderInfo
ReaderInfo getReaderInfo(const QString &pReaderName) const
Definition: ReaderManager.cpp:280
governikus::ReaderManager::shutdown
void shutdown()
Shuts down the reader manager service.
Definition: ReaderManager.cpp:104
governikus::ReaderManagerWorker::fireCardInserted
void fireCardInserted(const ReaderInfo &pInfo)
governikus::ReaderInfo
Definition: ReaderInfo.h:17
governikus::ReaderManagerWorker::updateRetryCounters
Q_INVOKABLE void updateRetryCounters()
Definition: ReaderManagerWorker.cpp:255
governikus::ReaderManager::~ReaderManager
~ReaderManager() override
Definition: ReaderManager.cpp:24
governikus::ReaderFilter::apply
QVector< ReaderInfo > apply(const QVector< ReaderInfo > &pInputList) const
Definition: ReaderFilter.cpp:39
governikus::ReaderManagerWorker::fireInitialized
void fireInitialized()
governikus::ReaderManager::getReaderInfos
virtual QVector< ReaderInfo > getReaderInfos(const ReaderFilter &pFilter=ReaderFilter()) const
Definition: ReaderManager.cpp:265
governikus::ReaderManager::fireReaderEvent
void fireReaderEvent()
CreateCardConnectionCommand.h
governikus::ReaderManager::init
void init()
Initialize the reader manager service.
Definition: ReaderManager.cpp:39
ReaderFilter.h
governikus::ReaderManager::fireReaderRemoved
void fireReaderRemoved(const ReaderInfo &pInfo)
governikus::Env
Definition: Env.h:44
governikus::ReaderManager::getPlugInInfos
QVector< ReaderManagerPlugInInfo > getPlugInInfos() const
Definition: ReaderManager.cpp:205
governikus::ReaderManager::updateReaderInfo
void updateReaderInfo(const QString &pReaderName)
Definition: ReaderManager.cpp:290
governikus::ReaderManagerWorker::fireReaderPropertiesUpdated
void fireReaderPropertiesUpdated(const ReaderInfo &pInfo)
governikus::ReaderManager::updateRetryCounters
void updateRetryCounters()
Definition: ReaderManager.cpp:299
governikus::ReaderManagerWorker::fireReaderAdded
void fireReaderAdded(const ReaderInfo &pInfo)
governikus::ReaderManager::startScan
void startScan(ReaderManagerPlugInType pType, bool pAutoConnect=true)
Starts a scan for devices if registered plugin don't scan anytime.
Definition: ReaderManager.cpp:125
governikus::ReaderManager::fireCardRemoved
void fireCardRemoved(const ReaderInfo &pInfo)
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
governikus::ReaderManager::startScanAll
void startScanAll(bool pAutoConnect=true)
Starts a scan for all device types.
Definition: ReaderManager.cpp:142
governikus::ReaderManagerWorker::shutdown
Q_INVOKABLE void shutdown()
Definition: ReaderManagerWorker.cpp:37
governikus::ReaderManagerWorker::fireStatusChanged
void fireStatusChanged(const ReaderManagerPlugInInfo &pInfo)
governikus::ReaderManager::isScanRunning
bool isScanRunning() const
Queries if any plugin is currently scanning.
Definition: ReaderManager.cpp:177
governikus::ReaderManager::fireCardRetryCounterChanged
void fireCardRetryCounterChanged(const ReaderInfo &pInfo)
Env.h
governikus::ReaderManager::stopScan
void stopScan(ReaderManagerPlugInType pType, const QString &pError=QString())
Stops started scan for devices.
Definition: ReaderManager.cpp:151
governikus::Env::ThreadSafe
Definition: Env.h:46
governikus::ReaderManagerWorker::firePluginAdded
void firePluginAdded(const ReaderManagerPlugInInfo &pInfo)
governikus::ReaderManagerWorker
Definition: ReaderManagerWorker.h:20
governikus::ReaderManager::fireInitialized
void fireInitialized()
governikus::ReaderManager::ReaderManager
ReaderManager()
Definition: ReaderManager.cpp:14
governikus::ReaderManagerWorker::fireCardRemoved
void fireCardRemoved(const ReaderInfo &pInfo)
governikus::ReaderManager::reset
void reset(ReaderManagerPlugInType pType)
Resets the plugins matching the given type.
Definition: ReaderManager.cpp:87
governikus::ReaderInfo::getName
const QString & getName() const
Definition: ReaderInfo.h:107
governikus::ReaderManagerWorker::fireReaderRemoved
void fireReaderRemoved(const ReaderInfo &pInfo)
governikus::ReaderFilter
Definition: ReaderFilter.h:21
T
#define T(v)
Definition: http_parser.cpp:237
governikus::ReaderManager::fireStatusChanged
void fireStatusChanged(const ReaderManagerPlugInInfo &pInfo)
governikus::ReaderManager
Definition: ReaderManager.h:23
governikus::ReaderManager::fireReaderAdded
void fireReaderAdded(const ReaderInfo &pInfo)
Reader.h
governikus::ReaderManagerWorker::fireCardRetryCounterChanged
void fireCardRetryCounterChanged(const ReaderInfo &pInfo)
governikus::ReaderManagerWorker::onThreadStarted
void onThreadStarted()
Definition: ReaderManagerWorker.cpp:55
governikus::ReaderManagerWorker::isScanRunning
Q_INVOKABLE bool isScanRunning() const
Definition: ReaderManagerWorker.cpp:160
governikus::ReaderManager::callCreateCardConnectionCommand
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
governikus::ReaderManager::fireReaderPropertiesUpdated
void fireReaderPropertiesUpdated(const ReaderInfo &pInfo)
governikus::ReaderManager::stopScanAll
void stopScanAll(const QString &pError=QString())
Stops scan for all device types.
Definition: ReaderManager.cpp:168
governikus::CreateCardConnectionCommand::fireCommandDone
void fireCommandDone(QSharedPointer< CreateCardConnectionCommand > pCommand)
ReaderManagerWorker.h