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
Definition: CreateCardConnectionCommand.h:24
void fireCommandDone(QSharedPointer< CreateCardConnectionCommand > pCommand)
Definition: Env.h:39
Code
Definition: GlobalStatus.h:26
Definition: ReaderFilter.h:21
Definition: ReaderInfo.h:17
Definition: ReaderManager.h:22
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:104
void fireReaderAdded(const QString &pReaderName)
ReaderInfo getReaderInfo(const QString &pReaderName) const
Definition: ReaderManager.cpp:202
void updateReaderInfo(const QString &pReaderName)
Definition: ReaderManager.cpp:214
void startScanAll(bool pAutoConnect=true)
Starts a scan for all device types.
Definition: ReaderManager.cpp:120
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
void fireReaderDeviceError(GlobalStatus::Code pError)
void fireCardRetryCounterChanged(const QString &pReaderName)
void updateRetryCounters()
Definition: ReaderManager.cpp:222
QVector< ReaderInfo > getReaderInfos(ReaderManagerPlugInType pType) const
Definition: ReaderManager.cpp:184
void shutdown()
Shuts down the reader manager service.
Definition: ReaderManager.cpp:89
void init()
Initialize the reader manager service.
Definition: ReaderManager.cpp:49
void fireCardRemoved(const QString &pReaderName)
void fireStatusChanged(const ReaderManagerPlugInInfo &pInfo)
static ReaderManager & getInstance()
Definition: ReaderManager.cpp:43
void stopScanAll()
Stops scan for all device types.
Definition: ReaderManager.cpp:146
void stopScan(ReaderManagerPlugInType pType, const QString &pError=QString())
Stops started scan for devices.
Definition: ReaderManager.cpp:130
bool isScanRunning() const
Queries if any plugin is currently scanning.
Definition: ReaderManager.cpp:156
~ReaderManager()
Definition: ReaderManager.cpp:28
QVector< ReaderManagerPlugInInfo > getPlugInInfos() const
Definition: ReaderManager.cpp:174
void fireReaderPropertiesUpdated(const QString &pReaderName)
void fireCardInserted(const QString &pReaderName)
void fireReaderRemoved(const QString &pReaderName)
#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:41