#ifndef JSONRPCSERVER_H #define JSONRPCSERVER_H #include #include "transportinterface.h" #include "jsonrpc/jsonhandler.h" #include "jsonrpc/authenticationhandler.h" class JsonRpcServer : public JsonHandler { Q_OBJECT public: explicit JsonRpcServer(QObject *parent = nullptr); ~JsonRpcServer() override; QString name() const override; QHash handlers() const; void registerTransportInterface(TransportInterface *interface); void unregisterTransportInterface(TransportInterface *interface); Q_INVOKABLE JsonReply *Hello(const QVariantMap ¶ms) const; Q_INVOKABLE JsonReply *Introspect(const QVariantMap ¶ms) const; private: QList m_interfaces; QHash m_handlers; QHash m_asyncReplies; QHash m_clientTransports; QHash m_pairingRequests; int m_notificationId; void sendResponse(TransportInterface *interface, const QUuid &clientId, int commandId, const QVariantMap ¶ms = QVariantMap()); void sendErrorResponse(TransportInterface *interface, const QUuid &clientId, int commandId, const QString &error); QString formatAssertion(const QString &targetNamespace, const QString &method, JsonHandler *handler, const QVariantMap &data) const; void registerHandler(JsonHandler *handler); private slots: void setup(); void clientConnected(const QUuid &clientId); void clientDisconnected(const QUuid &clientId); void processData(const QUuid &clientId, const QByteArray &data); // void sendNotification(const QVariantMap ¶ms); // void asyncReplyFinished(); }; #endif // JSONRPCSERVER_H