void PropagateUploadFileQNAM::slotComputeTransmissionChecksum(const QByteArray& contentChecksumType, const QByteArray& contentChecksum) { _item->_contentChecksum = contentChecksum; _item->_contentChecksumType = contentChecksumType; _stopWatch.addLapTime(QLatin1String("ContentChecksum")); _stopWatch.start(); // Reuse the content checksum as the transmission checksum if possible const auto supportedTransmissionChecksums = _propagator->account()->capabilities().supportedChecksumTypes(); if (supportedTransmissionChecksums.contains(contentChecksumType)) { slotStartUpload(contentChecksumType, contentChecksum); return; } // Compute the transmission checksum. auto computeChecksum = new ComputeChecksum(this); if (uploadChecksumEnabled()) { computeChecksum->setChecksumType(_propagator->account()->capabilities().uploadChecksumType()); } else { computeChecksum->setChecksumType(QByteArray()); } connect(computeChecksum, SIGNAL(done(QByteArray,QByteArray)), SLOT(slotStartUpload(QByteArray,QByteArray))); const QString filePath = _propagator->getFilePath(_item->_file); computeChecksum->start(filePath); }
void PropagateUploadFileQNAM::start() { if (_propagator->_abortRequested.fetchAndAddRelaxed(0)) { return; } const QString filePath = _propagator->getFilePath(_item->_file); // remember the modtime before checksumming to be able to detect a file // change during the checksum calculation _item->_modtime = FileSystem::getModTime(filePath); _stopWatch.start(); // do whatever is needed to add a checksum to the http upload request. // in any case, the validator will emit signal startUpload to let the flow // continue in slotStartUpload here. TransmissionChecksumValidator *validator = new TransmissionChecksumValidator(filePath, this); connect(validator, SIGNAL(validated(QByteArray)), this, SLOT(slotStartUpload(QByteArray))); validator->uploadValidation(); }