static void UploadToS3()

in s3_file_uploader/include/s3_file_uploader/s3_file_uploader_action_server_handler.h [45:95]


  static void UploadToS3(S3UploadManager& upload_manager, const std::string& bucket, T& goal_handle)
  {
    if (!upload_manager.IsAvailable()) {
      goal_handle.setRejected();
      return;
    }
    goal_handle.setAccepted();
    auto goal = goal_handle.getGoal();
    std::vector<UploadDescription> uploads(goal->files.size());
    for (size_t i=0; i<goal->files.size(); i++) {
      uploads.at(i) = {
        goal->files[i],
        GenerateObjectKey(goal->files[i], goal->upload_location)
      };
    }
    std::vector<UploadDescription> completed_uploads;
  
    auto feedback_callback = [&](const std::vector<UploadDescription>& uploaded_files) {
      completed_uploads = uploaded_files;
      file_uploader_msgs::UploadFilesFeedback feedback;
      feedback.num_remaining = uploads.size() - uploaded_files.size();
      feedback.num_uploaded = uploaded_files.size();
      goal_handle.publishFeedback(feedback);
    };
  
    auto outcome = upload_manager.UploadFiles(
      uploads, bucket, feedback_callback);
    file_uploader_msgs::UploadFilesResult result;
    if (outcome.IsSuccess()) {
      result.result_code.success = static_cast<uint8_t>(true);
      result.result_code.error_code = std::numeric_limits<int16_t>::lowest();
    } else {
      result.result_code.success = static_cast<uint8_t>(false);
      result.result_code.error_code = static_cast<int16_t>(outcome.GetError().GetErrorType());
    }
    for (auto const& upload : completed_uploads) {
      result.files_uploaded.push_back(upload.object_key);
    }
    if (actionlib_msgs::GoalStatus::PREEMPTING == goal_handle.getGoalStatus().status) {
      // Goal cancel has been requested
      goal_handle.setCanceled(result, "");
      return;
    }
    if (!outcome.IsSuccess()) {
      std::stringstream ss;
      ss << "Goal was aborted due to error uploading files. Error Message: " << outcome.GetError().GetMessage();
      goal_handle.setAborted(result, ss.str());
    } else {
      goal_handle.setSucceeded(result, "");
    }
  }