Luanti 5.18.0-dev
Loading...
Searching...
No Matches
EmergeManager Class Reference

#include <emerge.h>

Collaboration diagram for EmergeManager:

Public Member Functions

 EmergeManager (Server *server, MetricsBackend *mb)
 ~EmergeManager ()
 DISABLE_CLASS_COPY (EmergeManager)
const BiomeGen * getBiomeGen () const
const BiomeManager * getBiomeManager () const
const OreManager * getOreManager () const
const DecorationManager * getDecorationManager () const
const SchematicManager * getSchematicManager () const
BiomeManager * getWritableBiomeManager ()
OreManager * getWritableOreManager ()
DecorationManager * getWritableDecorationManager ()
SchematicManager * getWritableSchematicManager ()
void initMapgens (MapgenParams *mgparams)
void initMap (MapDatabaseAccessor *holder)
void resetMap ()
 resets the reference
void startThreads ()
void stopThreads ()
bool enqueueBlockEmerge (session_t peer_id, v3s16 blockpos, bool allow_generate, bool ignore_queue_limits=false)
bool enqueueBlockEmergeEx (v3s16 blockpos, session_t peer_id, u16 flags, EmergeCompletionCallback callback, void *callback_param)
size_t getQueueSize ()
bool isBlockInQueue (v3s16 pos)
Mapgen * getCurrentMapgen ()
int getSpawnLevelAtPoint (v2s16 p)
bool isBlockUnderground (v3s16 blockpos)

Static Public Member Functions

static v3s16 getContainingChunk (v3s16 blockpos, v3s16 chunksize)

Public Attributes

const NodeDefManager * ndef
bool enable_mapgen_debug_info
u32 gen_notify_on = 0
std::set< u32 > gen_notify_on_deco_ids
std::set< std::string > gen_notify_on_custom
MapgenParams * mgparams
MapSettingsManager * map_settings_mgr

Private Member Functions

void initThreads (bool should_multithread)
EmergeThread * getOptimalThread ()
bool pushBlockEmergeData (v3s16 pos, u16 peer_requested, u16 flags, EmergeCompletionCallback callback, void *callback_param, bool *entry_already_exists)
bool popBlockEmergeData (v3s16 pos, BlockEmergeData *bedata)
void reportCompletedEmerge (EmergeAction action)

Private Attributes

std::vector< Mapgen * > m_mapgens
std::vector< EmergeThread * > m_threads
bool m_threads_active = false
Server * m_server = nullptr
MapDatabaseAccessor * m_db = nullptr
std::mutex m_queue_mutex
std::map< v3s16, BlockEmergeData > m_blocks_enqueued
std::unordered_map< u16, u32 > m_peer_queue_count
u32 m_qlimit_total
u32 m_qlimit_diskonly
u32 m_qlimit_generate
MetricCounterPtr m_completed_emerge_counter [5]
BiomeGen * biomegen
BiomeManager * biomemgr
OreManager * oremgr
DecorationManager * decomgr
SchematicManager * schemmgr

Friends

class ModApiMapgen
class EmergeThread

Constructor & Destructor Documentation

◆ EmergeManager()

EmergeManager::EmergeManager ( Server * server,
MetricsBackend * mb )

References MetricsBackend::addCounter(), ARRLEN, biomegen, biomemgr, decomgr, emergeActionStrs, enable_mapgen_debug_info, g_settings, m_completed_emerge_counter, m_qlimit_diskonly, m_qlimit_generate, m_qlimit_total, m_server, mgparams, ndef, oremgr, rangelim(), and schemmgr.

Referenced by DISABLE_CLASS_COPY().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~EmergeManager()

EmergeManager::~EmergeManager ( )

References biomegen, biomemgr, decomgr, EmergeThread, m_mapgens, m_threads, m_threads_active, oremgr, schemmgr, EmergeThread::signal(), Thread::stop(), and Thread::wait().

Here is the call graph for this function:

Member Function Documentation

◆ DISABLE_CLASS_COPY()

EmergeManager::DISABLE_CLASS_COPY ( EmergeManager )

References EmergeManager().

Here is the call graph for this function:

◆ enqueueBlockEmerge()

bool EmergeManager::enqueueBlockEmerge ( session_t peer_id,
v3s16 blockpos,
bool allow_generate,
bool ignore_queue_limits = false )

References BLOCK_EMERGE_ALLOW_GEN, BLOCK_EMERGE_FORCE_QUEUE, and enqueueBlockEmergeEx().

Referenced by RemoteClient::GetNextBlocks().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ enqueueBlockEmergeEx()

bool EmergeManager::enqueueBlockEmergeEx ( v3s16 blockpos,
session_t peer_id,
u16 flags,
EmergeCompletionCallback callback,
void * callback_param )

References EmergeThread, getOptimalThread(), m_queue_mutex, EmergeThread::pushBlock(), pushBlockEmergeData(), and EmergeThread::signal().

Referenced by enqueueBlockEmerge(), and ModApiEnv::l_emerge_area().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getBiomeGen()

const BiomeGen * EmergeManager::getBiomeGen ( ) const
inline

References biomegen.

Referenced by ModApiMapgen::getBiomeGen().

Here is the caller graph for this function:

◆ getBiomeManager()

const BiomeManager * EmergeManager::getBiomeManager ( ) const
inline

References biomemgr.

Referenced by ModApiMapgen::l_get_biome_id(), and ModApiMapgen::l_get_biome_name().

Here is the caller graph for this function:

◆ getContainingChunk()

v3s16 EmergeManager::getContainingChunk ( v3s16 blockpos,
v3s16 chunksize )
static
Returns
min edge of chunk in block units

References getContainerPos().

Referenced by ServerMap::initBlockMake().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getCurrentMapgen()

Mapgen * EmergeManager::getCurrentMapgen ( )

References EmergeThread, Thread::isCurrentThread(), Thread::isRunning(), EmergeThread::m_mapgen, m_threads, and m_threads_active.

Referenced by ModApiMapgen::getMapgen().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getDecorationManager()

const DecorationManager * EmergeManager::getDecorationManager ( ) const
inline

References decomgr.

Referenced by ModApiMapgen::l_get_decoration_id().

Here is the caller graph for this function:

◆ getOptimalThread()

EmergeThread * EmergeManager::getOptimalThread ( )
private

References EmergeThread, FATAL_ERROR_IF, and m_threads.

Referenced by enqueueBlockEmergeEx().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getOreManager()

const OreManager * EmergeManager::getOreManager ( ) const
inline

References oremgr.

◆ getQueueSize()

size_t EmergeManager::getQueueSize ( )

References m_blocks_enqueued, and m_queue_mutex.

◆ getSchematicManager()

const SchematicManager * EmergeManager::getSchematicManager ( ) const
inline

References schemmgr.

Referenced by ModApiMapgen::l_read_schematic(), and ModApiMapgen::l_serialize_schematic().

Here is the caller graph for this function:

◆ getSpawnLevelAtPoint()

int EmergeManager::getSpawnLevelAtPoint ( v2s16 p)

References errorstream, m_mapgens, and p().

Referenced by ModApiMapgen::l_get_spawn_level().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getWritableBiomeManager()

BiomeManager * EmergeManager::getWritableBiomeManager ( )

References biomemgr, FATAL_ERROR_IF, and m_mapgens.

Referenced by ModApiMapgen::l_clear_registered_biomes(), ModApiMapgen::l_register_biome(), ModApiMapgen::l_register_decoration(), and ModApiMapgen::l_register_ore().

Here is the caller graph for this function:

◆ getWritableDecorationManager()

DecorationManager * EmergeManager::getWritableDecorationManager ( )

References decomgr, FATAL_ERROR_IF, and m_mapgens.

Referenced by BiomeManager::clear(), SchematicManager::clear(), ModApiMapgen::l_clear_registered_decorations(), and ModApiMapgen::l_register_decoration().

Here is the caller graph for this function:

◆ getWritableOreManager()

OreManager * EmergeManager::getWritableOreManager ( )

References FATAL_ERROR_IF, m_mapgens, and oremgr.

Referenced by ModApiMapgen::l_clear_registered_ores(), and ModApiMapgen::l_register_ore().

Here is the caller graph for this function:

◆ getWritableSchematicManager()

SchematicManager * EmergeManager::getWritableSchematicManager ( )

References FATAL_ERROR_IF, m_mapgens, and schemmgr.

Referenced by ModApiMapgen::l_clear_registered_schematics(), ModApiMapgen::l_register_decoration(), and ModApiMapgen::l_register_schematic().

Here is the caller graph for this function:

◆ initMap()

void EmergeManager::initMap ( MapDatabaseAccessor * holder)
Parameters
holdernon-owned reference that must stay alive

References MapDatabaseAccessor::dbase, FATAL_ERROR_IF, and m_db.

◆ initMapgens()

void EmergeManager::initMapgens ( MapgenParams * mgparams)

References biomegen, BIOMEGEN_ORIGINAL, biomemgr, MapgenParams::bparams, MapgenParams::chunksize, Mapgen::createMapgen(), decomgr, FATAL_ERROR_IF, Mapgen::getMapgenName(), infostream, initThreads(), m_mapgens, m_threads, MAP_BLOCKSIZE, MAPGEN_SINGLENODE, mgparams, MapgenParams::mgtype, oremgr, p(), and schemmgr.

Here is the call graph for this function:

◆ initThreads()

void EmergeManager::initThreads ( bool should_multithread)
private

References EmergeThread, FATAL_ERROR_IF, g_settings, porting::getMemorySizeMB(), Thread::getNumberOfProcessors(), infostream, m_server, and m_threads.

Referenced by initMapgens().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ isBlockInQueue()

bool EmergeManager::isBlockInQueue ( v3s16 pos)

References m_blocks_enqueued, and m_queue_mutex.

Referenced by RemoteClient::GetNextBlocks().

Here is the caller graph for this function:

◆ isBlockUnderground()

bool EmergeManager::isBlockUnderground ( v3s16 blockpos)

References MAP_BLOCKSIZE, and mgparams.

◆ popBlockEmergeData()

bool EmergeManager::popBlockEmergeData ( v3s16 pos,
BlockEmergeData * bedata )
private

◆ pushBlockEmergeData()

bool EmergeManager::pushBlockEmergeData ( v3s16 pos,
u16 peer_requested,
u16 flags,
EmergeCompletionCallback callback,
void * callback_param,
bool * entry_already_exists )
private

References BLOCK_EMERGE_ALLOW_GEN, BLOCK_EMERGE_FORCE_QUEUE, BlockEmergeData::callbacks, BlockEmergeData::flags, m_blocks_enqueued, m_peer_queue_count, m_qlimit_diskonly, m_qlimit_generate, m_qlimit_total, PEER_ID_INEXISTENT, and BlockEmergeData::peer_requested.

Referenced by enqueueBlockEmergeEx().

Here is the caller graph for this function:

◆ reportCompletedEmerge()

void EmergeManager::reportCompletedEmerge ( EmergeAction action)
private

◆ resetMap()

void EmergeManager::resetMap ( )

resets the reference

References FATAL_ERROR_IF, m_db, and m_threads_active.

◆ startThreads()

void EmergeManager::startThreads ( )

References m_threads, and m_threads_active.

◆ stopThreads()

void EmergeManager::stopThreads ( )

References m_threads, and m_threads_active.

◆ EmergeThread

◆ ModApiMapgen

friend class ModApiMapgen
friend

References ModApiMapgen.

Referenced by ModApiMapgen.

Member Data Documentation

◆ biomegen

BiomeGen* EmergeManager::biomegen
private

◆ biomemgr

◆ decomgr

◆ enable_mapgen_debug_info

bool EmergeManager::enable_mapgen_debug_info

Referenced by EmergeManager().

◆ gen_notify_on

u32 EmergeManager::gen_notify_on = 0

◆ gen_notify_on_custom

std::set<std::string> EmergeManager::gen_notify_on_custom

◆ gen_notify_on_deco_ids

std::set<u32> EmergeManager::gen_notify_on_deco_ids

◆ m_blocks_enqueued

std::map<v3s16, BlockEmergeData> EmergeManager::m_blocks_enqueued
private

◆ m_completed_emerge_counter

MetricCounterPtr EmergeManager::m_completed_emerge_counter[5]
private

◆ m_db

MapDatabaseAccessor* EmergeManager::m_db = nullptr
private

Referenced by initMap(), and resetMap().

◆ m_mapgens

◆ m_peer_queue_count

std::unordered_map<u16, u32> EmergeManager::m_peer_queue_count
private

◆ m_qlimit_diskonly

u32 EmergeManager::m_qlimit_diskonly
private

◆ m_qlimit_generate

u32 EmergeManager::m_qlimit_generate
private

◆ m_qlimit_total

u32 EmergeManager::m_qlimit_total
private

◆ m_queue_mutex

std::mutex EmergeManager::m_queue_mutex
private

◆ m_server

Server* EmergeManager::m_server = nullptr
private

Referenced by EmergeManager(), and initThreads().

◆ m_threads

std::vector<EmergeThread *> EmergeManager::m_threads
private

◆ m_threads_active

bool EmergeManager::m_threads_active = false
private

◆ map_settings_mgr

◆ mgparams

MapgenParams* EmergeManager::mgparams

◆ ndef

const NodeDefManager* EmergeManager::ndef

Referenced by EmergeManager().

◆ oremgr

◆ schemmgr


The documentation for this class was generated from the following files: