add ToHumanReadableSize, which formats data sizes into MiB, GiB, etc.

this is needed in order to display data sizes in upcoming changes
related to tracking statistics about the server's performance
This commit is contained in:
Lion Kortlepel
2022-10-26 14:15:03 +02:00
parent 6842dccfc3
commit 692129cb81
2 changed files with 17 additions and 0 deletions
+3
View File
@@ -178,6 +178,7 @@ void RegisterThread(const std::string& str);
#define KB 1024llu #define KB 1024llu
#define MB (KB * 1024llu) #define MB (KB * 1024llu)
#define GB (MB * 1024llu) #define GB (MB * 1024llu)
#define TB (GB * 1024llu)
#define SSU_UNRAW SECRET_SENTRY_URL #define SSU_UNRAW SECRET_SENTRY_URL
#define _file_basename std::filesystem::path(__FILE__).filename().string() #define _file_basename std::filesystem::path(__FILE__).filename().string()
@@ -352,3 +353,5 @@ inline T DeComp(const T& Compressed) {
std::string GetPlatformAgnosticErrorString(); std::string GetPlatformAgnosticErrorString();
#define S_DSN SU_RAW #define S_DSN SU_RAW
std::string ToHumanReadableSize(size_t Size);
+14
View File
@@ -427,3 +427,17 @@ std::string GetPlatformAgnosticErrorString() {
return "(no human-readable errors on this platform)"; return "(no human-readable errors on this platform)";
#endif #endif
} }
std::string ToHumanReadableSize(size_t Size) {
if (Size > TB) {
return fmt::format("{:.2f} TiB", double(Size) / TB);
} else if (Size > GB) {
return fmt::format("{:.2f} GiB", double(Size) / GB);
} else if (Size > MB) {
return fmt::format("{:.2f} MiB", double(Size) / MB);
} else if (Size > KB) {
return fmt::format("{:.2f} KiB", double(Size) / KB);
} else {
return fmt::format("{} B", Size);
}
}