From 4620dc72fec55afa0548390fee5a2b699c56e65f Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Sun, 22 Dec 2024 08:40:25 -0600 Subject: [PATCH] refactor --- .../file_manager/ring_buffer_open_file.cpp | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/repertory/librepertory/src/file_manager/ring_buffer_open_file.cpp b/repertory/librepertory/src/file_manager/ring_buffer_open_file.cpp index 76c7958f..5ab23358 100644 --- a/repertory/librepertory/src/file_manager/ring_buffer_open_file.cpp +++ b/repertory/librepertory/src/file_manager/ring_buffer_open_file.cpp @@ -70,23 +70,23 @@ ring_buffer_open_file::ring_buffer_open_file(std::string buffer_directory, buffer_directory = utils::path::absolute(buffer_directory); if (not utils::file::directory(buffer_directory).create_directory()) { - throw std::runtime_error("failed to create buffer directory|path|" + - buffer_directory + "|err|" + - std::to_string(utils::get_last_error_code())); + throw std::runtime_error( + fmt::format("failed to create buffer directory|path|{}|err|{}", + buffer_directory, utils::get_last_error_code())); } fsi_.source_path = utils::path::combine(buffer_directory, {utils::create_uuid_string()}); nf_ = utils::file::file::open_or_create_file(fsi_.source_path); if (not *nf_) { - throw std::runtime_error("failed to create buffer file|err|" + - std::to_string(utils::get_last_error_code())); + throw std::runtime_error(fmt::format("failed to create buffer file|err|{}", + utils::get_last_error_code())); } if (not nf_->truncate(ring_state_.size() * chunk_size)) { nf_->close(); - throw std::runtime_error("failed to resize buffer file|err|" + - std::to_string(utils::get_last_error_code())); + throw std::runtime_error(fmt::format("failed to resize buffer file|err|{}", + utils::get_last_error_code())); } } @@ -130,12 +130,12 @@ auto ring_buffer_open_file::download_chunk(std::size_t chunk) -> api_error { if (res == api_error::success) { res = do_io([&]() -> api_error { std::size_t bytes_written{}; - if (not nf_->write(buffer, (chunk % ring_state_.size()) * chunk_size_, - &bytes_written)) { - return api_error::os_error; + if (nf_->write(buffer, (chunk % ring_state_.size()) * chunk_size_, + &bytes_written)) { + return api_error::success; } - return api_error::success; + return api_error::os_error; }); } @@ -263,30 +263,30 @@ auto ring_buffer_open_file::read(std::size_t read_size, reset_timeout(); res = download_chunk(chunk); - if (res == api_error::success) { - const auto to_read = std::min( - static_cast(chunk_size_ - read_offset), read_size); - res = do_io([this, &buffer, &chunk, &data, read_offset, - &to_read]() -> api_error { - std::size_t bytes_read{}; - auto ret = - nf_->read(buffer, ((chunk % ring_state_.size()) * chunk_size_), - &bytes_read) - ? api_error::success - : api_error::os_error; - if (ret == api_error::success) { - data.insert(data.end(), - buffer.begin() + static_cast(read_offset), - buffer.begin() + - static_cast(read_offset + to_read)); - reset_timeout(); - } - - return ret; - }); - read_offset = 0U; - read_size -= to_read; + if (res != api_error::success) { + continue; } + + const auto to_read = std::min( + static_cast(chunk_size_ - read_offset), read_size); + res = do_io([this, &buffer, &chunk, &data, read_offset, + &to_read]() -> api_error { + std::size_t bytes_read{}; + auto ret = nf_->read(buffer, ((chunk % ring_state_.size()) * chunk_size_), + &bytes_read) + ? api_error::success + : api_error::os_error; + if (ret == api_error::success) { + data.insert( + data.end(), buffer.begin() + static_cast(read_offset), + buffer.begin() + static_cast(read_offset + to_read)); + reset_timeout(); + } + + return ret; + }); + read_offset = 0U; + read_size -= to_read; } return res;