From b08342525706b55bb9434ecef060373793243089 Mon Sep 17 00:00:00 2001 From: Chris Koeritz Date: Tue, 18 Sep 2012 00:17:26 -0400 Subject: [PATCH] cleaning up implementation a bit more. --- nucleus/library/filesystem/heavy_file_ops.cpp | 22 +++++++++++-------- nucleus/library/filesystem/heavy_file_ops.h | 3 ++- .../tentacles/file_transfer_tentacle.cpp | 12 ++++------ 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/nucleus/library/filesystem/heavy_file_ops.cpp b/nucleus/library/filesystem/heavy_file_ops.cpp index 6f5b19db..82d978fc 100644 --- a/nucleus/library/filesystem/heavy_file_ops.cpp +++ b/nucleus/library/filesystem/heavy_file_ops.cpp @@ -208,15 +208,15 @@ outcome heavy_file_operations::write_file_chunk(const astring &target, return OKAY; } -bool heavy_file_operations::advance(const filename_list &to_transfer, +basis::outcome heavy_file_operations::advance(const filename_list &to_transfer, file_transfer_header &last_action) { #ifdef DEBUG_HEAVY_FILE_OPS FUNCDEF("advance"); #endif int indy = to_transfer.locate(last_action._filename); - if (negative(indy)) return false; // error. - if (indy == to_transfer.elements() - 1) return false; // done. + if (negative(indy)) return BAD_INPUT; // error, file not found in list. + if (indy == to_transfer.elements() - 1) return FINISHED; // done. const file_info *currfile = to_transfer.get(indy + 1); last_action._filename = currfile->raw(); last_action._time = currfile->_time; @@ -228,7 +228,7 @@ bool heavy_file_operations::advance(const filename_list &to_transfer, last_action._byte_start = 0; last_action._length = 0; - return true; + return OKAY; } outcome heavy_file_operations::buffer_files(const astring &source_root, @@ -276,14 +276,16 @@ outcome heavy_file_operations::buffer_files(const astring &source_root, if (!current.good()) { // we need to skip this file. LOG(astring("skipping bad file: ") + full_file); - if (!advance(to_transfer, last_action)) break; + to_return = advance(to_transfer, last_action); + if (to_return != OKAY) break; continue; } if (last_action._byte_start + last_action._length >= current.length()) { -LOG(astring("finished handling file: ") + full_file); +LOG(astring("finished stuffing file: ") + full_file); // this file is done now. go to the next one. - if (!advance(to_transfer, last_action)) break; + to_return = advance(to_transfer, last_action); + if (to_return != OKAY) break; continue; } @@ -302,7 +304,8 @@ LOG(astring("finished handling file: ") + full_file); if (bytes_read != new_len) { if (!bytes_read) { // some kind of problem reading the file. - if (!advance(to_transfer, last_action)) break; + to_return = advance(to_transfer, last_action); + if (to_return != OKAY) break; continue; } //why would this happen? just complain, i guess. @@ -319,7 +322,8 @@ LOG(astring("finished handling file: ") + full_file); if (!current.length()) { // ensure we don't get stuck redoing zero length files, which we allowed // to go past their end above (since otherwise we'd never see them). - if (!advance(to_transfer, last_action)) break; + to_return = advance(to_transfer, last_action); + if (to_return != OKAY) break; continue; } diff --git a/nucleus/library/filesystem/heavy_file_ops.h b/nucleus/library/filesystem/heavy_file_ops.h index 8cfdc42f..028bb8e2 100644 --- a/nucleus/library/filesystem/heavy_file_ops.h +++ b/nucleus/library/filesystem/heavy_file_ops.h @@ -107,7 +107,8 @@ public: out before bytes are stored into it; this is not an additive operation. */ private: - static bool advance(const filename_list &to_transfer, file_transfer_header &last_action); + static basis::outcome advance(const filename_list &to_transfer, + file_transfer_header &last_action); //!< advances to the next file in the transfer list "to_transfer". }; diff --git a/octopi/library/tentacles/file_transfer_tentacle.cpp b/octopi/library/tentacles/file_transfer_tentacle.cpp index 717d2761..ee0937b2 100644 --- a/octopi/library/tentacles/file_transfer_tentacle.cpp +++ b/octopi/library/tentacles/file_transfer_tentacle.cpp @@ -620,8 +620,7 @@ outcome file_transfer_tentacle::handle_storage_request (_correspondences->translate(the_rec->_src_root), *the_rec->_diffs, the_rec->_last_sent, resp->_packed_data, _maximum_transfer); if (bufret == heavy_file_operations::FINISHED) { -//here we go. finish by setting command to conclude. -LOG("got the final marker saying heavy file ops done!"); + // finish by setting command to be a conclude marker. the_rec->_done = true; resp->_command = file_transfer_infoton::CONCLUDE_TRANSFER_MARKER; bufret = OKAY; // now it's no longer an exceptional outcome. @@ -632,16 +631,13 @@ LOG("got the final marker saying heavy file ops done!"); + req._dest_root); } -// if ( (bufret == OKAY) && !resp->_packed_data.length() ) { -// LOG(astring("failed to pack any data for file: ") + req._src_root); -// } - - if (!the_rec->_done && (bufret == OKAY) && !resp->_packed_data.length() ) { - // seems like the transfer is done. +//can remove this block if stops saying it. + if ((bufret == OKAY) && !resp->_packed_data.length() ) { LOG("marking empty transfer as done; why not caught above at FINISHED check?"); the_rec->_done = true; resp->_command = file_transfer_infoton::CONCLUDE_TRANSFER_MARKER; } +//end of can remove. resp->_request = false; // it's a response now. store_product(resp, item_id); -- 2.34.1