/* */ #include "DiskAdaptor.h" #include "DlAbortEx.h" #include "LogFactory.h" DiskAdaptor::DiskAdaptor(DiskWriter* diskWriter):diskWriter(diskWriter) { logger = LogFactory::getInstance(); } DiskAdaptor::~DiskAdaptor() { delete diskWriter; } void DiskAdaptor::openFile() { diskWriter->openFile(getFilePath()); } void DiskAdaptor::closeFile() { diskWriter->closeFile(); } void DiskAdaptor::openExistingFile() { diskWriter->openExistingFile(getFilePath()); } void DiskAdaptor::initAndOpenFile() { diskWriter->initAndOpenFile(getFilePath()); } void DiskAdaptor::writeData(const char* data, int len, long long int position) { diskWriter->writeData(data, len, position); } int DiskAdaptor::readData(char* data, int len, long long int position) { return diskWriter->readData(data, len, position); } string DiskAdaptor::sha1Sum(long long int offset, long long int length) { return diskWriter->sha1Sum(offset, length); } FileEntryHandle DiskAdaptor::getFileEntryFromPath(const string& fileEntryPath) const { for(FileEntries::const_iterator itr = fileEntries.begin(); itr != fileEntries.end(); itr++) { if((*itr)->getPath() == fileEntryPath) { return *itr; } } throw new DlAbortEx("no such file entry <%s>", fileEntryPath.c_str()); } bool DiskAdaptor::addDownloadEntry(const string& fileEntryPath) { for(FileEntries::iterator itr = fileEntries.begin(); itr != fileEntries.end(); itr++) { if((*itr)->getPath() == fileEntryPath) { (*itr)->setRequested(true); return true; } } return false; } bool DiskAdaptor::addDownloadEntry(int index) { if(fileEntries.size() <= (unsigned int)index) { return false; } fileEntries.at(index)->setRequested(true); return true; } void DiskAdaptor::addAllDownloadEntry() { for(FileEntries::iterator itr = fileEntries.begin(); itr != fileEntries.end(); itr++) { (*itr)->setRequested(true); } } void DiskAdaptor::removeAllDownloadEntry() { for(FileEntries::iterator itr = fileEntries.begin(); itr != fileEntries.end(); itr++) { (*itr)->setRequested(false); } }