added missing macros
[quassel.git] / src / client / backlogrequester.h
index 2ff1951..e813c6c 100644 (file)
@@ -32,35 +32,43 @@ class ClientBacklogManager;
 
 class BacklogRequester {
 public:
-  enum RequesterTypes {
+  enum RequesterType {
     InvalidRequester = 0,
     PerBufferFixed,
     PerBufferUnread,
     GlobalUnread
   };
 
-  BacklogRequester(bool buffering, ClientBacklogManager *backlogManger);
+  BacklogRequester(bool buffering, RequesterType requesterType, ClientBacklogManager *backlogManger);
   virtual inline ~BacklogRequester() {}
 
   inline bool isBuffering() { return _isBuffering; }
+  inline RequesterType type() { return _requesterType; }
   inline const QList<Message> &bufferedMessages() { return _bufferedMessages; }
 
-  //! returns false if it was the last missing backlogpart
-  bool buffer(BufferId bufferId, const MessageList &messages);
-  
-  virtual void requestBacklog() = 0;
+  inline int buffersWaiting() const { return _buffersWaiting.count(); }
+  inline int totalBuffers() const { return _totalBuffers; }
+
+  bool buffer(BufferId bufferId, const MessageList &messages); //! returns false if it was the last missing backlogpart
+
+  virtual void requestBacklog(const BufferIdList &bufferIds) = 0;
+  virtual inline void requestInitialBacklog() { requestBacklog(allBufferIds()); }
+
+  virtual void flushBuffer();
 
 protected:
-  inline QList<BufferId> allBufferIds() const { return Client::networkModel()->allBufferIds(); }
-  inline void setWaitingBuffers(const QList<BufferId> &buffers) { _buffersWaiting = buffers.toSet(); }
-  inline void setWaitingBuffers(const QSet<BufferId> &buffers) { _buffersWaiting = buffers; }
-  inline void addWaitingBuffer(BufferId buffer) { _buffersWaiting << buffer; }
+  BufferIdList allBufferIds() const;
+  inline void setWaitingBuffers(const QList<BufferId> &buffers) { setWaitingBuffers(buffers.toSet()); }
+  void setWaitingBuffers(const QSet<BufferId> &buffers);
+  void addWaitingBuffer(BufferId buffer);
 
   ClientBacklogManager *backlogManager;
 
 private:
   bool _isBuffering;
+  RequesterType _requesterType;
   MessageList _bufferedMessages;
+  int _totalBuffers;
   QSet<BufferId> _buffersWaiting;
 };
 
@@ -70,7 +78,7 @@ private:
 class FixedBacklogRequester : public BacklogRequester {
 public:
   FixedBacklogRequester(ClientBacklogManager *backlogManager);
-  virtual void requestBacklog();
+  virtual void requestBacklog(const BufferIdList &bufferIds);
 
 private:
   int _backlogCount;
@@ -82,7 +90,8 @@ private:
 class GlobalUnreadBacklogRequester : public BacklogRequester {
 public:
   GlobalUnreadBacklogRequester(ClientBacklogManager *backlogManager);
-  virtual void requestBacklog();
+  virtual void requestInitialBacklog();
+  virtual void requestBacklog(const BufferIdList &) {}
 
 private:
   int _limit;
@@ -95,7 +104,7 @@ private:
 class PerBufferUnreadBacklogRequester : public BacklogRequester {
 public:
   PerBufferUnreadBacklogRequester(ClientBacklogManager *backlogManager);
-  virtual void requestBacklog();
+  virtual void requestBacklog(const BufferIdList &bufferIds);
 
 private:
   int _limit;