AusweisApp2
IfdList.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "IfdDescriptor.h"
10 
11 #include <QTime>
12 #include <QTimer>
13 
14 
15 namespace governikus
16 {
17 
19 {
20  Q_DISABLE_COPY(IfdListEntry)
21 
22  private:
23  IfdDescriptor mIfdDescriptor;
24  QTime mLastSeen;
25  QVector<QTime> mLastSeenHistory;
26 
27  public:
28  explicit IfdListEntry(const IfdDescriptor& pIfdDescriptor);
29 
30  void setLastSeenToNow();
31  bool cleanUpSeenTimestamps(int pReaderResponsiveTimeout);
32  [[nodiscard]] int getPercentSeen(int pCheckInterval = 1000, int pTimeFrame = 5000) const;
33 
34  void setIfdDescriptor(const IfdDescriptor& pIfdDescriptor);
35 
36  [[nodiscard]] bool containsEquivalent(const IfdDescriptor& pIfdDescriptor) const;
37  bool isEqual(const IfdListEntry* const pOther) const;
38 
39  [[nodiscard]] const QTime& getLastSeen() const;
40  [[nodiscard]] const IfdDescriptor& getIfdDescriptor() const;
41 
42 };
43 
44 
45 class IfdList
46  : public QObject
47 {
48  Q_OBJECT
49 
50  Q_SIGNALS:
51  void fireDeviceAppeared(const QSharedPointer<IfdListEntry>&);
52  void fireDeviceUpdated(const QSharedPointer<IfdListEntry>&);
53  void fireDeviceVanished(const QSharedPointer<IfdListEntry>&);
54 
55  public:
56  IfdList() = default;
57  ~IfdList() override = default;
58 
59  virtual void update(const IfdDescriptor& pDescriptor) = 0;
60  virtual void clear() = 0;
61  [[nodiscard]] virtual QVector<QSharedPointer<IfdListEntry>> getIfdList() const;
62 };
63 
64 
66  : public IfdList
67 {
68  Q_OBJECT
69 
70  private:
71  QTimer mTimer;
72  const int mReaderResponsiveTimeout;
73  QVector<QSharedPointer<IfdListEntry>> mResponsiveList;
74 
75  private Q_SLOTS:
76  void onProcessUnresponsiveRemoteReaders();
77 
78  public:
79  IfdListImpl(int pCheckInterval = 1000, int pReaderResponsiveTimeout = 5000);
80  ~IfdListImpl() override;
81 
82  void update(const IfdDescriptor& pDescriptor) override;
83  void clear() override;
84  [[nodiscard]] QVector<QSharedPointer<IfdListEntry>> getIfdList() const override;
85 };
86 
87 
88 } // namespace governikus
Definition: IfdDescriptor.h:22
Definition: IfdList.h:19
IfdListEntry(const IfdDescriptor &pIfdDescriptor)
Definition: IfdList.cpp:39
bool isEqual(const IfdListEntry *const pOther) const
Definition: IfdList.cpp:102
void setIfdDescriptor(const IfdDescriptor &pIfdDescriptor)
Definition: IfdList.cpp:90
void setLastSeenToNow()
Definition: IfdList.cpp:47
int getPercentSeen(int pCheckInterval=1000, int pTimeFrame=5000) const
Definition: IfdList.cpp:78
const QTime & getLastSeen() const
Definition: IfdList.cpp:110
bool containsEquivalent(const IfdDescriptor &pIfdDescriptor) const
Definition: IfdList.cpp:96
const IfdDescriptor & getIfdDescriptor() const
Definition: IfdList.cpp:116
bool cleanUpSeenTimestamps(int pReaderResponsiveTimeout)
Definition: IfdList.cpp:58
Definition: IfdList.h:67
void clear() override
Definition: IfdList.cpp:172
void update(const IfdDescriptor &pDescriptor) override
Definition: IfdList.cpp:146
~IfdListImpl() override
Definition: IfdList.cpp:140
IfdListImpl(int pCheckInterval=1000, int pReaderResponsiveTimeout=5000)
Definition: IfdList.cpp:128
QVector< QSharedPointer< IfdListEntry > > getIfdList() const override
Definition: IfdList.cpp:183
Definition: IfdList.h:47
void fireDeviceAppeared(const QSharedPointer< IfdListEntry > &)
virtual void update(const IfdDescriptor &pDescriptor)=0
virtual void clear()=0
void fireDeviceUpdated(const QSharedPointer< IfdListEntry > &)
virtual QVector< QSharedPointer< IfdListEntry > > getIfdList() const
Definition: IfdList.cpp:122
void fireDeviceVanished(const QSharedPointer< IfdListEntry > &)
~IfdList() override=default
A simple template renderer.
Definition: ActivationContext.h:15