Luanti 5.16.0-dev
Loading...
Searching...
No Matches
EmergeThread Class Reference

#include <emerge_internal.h>

Inheritance diagram for EmergeThread:
Collaboration diagram for EmergeThread:

Public Member Functions

 EmergeThread (Server *server, int ethreadid)
 ~EmergeThread ()=default
void * run ()
void signal ()
bool pushBlock (v3s16 pos)
void cancelPendingItems ()
EmergeManagergetEmergeManager ()
MapgengetMapgen ()
Public Member Functions inherited from Thread
 Thread (const std::string &name="")
virtual ~Thread ()
bool start ()
bool stop ()
bool wait ()
bool isCurrentThread () const
bool isRunning () const
bool stopRequested () const
std::thread::id getThreadId () const
bool getReturnValue (void **ret) const
bool bindToProcessor (unsigned int proc_number)
bool setPriority (int prio)

Public Attributes

bool enable_mapgen_debug_info
const int id

Protected Member Functions

void runCompletionCallbacks (v3s16 pos, EmergeAction action, const EmergeCallbackList &callbacks)

Private Member Functions

bool initScripting ()
bool popBlockEmerge (v3s16 *pos, BlockEmergeData *bedata)
EmergeAction getBlockOrStartGen (v3s16 pos, bool allow_gen, const std::string *from_db, MapBlock **block, BlockMakeData *data)
 Try to get a block from memory and decide what to do.
MapBlockfinishGen (v3s16 pos, BlockMakeData *bmdata, std::map< v3s16, MapBlock * > *modified_blocks)

Private Attributes

Serverm_server
ServerMapm_map
EmergeManagerm_emerge
Mapgenm_mapgen
std::unique_ptr< EmergeScriptingm_script
UniqueQueue< v3s16 > * m_trans_liquid
Event m_queue_event
std::queue< v3s16m_block_queue

Friends

class EmergeManager
class EmergeScripting
class ModApiMapgen

Additional Inherited Members

Static Public Member Functions inherited from Thread
static ThreadgetCurrentThread ()
static void setName (const std::string &name)
static unsigned int getNumberOfProcessors ()
Protected Attributes inherited from Thread
std::string m_name

Constructor & Destructor Documentation

◆ EmergeThread()

EmergeThread::EmergeThread ( Server * server,
int ethreadid )

References enable_mapgen_debug_info, id, itos(), m_emerge, m_map, m_mapgen, Thread::m_name, m_server, and m_trans_liquid.

Here is the call graph for this function:

◆ ~EmergeThread()

EmergeThread::~EmergeThread ( )
default

Member Function Documentation

◆ cancelPendingItems()

void EmergeThread::cancelPendingItems ( )

References BlockEmergeData::callbacks, EMERGE_CANCELLED, m_block_queue, m_emerge, and runCompletionCallbacks().

Referenced by run().

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

◆ finishGen()

MapBlock * EmergeThread::finishGen ( v3s16 pos,
BlockMakeData * bmdata,
std::map< v3s16, MapBlock * > * modified_blocks )
private

References analyze_block(), BlockMakeData::blockpos_max, BlockMakeData::blockpos_min, EMERGE_DBG_OUT, errorstream, g_profiler, m_map, m_mapgen, m_server, MAP_BLOCKSIZE, and SPT_AVG.

Referenced by run().

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

◆ getBlockOrStartGen()

EmergeAction EmergeThread::getBlockOrStartGen ( v3s16 pos,
bool allow_gen,
const std::string * from_db,
MapBlock ** block,
BlockMakeData * data )
private

Try to get a block from memory and decide what to do.

Parameters
posblock position
from_dbserialized block data, optional (for second call after EMERGE_FROM_DISK was returned)
allow_genallow invoking mapgen?
blockoutput pointer for block
datainfo for mapgen
Returns
what to do for this block

References EMERGE_CANCELLED, EMERGE_FROM_DISK, EMERGE_FROM_MEMORY, EMERGE_GENERATED, m_map, m_server, and verbosestream.

Referenced by run().

Here is the caller graph for this function:

◆ getEmergeManager()

EmergeManager * EmergeThread::getEmergeManager ( )
inline

References EmergeManager, and m_emerge.

Here is the call graph for this function:

◆ getMapgen()

Mapgen * EmergeThread::getMapgen ( )
inline

References m_mapgen.

◆ initScripting()

bool EmergeThread::initScripting ( )
private

References BUILTIN_MOD_NAME, DIR_DELIM, errorstream, Server::getBuiltinLuaPath(), m_script, m_server, and BaseException::what().

Referenced by run().

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

◆ popBlockEmerge()

bool EmergeThread::popBlockEmerge ( v3s16 * pos,
BlockEmergeData * bedata )
private

References m_block_queue, and m_emerge.

Referenced by run().

Here is the caller graph for this function:

◆ pushBlock()

bool EmergeThread::pushBlock ( v3s16 pos)

References m_block_queue.

Referenced by EmergeManager::enqueueBlockEmergeEx().

Here is the caller graph for this function:

◆ run()

◆ runCompletionCallbacks()

void EmergeThread::runCompletionCallbacks ( v3s16 pos,
EmergeAction action,
const EmergeCallbackList & callbacks )
protected

References m_emerge.

Referenced by cancelPendingItems(), and run().

Here is the caller graph for this function:

◆ signal()

void EmergeThread::signal ( )

References m_queue_event.

Referenced by EmergeManager::~EmergeManager(), and EmergeManager::enqueueBlockEmergeEx().

Here is the caller graph for this function:

◆ EmergeManager

friend class EmergeManager
friend

References EmergeManager.

Referenced by EmergeManager, and getEmergeManager().

◆ EmergeScripting

friend class EmergeScripting
friend

References EmergeScripting.

Referenced by EmergeScripting.

◆ ModApiMapgen

friend class ModApiMapgen
friend

References ModApiMapgen.

Referenced by ModApiMapgen.

Member Data Documentation

◆ enable_mapgen_debug_info

bool EmergeThread::enable_mapgen_debug_info

Referenced by EmergeThread(), and run().

◆ id

const int EmergeThread::id

Referenced by EmergeThread(), and run().

◆ m_block_queue

std::queue<v3s16> EmergeThread::m_block_queue
private

◆ m_emerge

◆ m_map

ServerMap* EmergeThread::m_map
private

◆ m_mapgen

Mapgen* EmergeThread::m_mapgen
private

◆ m_queue_event

Event EmergeThread::m_queue_event
private

Referenced by run(), and signal().

◆ m_script

std::unique_ptr<EmergeScripting> EmergeThread::m_script
private

Referenced by initScripting(), and run().

◆ m_server

◆ m_trans_liquid

UniqueQueue<v3s16>* EmergeThread::m_trans_liquid
private

Referenced by EmergeThread(), and run().


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