/* */ #ifndef D_ADAPTIVE_FILE_ALLOCATION_ITERATOR_H #define D_ADAPTIVE_FILE_ALLOCATION_ITERATOR_H #include "FileAllocationIterator.h" namespace aria2 { class BinaryStream; class Logger; class AdaptiveFileAllocationIterator:public FileAllocationIterator { private: SharedHandle allocator_; BinaryStream* stream_; off_t offset_; uint64_t totalLength_; Logger* logger_; public: AdaptiveFileAllocationIterator (BinaryStream* stream, off_t offset, uint64_t totalLength); virtual ~AdaptiveFileAllocationIterator(); virtual void allocateChunk(); virtual bool finished(); virtual off_t getCurrentLength() { if(!allocator_) { return offset_; } else { return allocator_->getCurrentLength(); } } virtual uint64_t getTotalLength() { return totalLength_; } }; } // namespace aria2 #endif // D_ADAPTIVE_FILE_ALLOCATION_ITERATOR_H