6#include <QtCore/QByteArray>
8#include <QtCore/QMutex>
9#include <QtCore/QString>
10#include <QtNetwork/QHostAddress>
21 UDPClient(
const QHostAddress &addr, quint16 portNum)
26 UDPClient(
const QString &host,
const QHostAddress &addr, quint16 portNum)
71 Q_INVOKABLE
void addHost(
const QString &host);
72 Q_INVOKABLE
void addHost(
const QString &host, quint16 port);
73 Q_INVOKABLE
void removeHost(
const QString &host);
74 Q_INVOKABLE
void removeHost(
const QString &host, quint16 port);
78 void loadSettings(QSettings &settings,
const QString &root)
override;
79 void saveSettings(QSettings &settings,
const QString &root)
const override;
80 QString
settingsURL()
const override {
return QStringLiteral(
"UdpSettings.qml"); }
81 QString
settingsTitle()
const override {
return tr(
"UDP Link Settings"); }
83 QStringList
hostList()
const {
return _hostList; }
84 QList<std::shared_ptr<UDPClient>>
targetHosts()
const {
return _targetHosts; }
102 void _updateHostList();
104 static QString _getIpAddress(
const QString &address);
106 QStringList _hostList;
107 QList<std::shared_ptr<UDPClient>> _targetHosts;
108 quint16 _localPort = 0;
109 bool _requireResolvedHosts =
true;
138 void _onSocketConnected();
139 void _onSocketDisconnected();
140 void _onSocketReadyRead();
141 void _onSocketBytesWritten(qint64 bytes);
142 void _onSocketErrorOccurred(QAbstractSocket::SocketError socketError);
146 QUdpSocket *_socket =
nullptr;
147 QMutex _sessionTargetsMutex;
148 QList<std::shared_ptr<UDPClient>> _sessionTargets;
149 std::atomic<bool> _isConnected{
false};
150 bool _errorEmitted =
false;
151 QSet<QHostAddress> _localAddresses;
153 static const QHostAddress _multicastGroup;
174 void _writeBytes(
const QByteArray &data)
override;
176 void _onDisconnected();
178 void _onDataReceived(
const QByteArray &data);
179 void _onDataSent(
const QByteArray &data);
184 QThread *_workerThread =
nullptr;
185 std::atomic<bool> _disconnectedEmitted{
false};
std::shared_ptr< LinkConfiguration > SharedLinkConfigurationPtr
Interface holding link specific settings.
The link interface defines the interface for all links used to communicate with the ground station ap...
void saveSettings(QSettings &settings, const QString &root) const override
QStringList resolveHosts() const
Returns the hostnames that failed to resolve.
QList< std::shared_ptr< UDPClient > > targetHosts() const
quint16 localPort() const
QStringList hostList() const
QString settingsTitle() const override
Settings Title, Pure virtual method providing the Title for the (QML) settings dialog.
Q_INVOKABLE void removeHost(const QString &host)
void setLocalPort(quint16 port)
Q_INVOKABLE void addHost(const QString &host)
virtual ~UDPConfiguration()
LinkType type() const override
void copyFrom(const LinkConfiguration *source) override
void loadSettings(QSettings &settings, const QString &root) override
void setRequireResolvedHosts(bool require)
bool requireResolvedHosts() const
When false, connect proceeds (listening) even if a target host fails to resolve.
QString settingsURL() const override
Settings URL, Pure virtual method providing the URL for the (QML) settings dialog.
bool isSecureConnection() const override
bool isConnected() const override
bool _connect() override
connect is private since all links should be created through LinkManager::createConnectedLink calls
void disconnect() override
void dataReceived(const QByteArray &data)
void dataSent(const QByteArray &data)
void errorOccurred(const QString &errorString)
void writeData(const QByteArray &data)
UDPClient(const QString &host, const QHostAddress &addr, quint16 portNum)
UDPClient(const QHostAddress &addr, quint16 portNum)
UDPClient(const UDPClient *other)
bool operator==(const UDPClient &other) const
UDPClient & operator=(const UDPClient &other)