Files
amnezia-client/client/protocols/vpnprotocol.h
T

66 lines
1.7 KiB
C++
Raw Normal View History

2020-12-26 15:03:51 +03:00
#ifndef VPNPROTOCOL_H
#define VPNPROTOCOL_H
#include <QObject>
#include <QString>
2021-01-06 17:12:24 +03:00
#include "core/defs.h"
using namespace amnezia;
2020-12-26 15:03:51 +03:00
class QTimer;
class Communicator;
class VpnProtocol : public QObject
{
Q_OBJECT
public:
explicit VpnProtocol(const QString& args = QString(), QObject* parent = nullptr);
2021-01-06 17:12:24 +03:00
virtual ~VpnProtocol() override = default;
2020-12-26 15:03:51 +03:00
enum class ConnectionState {Unknown, Disconnected, Preparing, Connecting, Connected, Disconnecting, TunnelReconnecting, Error};
2020-12-26 23:17:20 +03:00
static Communicator* communicator();
2020-12-26 15:03:51 +03:00
static QString textConnectionState(ConnectionState connectionState);
2020-12-26 23:17:20 +03:00
static void initializeCommunicator(QObject* parent = nullptr);
2020-12-26 15:03:51 +03:00
2021-01-08 16:51:58 +03:00
virtual bool onConnected() const;
virtual bool onDisconnected() const;
2021-01-06 17:12:24 +03:00
virtual ErrorCode start() = 0;
2020-12-26 15:03:51 +03:00
virtual void stop() = 0;
2020-12-26 23:17:20 +03:00
ConnectionState connectionState() const;
2021-01-06 17:12:24 +03:00
ErrorCode lastError() const;
2020-12-26 23:17:20 +03:00
QString textConnectionState() const;
2021-01-06 17:12:24 +03:00
void setLastError(ErrorCode lastError);
2020-12-26 23:17:20 +03:00
2020-12-26 15:03:51 +03:00
signals:
void bytesChanged(quint64 receivedBytes, quint64 sentBytes);
void connectionStateChanged(VpnProtocol::ConnectionState state);
void timeoutTimerEvent();
2021-01-08 16:51:58 +03:00
void protocolError(amnezia::ErrorCode e);
2020-12-26 15:03:51 +03:00
protected slots:
virtual void onTimeout();
protected:
void startTimeoutTimer();
void stopTimeoutTimer();
virtual void setBytesChanged(quint64 receivedBytes, quint64 sentBytes);
virtual void setConnectionState(VpnProtocol::ConnectionState state);
2020-12-26 23:17:20 +03:00
static Communicator* m_communicator;
2020-12-26 15:03:51 +03:00
ConnectionState m_connectionState;
2020-12-26 23:17:20 +03:00
private:
2020-12-26 15:03:51 +03:00
QTimer* m_timeoutTimer;
2021-01-06 17:12:24 +03:00
ErrorCode m_lastError;
2020-12-26 23:17:20 +03:00
quint64 m_receivedBytes;
quint64 m_sentBytes;
2020-12-26 15:03:51 +03:00
};
#endif // VPNPROTOCOL_H