]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/emerge.h
Add more Prometheus metrics (#12274)
[dragonfireclient.git] / src / emerge.h
index 61e7bda63e25f4d0e47e4c4752a2d34aea7d96c7..1bac4b70830d968156be7b636d214541dcde3f5a 100644 (file)
@@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "network/networkprotocol.h"
 #include "irr_v3d.h"
 #include "util/container.h"
+#include "util/metricsbackend.h"
 #include "mapgen/mapgen.h" // for MapgenParams
 #include "map.h"
 
@@ -69,6 +70,14 @@ enum EmergeAction {
        EMERGE_GENERATED,
 };
 
+const static std::string emergeActionStrs[] = {
+       "cancelled",
+       "errored",
+       "from_memory",
+       "from_disk",
+       "generated",
+};
+
 // Callback
 typedef void (*EmergeCompletionCallback)(
        v3s16 blockpos, EmergeAction action, void *param);
@@ -138,7 +147,7 @@ class EmergeManager {
        MapSettingsManager *map_settings_mgr;
 
        // Methods
-       EmergeManager(Server *server);
+       EmergeManager(Server *server, MetricsBackend *mb);
        ~EmergeManager();
        DISABLE_CLASS_COPY(EmergeManager);
 
@@ -197,6 +206,9 @@ class EmergeManager {
        u32 m_qlimit_diskonly;
        u32 m_qlimit_generate;
 
+       // Emerge metrics
+       MetricCounterPtr m_completed_emerge_counter[5];
+
        // Managers of various map generation-related components
        // Note that each Mapgen gets a copy(!) of these to work with
        BiomeGen *biomegen;
@@ -218,5 +230,7 @@ class EmergeManager {
 
        bool popBlockEmergeData(v3s16 pos, BlockEmergeData *bedata);
 
+       void reportCompletedEmerge(EmergeAction action);
+
        friend class EmergeThread;
 };