]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Refactor away stats_{add_cleanup,set_sizes}
authorJoel Rosdahl <joel@rosdahl.net>
Sat, 12 Sep 2020 10:58:46 +0000 (12:58 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Mon, 14 Sep 2020 17:40:06 +0000 (19:40 +0200)
src/cleanup.cpp
src/stats.cpp
src/stats.hpp

index 5849fe6b1e6b73aa0261f584a0b096c91be6fbf3..cff7d22b23475db2fdb6f2e79d272bac5b7cb36b 100644 (file)
@@ -22,6 +22,7 @@
 #include "CacheFile.hpp"
 #include "Config.hpp"
 #include "Context.hpp"
+#include "Lockfile.hpp"
 #include "Logging.hpp"
 #include "Util.hpp"
 #include "stats.hpp"
@@ -53,6 +54,25 @@ delete_file(const std::string& path,
   }
 }
 
+static void
+update_counters(const std::string& dir,
+                uint64_t files_in_cache,
+                uint64_t cache_size,
+                bool cleanup_performed)
+{
+  const std::string stats_file = dir + "/stats";
+  Lockfile lock(stats_file);
+  if (lock.acquired()) {
+    Counters counters = Statistics::read(stats_file);
+    if (cleanup_performed) {
+      counters.increment(Statistic::cleanups_performed);
+    }
+    counters.set(Statistic::files_in_cache, files_in_cache);
+    counters.set(Statistic::cache_size_kibibyte, cache_size / 1024);
+    Statistics::write(stats_file, counters);
+  }
+}
+
 void
 clean_old(const Context& ctx,
           const Util::ProgressReceiver& progress_receiver,
@@ -164,10 +184,9 @@ clean_up_dir(const std::string& subdir,
 
   if (cleaned) {
     log("Cleaned up cache directory {}", subdir);
-    stats_add_cleanup(subdir, 1);
   }
 
-  stats_set_sizes(subdir, files_in_cache, cache_size);
+  update_counters(subdir, files_in_cache, cache_size, cleaned);
 }
 
 // Clean up all cache subdirectories.
@@ -204,12 +223,11 @@ wipe_dir(const std::string& subdir,
     progress_receiver(0.5 + 0.5 * i / files.size());
   }
 
-  if (!files.empty()) {
+  const bool cleared = !files.empty();
+  if (cleared) {
     log("Cleared out cache directory {}", subdir);
-    stats_add_cleanup(subdir, 1);
   }
-
-  stats_set_sizes(subdir, 0, 0);
+  update_counters(subdir, 0, 0, cleared);
 }
 
 // Wipe all cached files in all subdirectories.
index 70539beed2c1cccd7a804ea462926c9cc140ffd3..273dbb45372ef31f18227cdc7787e09543c5c020 100644 (file)
@@ -298,30 +298,6 @@ stats_zero(const Context& ctx)
   }
 }
 
-// Set the per-directory sizes.
-void
-stats_set_sizes(const std::string& dir, uint64_t num_files, uint64_t total_size)
-{
-  std::string statsfile = dir + "/stats";
-  Lockfile lock(statsfile);
-  if (lock.acquired()) {
-    Counters counters = Statistics::read(statsfile);
-    counters.set(Statistic::files_in_cache, num_files);
-    counters.set(Statistic::cache_size_kibibyte, total_size / 1024);
-    Statistics::write(statsfile, counters);
-  }
-}
-
-// Count directory cleanup run.
-void
-stats_add_cleanup(const std::string& dir, uint64_t count)
-{
-  std::string statsfile = dir + "/stats";
-  Counters updates;
-  updates.increment(Statistic::cleanups_performed, count);
-  Statistics::increment(statsfile, updates);
-}
-
 optional<std::string>
 stats_get_result(const Counters& counters)
 {
index b4220f8b2e6be4be90b9a66142660e67e3e35327..69d5a001a0fa4853506e1351b1143ed7d7cbd73e 100644 (file)
@@ -33,9 +33,4 @@ void stats_zero(const Context& ctx);
 void stats_summary(const Context& ctx);
 void stats_print(const Config& config);
 
-void stats_set_sizes(const std::string& dir,
-                     uint64_t num_files,
-                     uint64_t total_size);
-void stats_add_cleanup(const std::string& dir, uint64_t count);
-
 nonstd::optional<std::string> stats_get_result(const Counters& counters);