Have separate API controller instances per session

PR #16848.
This commit is contained in:
Vladimir Golovnev
2022-04-12 13:39:35 +03:00
committed by GitHub
parent 189514c6de
commit 4471a6377e
11 changed files with 103 additions and 159 deletions

View File

@@ -1,6 +1,6 @@
/*
* Bittorrent Client using Qt and libtorrent.
* Copyright (C) 2018 Vladimir Golovnev <glassez@yandex.ru>
* Copyright (C) 2018, 2022 Vladimir Golovnev <glassez@yandex.ru>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -28,14 +28,12 @@
#pragma once
#include <QtContainerFwd>
#include <QObject>
#include <QVariant>
#include <QtContainerFwd>
class QString;
struct ISessionManager;
using DataMap = QHash<QString, QByteArray>;
using StringMap = QHash<QString, QString>;
@@ -44,18 +42,11 @@ class APIController : public QObject
Q_OBJECT
Q_DISABLE_COPY_MOVE(APIController)
#ifndef Q_MOC_RUN
#define WEBAPI_PUBLIC
#define WEBAPI_PRIVATE
#endif
public:
explicit APIController(ISessionManager *sessionManager, QObject *parent = nullptr);
explicit APIController(QObject *parent = nullptr);
QVariant run(const QString &action, const StringMap &params, const DataMap &data = {});
ISessionManager *sessionManager() const;
protected:
const StringMap &params() const;
const DataMap &data() const;
@@ -66,7 +57,6 @@ protected:
void setResult(const QJsonObject &result);
private:
ISessionManager *m_sessionManager;
StringMap m_params;
DataMap m_data;
QVariant m_result;