X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcore.h;h=8d02d9ed0ba5922f56f4bce08b9a01cc8d640abe;hb=cdc6091a2e02b84a48937cda287a0769ceb8726a;hp=53869c2b2781c1057d7ca0b950b2c7e3e5ebfab5;hpb=450c2bdf68fb837cb64fb3190912564ecc9f651e;p=quassel.git diff --git a/src/core/core.h b/src/core/core.h index 53869c2b..8d02d9ed 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -39,6 +40,7 @@ #include "authenticator.h" #include "bufferinfo.h" #include "deferredptr.h" +#include "identserver.h" #include "message.h" #include "oidentdconfiggenerator.h" #include "sessionthread.h" @@ -47,10 +49,12 @@ class CoreAuthHandler; class CoreSession; -struct NetworkInfo; +class InternalPeer; class SessionThread; class SignalProxy; +struct NetworkInfo; + class AbstractSqlMigrationReader; class AbstractSqlMigrationWriter; @@ -64,6 +68,8 @@ public: Core(); ~Core() override; + void init(); + /*** Storage access ***/ // These methods are threadsafe. @@ -550,13 +556,6 @@ public: return instance()->_storage->setBufferLastSeenMsg(user, bufferId, msgId); } - //! Get the auth username associated with a userId - /** \param user The user to retrieve the username for - * \return The username for the user - */ - static inline QString getAuthUserName(UserId user) { - return instance()->_storage->getAuthUserName(user); - } //! Get a usable sysident for the given user in oidentd-strict mode /** \param user The user to retrieve the sysident for @@ -689,11 +688,25 @@ public: static inline QTimer *syncTimer() { return &instance()->_storageSyncTimer; } inline OidentdConfigGenerator *oidentdConfigGenerator() const { return _oidentdConfigGenerator; } + inline IdentServer *identServer() const { return _identServer; } static const int AddClientEventId; +signals: + //! Sent when a BufferInfo is updated in storage. + void bufferInfoUpdated(UserId user, const BufferInfo &info); + + //! Relay from CoreSession::sessionState(). Used for internal connection only + void sessionState(const Protocol::SessionState &sessionState); + + //! Emitted when database schema upgrade starts or ends + void dbUpgradeInProgress(bool inProgress); + + //! Emitted when a fatal error was encountered during async initialization + void exitRequested(int exitCode, const QString &reason); + public slots: - bool init(); + void initAsync(); /** Persist storage. * @@ -710,15 +723,9 @@ public slots: void cacheSysIdent(); - void setupInternalClientSession(InternalPeer *clientConnection); 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. - void bufferInfoUpdated(UserId user, const BufferInfo &info); - - //! Relay from CoreSession::sessionState(). Used for internal connection only - void sessionState(const Protocol::SessionState &sessionState); + void connectInternalPeer(QPointer peer); protected: void customEvent(QEvent *event) override; @@ -746,6 +753,7 @@ private: void addClientHelper(RemotePeer *peer, UserId uid); //void processCoreSetup(QTcpSocket *socket, QVariantMap &msg); QString setupCoreForInternalUsage(); + void setupInternalClientSession(QPointer peer); bool createUser(); @@ -796,7 +804,12 @@ private: QDateTime _startTime; - bool _configured; + IdentServer *_identServer {nullptr}; + + bool _initialized{false}; + bool _configured{false}; + + QPointer _pendingInternalConnection; /// Whether or not strict ident mode is enabled, locking users' idents to Quassel username bool _strictIdentEnabled;