Skip to content
Snippets Groups Projects
websocketserver.h 1.77 KiB
Newer Older
  • Learn to ignore specific revisions
  • akiraohgaki's avatar
    akiraohgaki committed
    #pragma once
    
    #include <QObject>
    
    akiraohgaki's avatar
    akiraohgaki committed
    #include <QUrl>
    
    akiraohgaki's avatar
    akiraohgaki committed
    #include <QJsonObject>
    #include <QJsonArray>
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    class QWebSocketServer;
    
    akiraohgaki's avatar
    akiraohgaki committed
    class QWebSocket;
    
    akiraohgaki's avatar
    akiraohgaki committed
    class ConfigHandler;
    class SystemHandler;
    
    akiraohgaki's avatar
    akiraohgaki committed
    class OcsApiHandler;
    
    akiraohgaki's avatar
    akiraohgaki committed
    class ItemHandler;
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    class WebSocketServer : public QObject
    {
        Q_OBJECT
    
    public:
    
    akiraohgaki's avatar
    akiraohgaki committed
        explicit WebSocketServer(ConfigHandler *configHandler, const QString &serverName = QString("WebSocketServer"), quint16 serverPort = 0, QObject *parent = nullptr);
    
    akiraohgaki's avatar
    akiraohgaki committed
        ~WebSocketServer();
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    signals:
        void started();
        void stopped();
    
    public slots:
    
    akiraohgaki's avatar
    akiraohgaki committed
        bool start();
        void stop();
    
    akiraohgaki's avatar
    akiraohgaki committed
        bool isError() const;
        QString errorString() const;
        QUrl serverUrl() const;
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    private slots:
        void wsNewConnection();
        void wsDisconnected();
    
    akiraohgaki's avatar
    akiraohgaki committed
        void wsTextMessageReceived(const QString &message);
        void wsBinaryMessageReceived(const QByteArray &message);
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
        void itemMetadataSetChanged();
        void itemDownloadStarted(QJsonObject result);
        void itemDownloadFinished(QJsonObject result);
        void itemDownloadProgress(QString id, qint64 bytesReceived, qint64 bytesTotal);
    
    akiraohgaki's avatar
    akiraohgaki committed
        void itemSaveStarted(QJsonObject result);
        void itemSaveFinished(QJsonObject result);
    
    akiraohgaki's avatar
    akiraohgaki committed
        void itemInstallStarted(QJsonObject result);
        void itemInstallFinished(QJsonObject result);
        void itemUninstallStarted(QJsonObject result);
        void itemUninstallFinished(QJsonObject result);
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    private:
    
    akiraohgaki's avatar
    akiraohgaki committed
        void receiveMessage(const QString &id, const QString &func, const QJsonArray &data);
        void sendMessage(const QString &id, const QString &func, const QJsonArray &data);
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
        ConfigHandler *configHandler_;
        SystemHandler *systemHandler_;
    
    akiraohgaki's avatar
    akiraohgaki committed
        OcsApiHandler *ocsApiHandler_;
    
    akiraohgaki's avatar
    akiraohgaki committed
        ItemHandler *itemHandler_;
    
    akiraohgaki's avatar
    akiraohgaki committed
    
        QString serverName_;
        quint16 serverPort_;
        QWebSocketServer *wsServer_;
        QList<QWebSocket *> wsClients_;