Как отменить загрузку / выгрузку файлов в клиентских библиотеках C ++ для облачных сервисов Google - PullRequest
0 голосов
/ 14 апреля 2020

Я использую Google Облако cpp Библиотека , чтобы загрузить / загрузить файл, используя UploadFile и DownloadToFile , соответственно.

Как можно отменить передачу файла из другого потока?

Заранее спасибо!

1 Ответ

1 голос
/ 15 апреля 2020

Нет способа (в настоящее время) отменить загрузку в процессе. Но вы могли бы написать что-то вроде этого, что легко отменить:

void MyDownload(
    gcs::Client client, std::string bucket_name, std::string object_name,
    std::string filename, bool& canceled) {
  auto reader = client.ReadObject(bucket_name, object_name);
  auto writer = std::ofstream(filename);
  std::vector<char> buffer(4 * 1024 * 1024L);
  do {
    if (canceled) return; // TODO - not thread safe
    reader.read(buffer.data(), buffer.size());
    writer.write(buffer.data(), reader.gcount());
  } while(not reader.eof() and reader.good() and writer.good());
}
...