void Receiver::fixAndCloseTransferLog()

in Receiver.cpp [520:562]


void Receiver::fixAndCloseTransferLog(bool transferSuccess) {
  if (!options_.enable_download_resumption) {
    return;
  }

  bool isInconsistentDirectory =
      (transferLogManager_->getResumptionStatus() == INCONSISTENT_DIRECTORY);
  bool isInvalidLog =
      (transferLogManager_->getResumptionStatus() == INVALID_LOG);
  if (transferSuccess && isInconsistentDirectory) {
    // write log header to validate directory in case of success
    WDT_CHECK(options_.resume_using_dir_tree);
    transferLogManager_->writeLogHeader();
  }

  if (options_.enable_transfer_log_compaction && transferSuccess &&
      !isInvalidLog && options_.keep_transfer_log &&
      !options_.resume_using_dir_tree) {
    transferLogManager_->compactLog();
  } else {
    WLOG(INFO) << "Skip compacting transfer log";
    WVLOG(1) << "options_.enable_transfer_log_compaction="
             << options_.enable_transfer_log_compaction
             << " isInvalidLog=" << isInvalidLog
             << " options_.keep_transfer_log=" << options_.keep_transfer_log
             << " options_.resume_using_dir_tree="
             << options_.resume_using_dir_tree;
  }

  transferLogManager_->closeLog();

  if (!transferSuccess) {
    return;
  }

  if (isInvalidLog) {
    transferLogManager_->renameBuggyLog();
  }

  if (!options_.keep_transfer_log) {
    transferLogManager_->unlink();
  }
}