extract common behavior
This commit is contained in:
@@ -460,6 +460,19 @@ auto base_provider::get_total_item_count() const -> std::uint64_t {
|
||||
return ret;
|
||||
}
|
||||
|
||||
auto base_provider::get_used_drive_space() const -> std::uint64_t {
|
||||
try {
|
||||
auto used_space = get_used_drive_space_impl();
|
||||
get_file_mgr()->update_used_space(used_space);
|
||||
return used_space;
|
||||
} catch (const std::exception &ex) {
|
||||
utils::error::raise_error(__FUNCTION__, ex,
|
||||
"failed to get used drive space");
|
||||
}
|
||||
|
||||
return 0U;
|
||||
}
|
||||
|
||||
auto base_provider::is_file_writeable(const std::string &api_path) const
|
||||
-> bool {
|
||||
bool exists{};
|
||||
|
@@ -539,7 +539,7 @@ auto s3_provider::get_total_drive_space() const -> std::uint64_t {
|
||||
return std::numeric_limits<std::int64_t>::max() / std::int64_t(2);
|
||||
}
|
||||
|
||||
auto s3_provider::get_used_drive_space() const -> std::uint64_t {
|
||||
auto s3_provider::get_used_drive_space_impl() const -> std::uint64_t {
|
||||
std::string response_data;
|
||||
long response_code{};
|
||||
if (not get_object_list(response_data, response_code)) {
|
||||
|
@@ -351,42 +351,32 @@ auto sia_provider::get_total_drive_space() const -> std::uint64_t {
|
||||
return 0U;
|
||||
}
|
||||
|
||||
auto sia_provider::get_used_drive_space() const -> std::uint64_t {
|
||||
// TODO adjust size based on open files
|
||||
try {
|
||||
curl::requests::http_get get{};
|
||||
get.allow_timeout = true;
|
||||
get.path = "/api/bus/stats/objects";
|
||||
auto sia_provider::get_used_drive_space_impl() const -> std::uint64_t {
|
||||
curl::requests::http_get get{};
|
||||
get.allow_timeout = true;
|
||||
get.path = "/api/bus/stats/objects";
|
||||
|
||||
json object_data{};
|
||||
get.response_handler = [&object_data](const data_buffer &data,
|
||||
long response_code) {
|
||||
if (response_code == http_error_codes::ok) {
|
||||
object_data = nlohmann::json::parse(data.begin(), data.end());
|
||||
}
|
||||
};
|
||||
|
||||
long response_code{};
|
||||
stop_type stop_requested{};
|
||||
if (not get_comm().make_request(get, response_code, stop_requested)) {
|
||||
return 0U;
|
||||
json object_data{};
|
||||
get.response_handler = [&object_data](const data_buffer &data,
|
||||
long response_code) {
|
||||
if (response_code == http_error_codes::ok) {
|
||||
object_data = nlohmann::json::parse(data.begin(), data.end());
|
||||
}
|
||||
};
|
||||
|
||||
if (response_code != http_error_codes::ok) {
|
||||
utils::error::raise_error(__FUNCTION__, response_code,
|
||||
"failed to get used drive space");
|
||||
return 0U;
|
||||
}
|
||||
|
||||
auto used_space = object_data["totalObjectsSize"].get<std::uint64_t>();
|
||||
get_file_mgr()->update_used_space(used_space);
|
||||
return used_space;
|
||||
} catch (const std::exception &ex) {
|
||||
utils::error::raise_error(__FUNCTION__, ex,
|
||||
"failed to get used drive space");
|
||||
long response_code{};
|
||||
stop_type stop_requested{};
|
||||
if (not get_comm().make_request(get, response_code, stop_requested)) {
|
||||
return 0U;
|
||||
}
|
||||
|
||||
return 0U;
|
||||
if (response_code != http_error_codes::ok) {
|
||||
utils::error::raise_error(__FUNCTION__, response_code,
|
||||
"failed to get used drive space");
|
||||
return 0U;
|
||||
}
|
||||
|
||||
return object_data["totalObjectsSize"].get<std::uint64_t>();
|
||||
}
|
||||
|
||||
auto sia_provider::is_directory(const std::string &api_path, bool &exists) const
|
||||
|
Reference in New Issue
Block a user