The BufferSyncer cache is now purged when an unknown bufferId is encountered.
[quassel.git] / src / common / buffersyncer.h
index f57caae..0973828 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-08 by the Quassel IRC Team                         *
+ *   Copyright (C) 2005-09 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -29,6 +29,8 @@ class BufferSyncer : public SyncableObject {
 
 public:
   explicit BufferSyncer(QObject *parent);
+  explicit BufferSyncer(const QHash<BufferId, MsgId> &lastSeenMsg, QObject *parent);
+
   inline virtual const QMetaObject *syncMetaObject() const { return &staticMetaObject; }
 
   MsgId lastSeenMsg(BufferId buffer) const;
@@ -48,6 +50,8 @@ public slots:
   virtual inline void requestMergeBuffersPermanently(BufferId buffer1, BufferId buffer2) { emit mergeBuffersPermanentlyRequested(buffer1, buffer2); }
   virtual void mergeBuffersPermanently(BufferId buffer1, BufferId buffer2);
 
+  virtual inline void requestPurgeBufferIds() { emit purgeBufferIdsRequested(); }
+
 signals:
   void lastSeenMsgSet(BufferId buffer, const MsgId &msgId);
   void setLastSeenMsgRequested(BufferId buffer, const MsgId &msgId);
@@ -61,8 +65,11 @@ signals:
   void mergeBuffersPermanentlyRequested(BufferId buffer1, BufferId buffer2);
   void buffersPermanentlyMerged(BufferId buffer1, BufferId buffer2);
 
+  void purgeBufferIdsRequested();
+
 protected slots:
   bool setLastSeenMsg(BufferId buffer, const MsgId &msgId);
+  QList<BufferId> bufferIds() const { return _lastSeenMsg.keys(); }
 
 private:
   QHash<BufferId, MsgId> _lastSeenMsg;