Skip to content
Snippets Groups Projects
websocketserver.h 1.55 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>
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    class QWebSocketServer;
    
    akiraohgaki's avatar
    akiraohgaki committed
    class QWebSocket;
    
    akiraohgaki's avatar
    akiraohgaki committed
    class ConfigHandler;
    class SystemHandler;
    class OcsHandler;
    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 = "WebSocketServer", quint16 serverPort = 0, QObject *parent = 0);
    
    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();
        QString errorString();
        QUrl serverUrl();
    
    
    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);
        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 execRequest(const QJsonObject &request);
        void sendResponse(const QJsonObject &response);
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
        ConfigHandler *configHandler_;
        SystemHandler *systemHandler_;
        OcsHandler *ocsHandler_;
        ItemHandler *itemHandler_;
    
    akiraohgaki's avatar
    akiraohgaki committed
    
        QString serverName_;
        quint16 serverPort_;
        QWebSocketServer *wsServer_;
        QList<QWebSocket *> wsClients_;