#pragma once #include #include namespace TrainingAreaBase { class WebSocketInterface : public QObject { Q_OBJECT public: virtual bool init(quint16 listenPort) = 0; bool init(const QPair &portRange) { for (quint16 currentPort = portRange.first; currentPort != portRange.second; ++currentPort) { if (init(currentPort)) return true; } return init(0); } virtual bool isConnected() const = 0; virtual quint16 getPort() const = 0; virtual bool disconnectWs(int wsId) = 0; virtual bool sendTelegram(int typeId, const QJsonObject *data, int exerciseId) = 0; virtual bool sendTelegram(int wsId, const QJsonObject *data) = 0; virtual QString getPeerAddress(int wsId) const = 0; virtual QUrl getPeerUrl(int wsId) const = 0; virtual int getExerciseId(int wsId) const = 0; Q_SIGNALS: void recivedTelegram(int wsId, const QJsonObject& telegramData); void newConnection(int wsId, const QString& address, qint16 port); void wsDisconnected(int wsId); public: explicit WebSocketInterface(QObject* parent = nullptr) : QObject(parent){} virtual ~WebSocketInterface() {} }; }