X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcore.h;h=333d06700ecda6529d4b8d29bb99e401a651f409;hb=32582b14a442c35d1a64131ac10792683fb06f82;hp=3eb43132d1d2deceaef87b50cd7c935c7f445690;hpb=8965e63594dd297347afced784dcaed6c26b7c6a;p=quassel.git diff --git a/src/core/core.h b/src/core/core.h index 3eb43132..333d0670 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -18,8 +18,10 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef CORE_H -#define CORE_H +#pragma once + +#include +#include #include #include @@ -36,6 +38,7 @@ #include "authenticator.h" #include "bufferinfo.h" +#include "deferredptr.h" #include "message.h" #include "oidentdconfiggenerator.h" #include "sessionthread.h" @@ -543,20 +546,7 @@ public: static QVariantList backendInfo(); static QVariantList authenticatorInfo(); - /** - * Checks if a storage backend is the default storage backend. This - * hardcodes this information into the core (not the client). - * - * \param backend The backend to check. - * - * @return True if storage backend is default, false otherwise. - */ - static inline bool isStorageBackendDefault(const Storage *backend) - { - return (backend->displayName() == "SQLite") ? true : false; - } - - static QString setup(const QString &adminUser, const QString &adminPassword, const QString &backend, const QVariantMap &setupData, const QString &authBackend, const QVariantMap &authSetupMap); + static QString setup(const QString &adminUser, const QString &adminPassword, const QString &backend, const QVariantMap &setupData, const QString &authenticator, const QVariantMap &authSetupMap); static inline QTimer &syncTimer() { return instance()->_storageSyncTimer; } @@ -570,7 +560,7 @@ public slots: */ void syncStorage(); void setupInternalClientSession(InternalPeer *clientConnection); - QString setupCore(const QString &adminUser, const QString &adminPassword, const QString &backend, const QVariantMap &setupData, const QString &authBackend, const QVariantMap &authSetupMap); + QString setupCore(const QString &adminUser, const QString &adminPassword, const QString &backend, const QVariantMap &setupData, const QString &authenticator, const QVariantMap &authSetupMap); signals: //! Sent when a BufferInfo is updated in storage. @@ -607,33 +597,34 @@ private: //void processCoreSetup(QTcpSocket *socket, QVariantMap &msg); QString setupCoreForInternalUsage(); + bool createUser(); + + template + void registerStorageBackend(); + + template + void registerAuthenticator(); + void registerStorageBackends(); - bool registerStorageBackend(Storage *); - void unregisterStorageBackends(); - void unregisterStorageBackend(Storage *); + void registerAuthenticators(); - void registerAuthenticatorBackends(); - bool registerAuthenticatorBackend(Authenticator *); - void unregisterAuthenticatorBackends(); - void unregisterAuthenticatorBackend(Authenticator *); + DeferredSharedPtr storageBackend(const QString& backendId) const; + DeferredSharedPtr authenticator(const QString& authenticatorId) const; bool selectBackend(const QString &backend); bool selectAuthenticator(const QString &backend); - bool createUser(); + bool saveBackendSettings(const QString &backend, const QVariantMap &settings); - void saveAuthBackendSettings(const QString &backend, const QVariantMap &settings); + void saveAuthenticatorSettings(const QString &backend, const QVariantMap &settings); - QVariantMap promptForSettings(const Storage *storage); - QVariantMap promptForSettings(const Authenticator *authenticator); - QVariantMap promptForSettings(QStringList keys, QVariantMap defaults); + template + QVariantMap promptForSettings(const Backend *backend); private: QSet _connectingClients; QHash _sessions; - - // Have both a storage backend and an authenticator backend. - Storage *_storage; - Authenticator *_authenticator; + DeferredSharedPtr _storage; ///< Active storage backend + DeferredSharedPtr _authenticator; ///< Active authenticator QTimer _storageSyncTimer; #ifdef HAVE_SSL @@ -642,21 +633,18 @@ private: QTcpServer _server, _v6server; #endif - OidentdConfigGenerator *_oidentdConfigGenerator; + OidentdConfigGenerator *_oidentdConfigGenerator {nullptr}; - QHash _storageBackends; - QHash _authenticatorBackends; + std::vector> _registeredStorageBackends; + std::vector> _registeredAuthenticators; QDateTime _startTime; bool _configured; - static AbstractSqlMigrationReader *getMigrationReader(Storage *storage); - static AbstractSqlMigrationWriter *getMigrationWriter(Storage *storage); + static std::unique_ptr getMigrationReader(Storage *storage); + static std::unique_ptr getMigrationWriter(Storage *storage); static void stdInEcho(bool on); static inline void enableStdInEcho() { stdInEcho(true); } static inline void disableStdInEcho() { stdInEcho(false); } }; - - -#endif