Mercurial > dedupe
changeset 13:9463c0c22969
Refactor computeHash into separate function.
| author | Tom Fredrik Blenning Klaussen <bfg@sim.no> |
|---|---|
| date | Fri, 24 Aug 2012 22:57:19 +0200 |
| parents | 0114be0b5ad4 |
| children | e60d6caceb62 |
| files | FileDBLink.cpp FileDBLink.hpp |
| diffstat | 2 files changed, 15 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/FileDBLink.cpp Fri Aug 24 22:56:43 2012 +0200 +++ b/FileDBLink.cpp Fri Aug 24 22:57:19 2012 +0200 @@ -35,12 +35,15 @@ addFile(fileinfo.absoluteFilePath(), fileinfo.size(), fileinfo.lastModified()); } -void FileDBLink::addFile(const QString& path, qint64 size, const QDateTime& lastModified) +QByteArray FileDBLink::computeHash(const QString& path, QCryptographicHash::Algorithm algorithm) { - QCryptographicHash hash( QCryptographicHash::Sha1 ); + const static uint buffersize = 8192; + QCryptographicHash hash(algorithm); QFile file(path); if ( file.open( QIODevice::ReadOnly ) ) { - hash.addData( file.readAll() ); + while(!file.atEnd()){ + hash.addData(file.read(buffersize)); + } } else { QString errorMsg = path + ": " + file.errorString(); @@ -51,10 +54,14 @@ default: throw IOException(errorMsg); } - } - - addFile(path, size, lastModified, hash.result()); + } + return hash.result(); +} + +void FileDBLink::addFile(const QString& path, qint64 size, const QDateTime& lastModified) +{ + addFile(path, size, lastModified, computeHash(path)); } void FileDBLink::updateFile(const QFileInfo& fileinfo) @@ -64,23 +71,7 @@ void FileDBLink::updateFile(const QString& path, qint64 size, const QDateTime& lastModified) { - QCryptographicHash hash( QCryptographicHash::Sha1 ); - QFile file(path); - if ( file.open( QIODevice::ReadOnly ) ) { - hash.addData( file.readAll() ); - } - else { - QString errorMsg = path + ": " + file.errorString(); - - switch (file.error()) { - case QFile::PermissionsError: - throw PermissionException(errorMsg); - default: - throw IOException(errorMsg); - } - } - - updateFile(path, size, lastModified, hash.result()); + updateFile(path, size, lastModified, computeHash(path)); } const QList<QSharedPointer<FileDBLink::DBInfo> > FileDBLink::sortOn(const QString& prefix, SORTORDER order, bool extended)
--- a/FileDBLink.hpp Fri Aug 24 22:56:43 2012 +0200 +++ b/FileDBLink.hpp Fri Aug 24 22:57:19 2012 +0200 @@ -89,6 +89,7 @@ static QSharedPointer<DBInfo> computedValue(const QSharedPointer<DBInfo>& info, const QList<QSharedPointer<DBInfo> >&); + static QByteArray computeHash(const QString& path, QCryptographicHash::Algorithm = QCryptographicHash::Sha1); public: enum DBStatus { NONE = 0, MTIME_DIFFERENT, SAME};
