23 #include <ktorrent_export.h>
24 #include <util/constants.h>
25 #include <torrent/torrent.h>
26 #include <diskio/piecedata.h>
38 class PreallocationThread;
39 class TorrentFileInterface;
52 Cache(
Torrent & tor,
const QString & tmpdir,
const QString & datadir);
243 PieceData::Ptr findPiece(
Chunk* c,Uint32 off,Uint32 len,
bool read_only);
244 void insertPiece(
Chunk* c,PieceData::Ptr p);
245 void clearPieceCache();
246 void cleanupPieceCache();
247 void saveMountPoints(
const QSet<QString> & mp);
253 bool preexisting_files;
254 Uint32 mmap_failures;
256 typedef QMultiMap<Chunk*,PieceData::Ptr> PieceCache;
257 PieceCache piece_cache;
259 QSet<QString> mount_points;
261 static bool preallocate_files;
262 static bool preallocate_fully;
static void setPreallocationEnabled(bool on)
virtual void changeOutputPath(const QString &outputpath)=0
virtual void saveFileMap()=0
virtual bool hasMissingFiles(QStringList &sl)=0
static void setPreallocateFully(bool on)
Keep track of a piece of the file.
virtual void downloadStatusChanged(TorrentFile *, bool)
Does nothing, can be overridden to be alerted of download status changes of a TorrentFile.
void clearPieces(Chunk *c)
virtual Job * deleteDataFiles()=0
virtual void savePiece(PieceData::Ptr piece)=0
static bool mappedModeAllowed()
bool hasExistingFiles() const
See if the download has existing files.
bool isStorageMounted(QStringList &missing)
Is the storage mounted ?
static bool preallocateFully()
virtual Job * moveDataFiles(const QString &ndir)=0
virtual void moveDataFilesFinished(const QMap< TorrentFileInterface *, QString > &files, Job *job)
virtual void moveDataFilesFinished(Job *job)=0
QString getDataDir() const
Get the datadir.
Manages the temporary data.
virtual void preparePreallocation(PreallocationThread *prealloc)=0
virtual PieceData::Ptr preparePiece(Chunk *c, Uint32 off, Uint32 length)=0
virtual void changeTmpDir(const QString &ndir)
virtual PieceData::Ptr loadPiece(Chunk *c, Uint32 off, Uint32 length)=0
virtual bool getMountPoints(QSet< QString > &mps)=0
virtual Uint64 diskUsage()=0
virtual Job * moveDataFiles(const QMap< TorrentFileInterface *, QString > &files)
virtual void loadFileMap()=0
virtual QString getOutputPath() const =0
static bool preallocationEnabled()