/* */ #include "AbstractSingleDiskAdaptor.h" #include "File.h" #include "SingleFileAllocationIterator.h" #include "DiskWriter.h" namespace aria2 { AbstractSingleDiskAdaptor::AbstractSingleDiskAdaptor():totalLength(0) {} AbstractSingleDiskAdaptor::~AbstractSingleDiskAdaptor() {} void AbstractSingleDiskAdaptor::initAndOpenFile() { diskWriter->initAndOpenFile(getFilePath(), totalLength); } void AbstractSingleDiskAdaptor::openFile() { diskWriter->openFile(getFilePath(), totalLength); } void AbstractSingleDiskAdaptor::closeFile() { diskWriter->closeFile(); } void AbstractSingleDiskAdaptor::openExistingFile() { diskWriter->openExistingFile(getFilePath(), totalLength); } void AbstractSingleDiskAdaptor::writeData(const unsigned char* data, size_t len, off_t offset) { diskWriter->writeData(data, len, offset); } ssize_t AbstractSingleDiskAdaptor::readData(unsigned char* data, size_t len, off_t offset) { return diskWriter->readData(data, len, offset); } bool AbstractSingleDiskAdaptor::fileExists() { return File(getFilePath()).exists(); } uint64_t AbstractSingleDiskAdaptor::size() { return diskWriter->size(); } void AbstractSingleDiskAdaptor::truncate(uint64_t length) { diskWriter->truncate(length); } FileAllocationIteratorHandle AbstractSingleDiskAdaptor::fileAllocationIterator() { SingleFileAllocationIteratorHandle h (new SingleFileAllocationIterator(this, size(), totalLength)); h->init(); return h; } void AbstractSingleDiskAdaptor::enableDirectIO() { diskWriter->enableDirectIO(); } void AbstractSingleDiskAdaptor::disableDirectIO() { diskWriter->disableDirectIO(); } bool AbstractSingleDiskAdaptor::directIOAllowed() const { return diskWriter->directIOAllowed(); } void AbstractSingleDiskAdaptor::cutTrailingGarbage() { if(File(getFilePath()).size() > totalLength) { diskWriter->truncate(totalLength); } } void AbstractSingleDiskAdaptor::setDiskWriter(const DiskWriterHandle& diskWriter) { this->diskWriter = diskWriter; } DiskWriterHandle AbstractSingleDiskAdaptor::getDiskWriter() const { return diskWriter; } void AbstractSingleDiskAdaptor::setTotalLength(const uint64_t& totalLength) { this->totalLength = totalLength; } uint64_t AbstractSingleDiskAdaptor::getTotalLength() const { return totalLength; } } // namespace aria2