/
dinruspro
/
reference
Обзор
Документация
Войти
/
dinruspro
/
reference
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
SshBasics/SFtpMT2.cpp
36 строк
968 B
EnergonV
Справка по коду перекочевала в репозиторий (наконец-то!)
09 янв 2024, 19:20
09 янв 2024, 19:20
e333663
Код
Авторство
О чём код?
#include "SshBasics.h" // SFtpAsyncGet2: Demonstrates multiple file downloads, using a parallelization loop. void SFtpAsyncGet2(SshSession& session) { const int MAXDOWNLOADS = 4; const char *path = "/pub/example/"; SFtp::DirList ls; { // Get a remote dir listing. SFtp browser(session); if(!browser.ListDir(path, ls)) { RLOG(browser.GetErrorDesc()); return; } } // Filter the dir list. auto files = FilterRange(ls, [](const SFtp::DirEntry& e) { return e.IsFile() && e.GetSize() <= 65536; }); // Loop over. CoFor(min(files.GetCount(), MAXDOWNLOADS), [&files, &path, &session](int i){ const SFtp::DirEntry& e = files[i]; String fpath = AppendFileName(path, e.GetName()); RLOG("Downloading " << fpath); SFtp sftp(session); String file = sftp.LoadFile(fpath); if(sftp.IsError()) RLOG(Format("Worker #%d: %s", sftp.GetId(), sftp.GetErrorDesc())); else RLOG("File " << e.GetName() << " is successfully downloaded."); }); }