QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
RemoteTransport.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QByteArray>
4#include <QtCore/QObject>
5#include <QtCore/QString>
6#include <QtNetwork/QAbstractSocket>
7#include <QtNetwork/QSslCertificate>
8#include <QtNetwork/QSslError>
9#include <QtNetwork/QSslKey>
10
11class QSslSocket;
12class QUdpSocket;
13
14class RemoteTransport : public QObject
15{
16 Q_OBJECT
17
18public:
19 explicit RemoteTransport(QObject *parent = nullptr) : QObject(parent) {}
20
21 virtual bool send(const QByteArray &data) = 0;
22 virtual void close() = 0;
23 virtual bool isConnected() const = 0;
24
25signals:
26 void connected();
28 void errorOccurred(const QString &message);
29};
30
32{
33 Q_OBJECT
34
35public:
36 explicit UdpTransport(QObject *parent = nullptr);
37
38 void setTarget(const QString &host, quint16 port);
39
40 bool send(const QByteArray &data) override;
41 void close() override;
42 bool isConnected() const override { return true; }
43
44 int failureCount() const { return _failureCount; }
45 void resetFailureCount() { _failureCount = 0; }
46
47private:
48 QUdpSocket *_socket = nullptr;
49 QString _host;
50 quint16 _port = 0;
51 int _failureCount = 0;
52
53 static constexpr int kMaxDatagramSize = 8192;
54};
55
57{
58 Q_OBJECT
59
60public:
61 explicit TcpTransport(QObject *parent = nullptr);
62
63 void setTarget(const QString &host, quint16 port);
64 void setTlsEnabled(bool enabled);
65 void setTlsVerifyPeer(bool verify);
66 void setTlsCaCertificates(const QList<QSslCertificate> &certs);
67 void setTlsClientCertificate(const QSslCertificate &cert, const QSslKey &key);
68
69 bool send(const QByteArray &data) override;
70 void close() override;
71 bool isConnected() const override { return _connected; }
72
73 void connectToHost();
74
75private slots:
76 void _onConnected();
77 void _onDisconnected();
78 void _onError(QAbstractSocket::SocketError error);
79 void _onSslErrors(const QList<QSslError> &errors);
80
81private:
82 void _createSocket();
83
84 QSslSocket *_socket = nullptr;
85 QString _host;
86 quint16 _port = 0;
87 bool _connected = false;
88 bool _tlsEnabled = false;
89 bool _tlsVerifyPeer = true;
90
91 QList<QSslCertificate> _caCertificates;
92 QSslCertificate _clientCert;
93 QSslKey _clientKey;
94};
Error error
RemoteTransport(QObject *parent=nullptr)
void errorOccurred(const QString &message)
virtual bool isConnected() const =0
virtual bool send(const QByteArray &data)=0
virtual void close()=0
bool send(const QByteArray &data) override
void setTlsCaCertificates(const QList< QSslCertificate > &certs)
void close() override
void setTlsEnabled(bool enabled)
void setTlsVerifyPeer(bool verify)
void setTlsClientCertificate(const QSslCertificate &cert, const QSslKey &key)
bool isConnected() const override
void setTarget(const QString &host, quint16 port)
void resetFailureCount()
int failureCount() const
void close() override
bool send(const QByteArray &data) override
void setTarget(const QString &host, quint16 port)
bool isConnected() const override