AusweisApp2
ReaderManager.h
gehe zur Dokumentation dieser Datei
1 
5 #pragma once
6 
8 #include "Env.h"
9 #include "Reader.h"
10 #include "ReaderManagerWorker.h"
11 
12 #include <QMutex>
13 #include <QPointer>
14 #include <QThread>
15 
16 
17 namespace governikus
18 {
20  : public QObject
21  , private Env::ThreadSafe
22 {
23  Q_OBJECT
24  friend class Env;
25 
26  private:
27  mutable QMutex mMutex;
28  QThread mThread;
29  QPointer<ReaderManagerWorker> mWorker;
30 
31  protected:
34  static ReaderManager& getInstance();
35 
36  public:
41  void init();
42 
46  void startScanAll(bool pAutoConnect = true);
47 
51  void startScan(ReaderManagerPlugInType pType, bool pAutoConnect = true);
52 
56  void stopScanAll();
57 
61  bool isScanRunning() const;
62 
66  bool isScanRunning(ReaderManagerPlugInType pType) const;
67 
73  void stopScan(ReaderManagerPlugInType pType, const QString& pError = QString());
74 
75  QVector<ReaderManagerPlugInInfo> getPlugInInfos() const;
76  QVector<ReaderInfo> getReaderInfos(ReaderManagerPlugInType pType) const;
77  virtual QVector<ReaderInfo> getReaderInfos(const ReaderFilter& pFilter = ReaderFilter()) const;
78  ReaderInfo getReaderInfo(const QString& pReaderName) const;
79  void updateReaderInfo(const QString& pReaderName);
80 
87  template<typename T>
88  QMetaObject::Connection callCreateCardConnectionCommand(const QString& pReaderName, const typename QtPrivate::FunctionPointer<T>::Object* pReceiver, T pSlot)
89  {
90  auto* command = new CreateCardConnectionCommand(pReaderName, mWorker);
91  QMetaObject::Connection connection = connect(command, &CreateCardConnectionCommand::fireCommandDone, pReceiver, pSlot, Qt::UniqueConnection);
92  if (connection)
93  {
94  command->run();
95  }
96  else
97  {
98  qCCritical(card) << "Cannot invoke CreateCardConnectionCommand command";
99  command->deleteLater();
100  }
101 
102  return connection;
103  }
104 
105 
106  void updateRetryCounters();
107 
108  Q_SIGNALS:
109  void firePluginAdded(const ReaderManagerPlugInInfo& pInfo);
110  void fireStatusChanged(const ReaderManagerPlugInInfo& pInfo);
111  void fireReaderAdded(const QString& pReaderName);
112  void fireReaderRemoved(const QString& pReaderName);
114  void fireReaderPropertiesUpdated(const QString& pReaderName);
115  void fireCardInserted(const QString& pReaderName);
116  void fireCardRemoved(const QString& pReaderName);
117  void fireCardRetryCounterChanged(const QString& pReaderName);
120 
121  public Q_SLOTS:
126  void shutdown();
127 };
128 
129 } // namespace governikus
governikus::CreateCardConnectionCommand
Definition: CreateCardConnectionCommand.h:24
governikus::ReaderManager::fireReaderDeviceError
void fireReaderDeviceError(GlobalStatus::Code pError)
governikus::ReaderManager::firePluginAdded
void firePluginAdded(const ReaderManagerPlugInInfo &pInfo)
governikus::ReaderManager::getInstance
static ReaderManager & getInstance()
Definition: ReaderManager.cpp:43
ReaderManager.h
governikus::ReaderManager::getReaderInfo
ReaderInfo getReaderInfo(const QString &pReaderName) const
Definition: ReaderManager.cpp:202
governikus::ReaderManager::shutdown
void shutdown()
Shuts down the reader manager service.
Definition: ReaderManager.cpp:89
defineSingleton
defineSingleton(ReaderManager) ReaderManager
Definition: ReaderManager.cpp:13
governikus::ReaderManagerWorker::fireCardRetryCounterChanged
void fireCardRetryCounterChanged(const QString &pReaderName)
governikus::GlobalStatus::Code
Code
Definition: GlobalStatus.h:26
governikus::ReaderManager::getReaderInfos
QVector< ReaderInfo > getReaderInfos(ReaderManagerPlugInType pType) const
Definition: ReaderManager.cpp:184
governikus::ReaderInfo
Definition: ReaderInfo.h:17
governikus::ReaderManagerWorker::fireCardInserted
void fireCardInserted(const QString &pReaderName)
governikus::ReaderManagerWorker::updateRetryCounters
Q_INVOKABLE void updateRetryCounters()
Definition: ReaderManagerWorker.cpp:253
governikus::ReaderManager::fireCardInserted
void fireCardInserted(const QString &pReaderName)
governikus::ReaderManagerWorker::fireInitialized
void fireInitialized()
governikus::ReaderManager::fireReaderAdded
void fireReaderAdded(const QString &pReaderName)
governikus::ReaderManager::fireReaderEvent
void fireReaderEvent()
CreateCardConnectionCommand.h
governikus::ReaderManager::init
void init()
Initialize the reader manager service.
Definition: ReaderManager.cpp:49
governikus::Env
Definition: Env.h:39
governikus::Enum::getList
static QVector< EnumTypeT > getList()
Definition: EnumHelper.h:121
governikus::ReaderManagerWorker::fireReaderDeviceError
void fireReaderDeviceError(GlobalStatus::Code pError)
governikus::ReaderManager::getPlugInInfos
QVector< ReaderManagerPlugInInfo > getPlugInInfos() const
Definition: ReaderManager.cpp:174
governikus::ReaderManagerWorker::fireCardRemoved
void fireCardRemoved(const QString &pReaderName)
governikus::ReaderManager::updateReaderInfo
void updateReaderInfo(const QString &pReaderName)
Definition: ReaderManager.cpp:214
governikus::ReaderManager::updateRetryCounters
void updateRetryCounters()
Definition: ReaderManager.cpp:222
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:104
governikus::ReaderManager::fireCardRemoved
void fireCardRemoved(const QString &pReaderName)
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:120
governikus::ReaderManagerWorker::fireStatusChanged
void fireStatusChanged(const ReaderManagerPlugInInfo &pInfo)
governikus::ReaderManager::stopScanAll
void stopScanAll()
Stops scan for all device types.
Definition: ReaderManager.cpp:146
governikus::ReaderManager::isScanRunning
bool isScanRunning() const
Queries if any plugin is currently scanning.
Definition: ReaderManager.cpp:156
Env.h
governikus::ReaderManager::stopScan
void stopScan(ReaderManagerPlugInType pType, const QString &pError=QString())
Stops started scan for devices.
Definition: ReaderManager.cpp:130
governikus::Env::ThreadSafe
Definition: Env.h:41
governikus::ReaderManagerWorker::firePluginAdded
void firePluginAdded(const ReaderManagerPlugInInfo &pInfo)
governikus::ReaderManagerWorker
Definition: ReaderManagerWorker.h:21
governikus::ReaderManager::fireInitialized
void fireInitialized()
governikus::ReaderManager::ReaderManager
ReaderManager()
governikus::ReaderManager::fireReaderPropertiesUpdated
void fireReaderPropertiesUpdated(const QString &pReaderName)
governikus::ReaderFilter
Definition: ReaderFilter.h:21
T
#define T(v)
Definition: http_parser.cpp:237
governikus::ReaderManager::fireStatusChanged
void fireStatusChanged(const ReaderManagerPlugInInfo &pInfo)
governikus::ReaderManagerWorker::fireReaderPropertiesUpdated
void fireReaderPropertiesUpdated(const QString &pReaderName)
governikus::ReaderManager
Definition: ReaderManager.h:22
governikus::ReaderManager::fireReaderRemoved
void fireReaderRemoved(const QString &pReaderName)
Reader.h
governikus::ReaderManagerWorker::onThreadStarted
void onThreadStarted()
Definition: ReaderManagerWorker.cpp:42
governikus::ReaderManagerWorker::fireReaderAdded
void fireReaderAdded(const QString &pReaderName)
governikus::ReaderManagerWorker::fireReaderRemoved
void fireReaderRemoved(const QString &pReaderName)
governikus::ReaderManager::fireCardRetryCounterChanged
void fireCardRetryCounterChanged(const QString &pReaderName)
governikus::ReaderManagerWorker::getPlugInInfos
Q_INVOKABLE QVector< ReaderManagerPlugInInfo > getPlugInInfos() const
Definition: ReaderManagerWorker.cpp:163
governikus::ReaderManager::~ReaderManager
~ReaderManager()
Definition: ReaderManager.cpp:28
governikus::ReaderManagerWorker::isScanRunning
Q_INVOKABLE bool isScanRunning() const
Definition: ReaderManagerWorker.cpp:133
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:88
SingletonHelper.h
governikus::CreateCardConnectionCommand::fireCommandDone
void fireCommandDone(QSharedPointer< CreateCardConnectionCommand > pCommand)
governikus::ReaderFilter::apply
QVector< ReaderManagerPlugIn * > apply(const QVector< ReaderManagerPlugIn * > &pPluginType) const
Definition: ReaderFilter.cpp:33
ReaderManagerWorker.h