ring buffer selection fixes

This commit is contained in:
Scott E. Graves 2024-12-22 12:50:28 -06:00
parent 086feaf7a5
commit 18b865bbea

View File

@ -407,17 +407,23 @@ auto file_manager::open(
} }
if (not closeable_file) { if (not closeable_file) {
auto buffer_directory = auto buffer_directory{
utils::path::combine(config_.get_data_directory(), {"buffer"}); utils::path::combine(config_.get_data_directory(), {"buffer"}),
auto chunk_size = };
utils::encryption::encrypting_reader::get_data_chunk_size();
auto ring_size = auto chunk_size{
(static_cast<std::uint64_t>(config_.get_ring_buffer_file_size() * utils::encryption::encrypting_reader::get_data_chunk_size(),
1024UL * 1024UL) / };
chunk_size);
auto ring_buffer_file_size{
static_cast<std::uint64_t>(config_.get_ring_buffer_file_size()) *
1024UL * 1024UL * 1024UL,
};
auto ring_size{ring_buffer_file_size / chunk_size};
const auto get_download_type = const auto get_download_type =
[this, &buffer_directory, &chunk_size, &fsi, [this, &buffer_directory, &chunk_size, &fsi, &ring_buffer_file_size,
&ring_size](download_type type) -> download_type { &ring_size](download_type type) -> download_type {
if (fsi.size == 0U) { if (fsi.size == 0U) {
return download_type::fallback; return download_type::fallback;
@ -441,15 +447,15 @@ auto file_manager::open(
} }
if (not utils::file::directory{buffer_directory}.create_directory()) { if (not utils::file::directory{buffer_directory}.create_directory()) {
utils::error::raise_api_path_error( utils::error::raise_error(
function_name, fsi.api_path, utils::get_last_error_code(), function_name, utils::get_last_error_code(),
fmt::format("failed to create buffer directory|sp|{}", fmt::format("failed to create buffer directory|sp|{}",
buffer_directory)); buffer_directory));
return download_type::direct; return download_type::direct;
} }
auto free_space = utils::file::get_free_drive_space(buffer_directory); auto free_space = utils::file::get_free_drive_space(buffer_directory);
if (config_.get_ring_buffer_file_size() < free_space) { if (ring_buffer_file_size < free_space) {
return download_type::ring_buffer; return download_type::ring_buffer;
} }