X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fstorage.h;h=da09a2a2d7946d0bd338d5a4e0f4dd35390095f8;hp=c809a7f4598a9b4808f6b055cd97578efc1a4378;hb=e8a39b4c3c92e193ab861a3fea84a261bb6fbd24;hpb=8697a21faab21ae23646f559cba9a85bd95b2ad7 diff --git a/src/core/storage.h b/src/core/storage.h index c809a7f4..da09a2a2 100644 --- a/src/core/storage.h +++ b/src/core/storage.h @@ -33,8 +33,8 @@ class Storage : public QObject Q_OBJECT public: - Storage(QObject *parent = 0); - virtual ~Storage() {}; + Storage(QObject *parent = nullptr); + ~Storage() override {}; enum State { IsReady, // ready to go @@ -85,13 +85,17 @@ public slots: * \param settings Hostname, port, username, password, ... * \return True if and only if the storage provider was initialized successfully. */ - virtual bool setup(const QVariantMap &settings = QVariantMap()) = 0; + virtual bool setup(const QVariantMap &settings = QVariantMap(), + const QProcessEnvironment &environment = {}, + bool loadFromEnvironment = false) = 0; //! Initialize the storage provider /** \param settings Hostname, port, username, password, ... * \return the State the storage backend is now in (see Storage::State) */ - virtual State init(const QVariantMap &settings = QVariantMap()) = 0; + virtual State init(const QVariantMap &settings = QVariantMap(), + const QProcessEnvironment &environment = {}, + bool loadFromEnvironment = false) = 0; //! Makes temp data persistent /** This Method is periodically called by the Quassel Core to make temporary @@ -171,6 +175,19 @@ public slots: */ virtual QVariant getUserSetting(UserId userId, const QString &settingName, const QVariant &data = QVariant()) = 0; + //! Store core state + /** + * \param data Active Sessions + */ + virtual void setCoreState(const QVariantList &data) = 0; + + //! Retrieve core state + /** + * \param default Value to return in case it's unset. + * \return Active Sessions + */ + virtual QVariantList getCoreState(const QVariantList &data = QVariantList()) = 0; + /* Identity handling */ virtual IdentityId createIdentity(UserId user, CoreIdentity &identity) = 0; virtual bool updateIdentity(UserId user, const CoreIdentity &identity) = 0; @@ -411,6 +428,52 @@ public slots: */ virtual Message::Types bufferActivity(BufferId bufferId, MsgId lastSeenMsgId) = 0; + //! Get a hash of buffers with their ciphers for a given network + /** The keys are channel names and values are ciphers (possibly empty) + * \note This method is threadsafe + * + * \param user The id of the networks owner + * \param networkId The Id of the network + */ + virtual QHash bufferCiphers(UserId user, const NetworkId &networkId) = 0; + + //! Update the cipher of a buffer + /** \note This method is threadsafe + * + * \param user The Id of the networks owner + * \param networkId The Id of the network + * \param bufferName The Cname of the buffer + * \param cipher The cipher for the buffer + */ + virtual void setBufferCipher(UserId user, const NetworkId &networkId, const QString &bufferName, const QByteArray &cipher) = 0; + + //! Update the highlight count for a Buffer + /** This Method is used to make the activity state of a Buffer persistent + * \note This method is threadsafe. + * + * \param user The Owner of that Buffer + * \param bufferId The buffer id + * \param MsgId The Message id where the marker line should be placed + */ + virtual void setHighlightCount(UserId id, BufferId bufferId, int count) = 0; + + //! Get a Hash of all highlight count states + /** This Method is called when the Quassel Core is started to restore the HighlightCounts + * \note This method is threadsafe. + * + * \param user The Owner of the buffers + */ + virtual QHash highlightCounts(UserId id) = 0; + + //! Get the highlight count states for a buffer + /** This method is used to load the activity state of a buffer when its last seen message changes. + * \note This method is threadsafe. + * + * \param bufferId The buffer + * \param lastSeenMsgId The last seen message + */ + virtual int highlightCount(BufferId bufferId, MsgId lastSeenMsgId) = 0; + /* Message handling */ //! Store a Message in the storage backend and set its unique Id. @@ -434,6 +497,18 @@ public slots: */ virtual QList requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1) = 0; + //! Request a certain number messages stored in a given buffer, matching certain filters + /** \param buffer The buffer we request messages from + * \param first if != -1 return only messages with a MsgId >= first + * \param last if != -1 return only messages with a MsgId < last + * \param limit if != -1 limit the returned list to a max of \limit entries + * \param type The Message::Types that should be returned + * \return The requested list of messages + */ + virtual QList requestMsgsFiltered(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, + int limit = -1, Message::Types type = Message::Types{-1}, + Message::Flags flags = Message::Flags{-1}) = 0; + //! Request a certain number of messages across all buffers /** \param first if != -1 return only messages with a MsgId >= first * \param last if != -1 return only messages with a MsgId < last @@ -442,16 +517,21 @@ public slots: */ virtual QList requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1) = 0; - //! Fetch all authusernames - /** \return Map of all current UserIds to permitted idents + //! Request a certain number of messages across all buffers, matching certain filters + /** \param first if != -1 return only messages with a MsgId >= first + * \param last if != -1 return only messages with a MsgId < last + * \param limit Max amount of messages + * \param type The Message::Types that should be returned + * \return The requested list of messages */ - virtual QMap getAllAuthusernames() = 0; + virtual QList requestAllMsgsFiltered(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1, + Message::Types type = Message::Types{-1}, + Message::Flags flags = Message::Flags{-1}) = 0; - //! Get the auth username associated with a userId - /** \param user The user to retrieve the username for - * \return The username for the user + //! Fetch all authusernames + /** \return Map of all current UserIds to permitted idents */ - virtual const QString getAuthusername(UserId user) = 0; + virtual QMap getAllAuthUserNames() = 0; signals: //! Sent when a new BufferInfo is created, or an existing one changed somehow. @@ -465,6 +545,9 @@ signals: //! Sent when a user has been removed void userRemoved(UserId); + //! Emitted when database schema upgrade starts or ends + void dbUpgradeInProgress(bool inProgress); + protected: QString hashPassword(const QString &password); bool checkHashedPassword(const UserId user, const QString &password, const QString &hashedPassword, const Storage::HashVersion version);