]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/emerge.h
Merge pull request #59 from PrairieAstronomer/readme_irrlicht_change
[dragonfireclient.git] / src / emerge.h
index aac3e7dd3b018887fb7ed29ece07cdcb2bf13b47..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);
 
@@ -174,13 +183,12 @@ class EmergeManager {
                EmergeCompletionCallback callback,
                void *callback_param);
 
-       v3s16 getContainingChunk(v3s16 blockpos);
+       bool isBlockInQueue(v3s16 pos);
 
        Mapgen *getCurrentMapgen();
 
        // Mapgen helpers methods
        int getSpawnLevelAtPoint(v2s16 p);
-       int getGroundLevelAtPoint(v2s16 p);
        bool isBlockUnderground(v3s16 blockpos);
 
        static v3s16 getContainingChunk(v3s16 blockpos, s16 chunksize);
@@ -192,11 +200,14 @@ class EmergeManager {
 
        std::mutex m_queue_mutex;
        std::map<v3s16, BlockEmergeData> m_blocks_enqueued;
-       std::unordered_map<u16, u16> m_peer_queue_count;
+       std::unordered_map<u16, u32> m_peer_queue_count;
 
-       u16 m_qlimit_total;
-       u16 m_qlimit_diskonly;
-       u16 m_qlimit_generate;
+       u32 m_qlimit_total;
+       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
@@ -219,5 +230,7 @@ class EmergeManager {
 
        bool popBlockEmergeData(v3s16 pos, BlockEmergeData *bedata);
 
+       void reportCompletedEmerge(EmergeAction action);
+
        friend class EmergeThread;
 };