X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fstorage.h;h=d4c4b8b3703beb388371372fb0eda4e784b9502c;hb=b68ffc844fc7504ecceeaa9348107ca5c249bd51;hp=3915d09012f87269fba3ca11d2e27032b0ee760d;hpb=04754cf669dd295205226b744bc769b94693866a;p=quassel.git diff --git a/src/core/storage.h b/src/core/storage.h index 3915d090..d4c4b8b3 100644 --- a/src/core/storage.h +++ b/src/core/storage.h @@ -148,6 +148,52 @@ class Storage : public QObject { */ virtual NetworkId getNetworkId(UserId user, const QString &network) = 0; + //! Get a list of Networks to restore + /** Return a list of networks the user was connected at the time of core shutdown + * \note This method is threadsafe. + * + * \param user The User Id in question + */ + virtual QList connectedNetworks(UserId user) = 0; + + //! Update the connected state of a network + /** \note This method is threadsafe + * + * \param user The Id of the networks owner + * \param networkId The Id of the network + * \param isConnected whether the network is connected or not + */ + virtual void setNetworkConnected(UserId user, const NetworkId &networkId, bool isConnected) = 0; + + //! Get a hash of channels with their channel keys for a given network + /** The keys are channel names and values are passwords (possibly empty) + * \note This method is threadsafe + * + * \param user The id of the networks owner + * \param networkId The Id of the network + */ + virtual QHash persistentChannels(UserId user, const NetworkId &networkId) = 0; + + //! Update the connected state of a channel + /** \note This method is threadsafe + * + * \param user The Id of the networks owner + * \param networkId The Id of the network + * \param channel The name of the channel + * \param isJoined whether the channel is connected or not + */ + virtual void setChannelPersistent(UserId user, const NetworkId &networkId, const QString &channel, bool isJoined) = 0; + + //! Update the key of a channel + /** \note This method is threadsafe + * + * \param user The Id of the networks owner + * \param networkId The Id of the network + * \param channel The name of the channel + * \param key The key of the channel (possibly empty) + */ + virtual void setPersistentChannelKey(UserId user, const NetworkId &networkId, const QString &channel, const QString &key) = 0; + /* Buffer handling */ //! Get the unique BufferInfo for the given combination of network and buffername for a user. @@ -183,20 +229,29 @@ class Storage : public QObject { * \return true if successfull */ virtual bool removeBuffer(const UserId &user, const BufferId &bufferId) = 0; + + //! Rename a Buffer + /** \param user The id of the buffer owner + * \param networkId The id of the network the buffer belongs to + * \param newName The new name of the buffer + * \param oldName The previous name of the buffer + * \return the BufferId of the affected buffer or an invalid BufferId if not successfull + */ + virtual BufferId renameBuffer(const UserId &user, const NetworkId &networkId, const QString &newName, const QString &oldName) = 0; //! Update the LastSeenDate for a Buffer /** This Method is used to make the LastSeenDate of a Buffer persistent * \param user The Owner of that Buffer * \param bufferId The buffer id - * \param seenDate Time the Buffer has been visited the last time + * \param MsgId The Message id of the message that has been just seen */ - virtual void setBufferLastSeen(UserId user, const BufferId &bufferId, const QDateTime &seenDate) = 0; + virtual void setBufferLastSeenMsg(UserId user, const BufferId &bufferId, const MsgId &msgId) = 0; - //! Get a Hash of all last seen dates. - /** This Method is called when the Quassel Core is started to restore the lastSeenDates + //! Get a Hash of all last seen message ids + /** This Method is called when the Quassel Core is started to restore the lastSeenMsgIds * \param user The Owner of the buffers */ - virtual QHash bufferLastSeenDates(UserId user) = 0; + virtual QHash bufferLastSeenMsgIds(UserId user) = 0; /* Message handling */ @@ -234,6 +289,8 @@ class Storage : public QObject { signals: //! Sent when a new BufferInfo is created, or an existing one changed somehow. void bufferInfoUpdated(UserId user, const BufferInfo &); + //! Sent when a Buffer was renamed + void bufferRenamed(const QString &newName, const QString &oldName); //! Sent when a new user has been added void userAdded(UserId, const QString &username); //! Sent when a user has been renamed @@ -241,8 +298,11 @@ class Storage : public QObject { //! Sent when a user has been removed void userRemoved(UserId); - public: - + protected: + //! when implementing a storage handler, use this method to crypt user passwords. + /** This guarantees compatibility with other storage handlers and allows easy migration + */ + QString cryptedPassword(const QString &password); };