X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcore.h;h=333d06700ecda6529d4b8d29bb99e401a651f409;hp=66fc50b01759a06e67fc9bec8f59388ada5be79c;hb=cfbd4daee17dbb3c4052d938bf33edd08711d728;hpb=46f20e19a343ad0fa17dde6c32f17e60fc682c9b diff --git a/src/core/core.h b/src/core/core.h index 66fc50b0..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,19 +546,6 @@ 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 &authenticator, const QVariantMap &authSetupMap); static inline QTimer &syncTimer() { return instance()->_storageSyncTimer; } @@ -607,34 +597,34 @@ private: //void processCoreSetup(QTcpSocket *socket, QVariantMap &msg); QString setupCoreForInternalUsage(); - void registerStorageBackends(); - bool registerStorageBackend(Storage *); - void unregisterStorageBackends(); - void unregisterStorageBackend(Storage *); + bool createUser(); + template + void registerStorageBackend(); + + template + void registerAuthenticator(); + + void registerStorageBackends(); void registerAuthenticators(); - bool registerAuthenticator(Authenticator *); - void unregisterAuthenticators(); - void unregisterAuthenticator(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 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 @@ -643,21 +633,18 @@ private: QTcpServer _server, _v6server; #endif - OidentdConfigGenerator *_oidentdConfigGenerator; + OidentdConfigGenerator *_oidentdConfigGenerator {nullptr}; - QHash _storageBackends; - QHash _authenticators; + 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