MCPcopy Create free account
hub / github.com/XorTroll/Goldleaf / DoCopyDirectoryProgress

Function DoCopyDirectoryProgress

Goldleaf/source/fs/fs_Explorer.cpp:157–179  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

155 namespace {
156
157 void DoCopyDirectoryProgress(Explorer *exp, u64 &cur_done_size, const u64 total_size, const std::string &dir, const std::string &new_dir, CopyDirectoryFileStartCallback file_start_cb, CopyDirectoryFileProgressCallback file_prog_cb) {
158 const auto full_dir = exp->MakeFull(dir);
159 auto new_exp = GetExplorerForPath(new_dir);
160 const auto full_new_dir = new_exp->MakeFull(new_dir);
161 new_exp->CreateDirectory(full_new_dir);
162
163 for(const auto &copy_file_name: exp->GetFiles(full_dir)) {
164 const auto copy_file = full_dir + "/" + copy_file_name;
165 const auto new_file = full_new_dir + "/" + copy_file_name;
166 exp->CopyFileProgress(copy_file, new_file, [&](const size_t file_size) {
167 file_start_cb(file_size, copy_file, new_file);
168 }, [&](const size_t cur_rw_size) {
169 file_prog_cb(cur_rw_size);
170 });
171 cur_done_size += exp->GetFileSize(copy_file);
172 }
173
174 for(const auto &copy_dir_name: exp->GetDirectories(full_dir)) {
175 const auto copy_dir = full_dir + "/" + copy_dir_name;
176 const auto new_dir = full_new_dir + "/" + copy_dir_name;
177 DoCopyDirectoryProgress(exp, cur_done_size, total_size, copy_dir, new_dir, file_start_cb, file_prog_cb);
178 }
179 }
180
181 }
182

Callers 1

CopyDirectoryProgressMethod · 0.85

Calls 7

GetExplorerForPathFunction · 0.85
MakeFullMethod · 0.80
CopyFileProgressMethod · 0.80
CreateDirectoryMethod · 0.45
GetFilesMethod · 0.45
GetFileSizeMethod · 0.45
GetDirectoriesMethod · 0.45

Tested by

no test coverage detected