Я использую Google облачную библиотеку cpp для загрузки/выгрузки файла с помощью UploadFile и DownloadToFile соответственно.
Как можно отменить передачу файла из другого потока?
Заранее спасибо!
Я использую Google облачную библиотеку cpp для загрузки/выгрузки файла с помощью UploadFile и DownloadToFile соответственно.
Как можно отменить передачу файла из другого потока?
Заранее спасибо!
Нет способа (в настоящее время) отменить текущую загрузку. Но вы можете написать что-то вроде этого, что легко отменить:
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());
}