/* */ #ifndef _D_MULTI_FILE_ALLOCATION_ITERATOR_H_ #define _D_MULTI_FILE_ALLOCATION_ITERATOR_H_ #include "FileAllocationIterator.h" class MultiDiskAdaptor; class FileEntry; extern typedef SharedHandle FileEntryHandle; extern typedef deque FileEntries; class MultiFileAllocationIterator:public FileAllocationIterator { private: MultiDiskAdaptor* _diskAdaptor; FileEntries _entries; FileEntryHandle _currentEntry; int64_t _offset; FileEntries makeFileEntries(const FileEntries& srcEntries, int32_t pieceLength) const; public: MultiFileAllocationIterator(MultiDiskAdaptor* diskAdaptor); virtual ~MultiFileAllocationIterator(); void prepareNextEntry(); virtual void allocateChunk(); virtual bool finished(); virtual int64_t getCurrentLength() { return _offset; } virtual int64_t getTotalLength(); const FileEntries& getFileEntries() const; }; typedef SharedHandle MultiFileAllocationIteratorHandle; #endif // _D_MULTI_FILE_ALLOCATION_ITERATOR_H_