AusweisApp2
DatagramHandlerImpl.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "DatagramHandler.h"
10 #include "HttpServer.h"
11 #include "MulticastLock.h"
12 #include "PortFile.h"
13 
14 #include <QScopedPointer>
15 #include <QSharedPointer>
16 #include <QUdpSocket>
17 
18 
19 namespace governikus
20 {
21 
23  : public DatagramHandler
24 {
25  Q_OBJECT
26  friend class ::test_DatagramHandlerImpl;
27  friend struct QtSharedPointer::CustomDeleter<DatagramHandlerImpl, QtSharedPointer::NormalDeleter>;
28 
29  private:
30  QScopedPointer<QUdpSocket, QScopedPointerDeleteLater> mSocket;
31  QScopedPointer<MulticastLock> mMulticastLock;
32  QList<QHostAddress> mAllAddresses;
33  QVector<QHostAddress> mFailedAddresses;
34  quint16 mUsedPort;
35  PortFile mPortFile;
36  bool mEnableListening;
37 
38  void resetSocket();
39  [[nodiscard]] bool isValidBroadcastInterface(const QNetworkInterface& pInterface) const;
40  [[nodiscard]] QVector<QHostAddress> getAllBroadcastAddresses(const QNetworkInterface& pInterface) const;
41  [[nodiscard]] bool sendToAddress(const QByteArray& pData, const QHostAddress& pAddress, quint16 pPort = 0, bool pLogError = true);
42  void sendToAllAddressEntries(const QByteArray& pData, quint16 pPort);
43 
44 #if defined(Q_OS_IOS)
45 
46  void checkNetworkPermission();
47 #endif
48 
49  public:
50  DatagramHandlerImpl(bool pEnableListening = true, quint16 pPort = HttpServer::cPort);
51  ~DatagramHandlerImpl() override;
52 
53  [[nodiscard]] bool isBound() const override;
54  void send(const QByteArray& pData) override;
55 
56  private Q_SLOTS:
57  void onReadyRead();
58 };
59 
60 
61 } // namespace governikus
Definition: DatagramHandlerImpl.h:24
bool isBound() const override
Definition: DatagramHandlerImpl.cpp:110
void send(const QByteArray &pData) override
Definition: DatagramHandlerImpl.cpp:116
Definition: DatagramHandler.h:18
Definition: PortFile.h:16
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16