Luanti 5.16.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 BiomeGengetBiomeGen () const
const BiomeManagergetBiomeManager () const
const OreManagergetOreManager () const
const DecorationManagergetDecorationManager () const
const SchematicManagergetSchematicManager () const
BiomeManagergetWritableBiomeManager ()
OreManagergetWritableOreManager ()
DecorationManagergetWritableDecorationManager ()
SchematicManagergetWritableSchematicManager ()
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)
MapgengetCurrentMapgen ()
int getSpawnLevelAtPoint (v2s16 p)
bool isBlockUnderground (v3s16 blockpos)

Static Public Member Functions

static v3s16 getContainingChunk (v3s16 blockpos, v3s16 chunksize)

Public Attributes

const NodeDefManagerndef
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
MapgenParamsmgparams
MapSettingsManagermap_settings_mgr

Private Member Functions

void initThreads (bool should_multithread)
EmergeThreadgetOptimalThread ()
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
Serverm_server = nullptr
MapDatabaseAccessorm_db = nullptr
std::mutex m_queue_mutex
std::map< v3s16, BlockEmergeDatam_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]
BiomeGenbiomegen
BiomeManagerbiomemgr
OreManageroremgr
DecorationManagerdecomgr
SchematicManagerschemmgr

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: