view MemoryDBLink.hpp @ 101:6c6f3a5f96ea

Better support for batch operations.
author Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
date Thu, 13 Feb 2014 15:19:37 +0100
parents f49023c61dac
children
line wrap: on
line source

#ifndef MEMORYDBLINK_HPP
#define MEMORYDBLINK_HPP

#include "FileDBLink.hpp"

#include <QtCore/QMap>

class MemoryDBLink : public FileDBLink {
public:
  bool exists(const QString& path)
  {
    return (entries.contains(path));
  }

  QStringList toStringList();

  virtual void addFile(const QString& path, quint64 size,
		       const QDateTime& dtime, const QByteArray& hash,
		       bool lazy = false);
  virtual void updateFile(const QString& path, quint64 size,
			  const QDateTime& dtime, const QByteArray& hash,
			  bool lazy = false);
  DBStatus existsWithMtime(const QString& path, const QDateTime& mtime);

  const QList<dbinf_ptr_t > values(const QString& prefix = QString() ) const;
  virtual void keepOnlyFromPrefix(const QString& prefix,
				  const QStringList& files,
				  bool lazy = false);
  virtual void deleteFileFromDB(const QString& path, bool lazy = false);


private:
  void addFile(const DBInfo& info);
  bool tryAddFile(const DBInfo& info);
  void updateFile(const DBInfo& dbinfo);

  QMap<QString, dbinf_ptr_t > entries;
};

#endif //MEMORYDBLINK_HPP