#include <s_async.h>
Public Member Functions | |
virtual | ~AsyncWorkerThread () |
void * | run () override |
Public Member Functions inherited from Thread | |
Thread (const std::string &name="") | |
virtual | ~Thread () |
bool | start () |
bool | stop () |
bool | wait () |
bool | isCurrentThread () |
bool | isRunning () |
bool | stopRequested () |
std::thread::id | getThreadId () |
bool | getReturnValue (void **ret) |
bool | bindToProcessor (unsigned int proc_number) |
bool | setPriority (int prio) |
Public Member Functions inherited from ScriptApiBase | |
ScriptApiBase (ScriptingType type) | |
ScriptApiBase () | |
virtual | ~ScriptApiBase () |
DISABLE_CLASS_COPY (ScriptApiBase) | |
void | loadMod (const std::string &script_path, const std::string &mod_name) |
void | loadScript (const std::string &script_path) |
void | runCallbacksRaw (int nargs, RunCallbacksMode mode, const char *fxn) |
void | addObjectReference (ServerActiveObject *cobj) |
void | removeObjectReference (ServerActiveObject *cobj) |
ScriptingType | getType () |
IGameDef * | getGameDef () |
Server * | getServer () |
const std::string & | getOrigin () |
void | setOriginDirect (const char *origin) |
void | setOriginFromTableRaw (int index, const char *fxn) |
void | clientOpenLibs (lua_State *L) |
void | checkSetByBuiltin () |
Public Member Functions inherited from ScriptApiSecurity | |
void | initializeSecurity () |
void | initializeSecurityClient () |
Protected Member Functions | |
AsyncWorkerThread (AsyncEngine *jobDispatcher, const std::string &name) | |
bool | checkPathInternal (const std::string &abs_path, bool write_required, bool *write_allowed) override |
Should check if the given path may be accessed. | |
Protected Member Functions inherited from ScriptApiBase | |
lua_State * | getStack () |
void | realityCheck () |
void | scriptError (int result, const char *fxn) |
void | stackDump (std::ostream &o) |
void | setGameDef (IGameDef *gamedef) |
Environment * | getEnv () |
void | setEnv (Environment *env) |
EmergeThread * | getEmergeThread () |
void | setEmergeThread (EmergeThread *emerge) |
void | objectrefGetOrCreate (lua_State *L, ServerActiveObject *cobj) |
void | pushPlayerHPChangeReason (lua_State *L, const PlayerHPChangeReason &reason) |
Protected Member Functions inherited from LuaHelper | |
template<> | |
bool | readParam (lua_State *L, int index) |
template<> | |
s16 | readParam (lua_State *L, int index) |
template<> | |
int | readParam (lua_State *L, int index) |
template<> | |
float | readParam (lua_State *L, int index) |
template<> | |
v2s16 | readParam (lua_State *L, int index) |
template<> | |
v2f | readParam (lua_State *L, int index) |
template<> | |
v3f | readParam (lua_State *L, int index) |
template<> | |
std::string_view | readParam (lua_State *L, int index) |
template<> | |
std::string | readParam (lua_State *L, int index) |
template<> | |
std::string_view | readParam (lua_State *L, int index) |
Read a string from Lua state L at index without copying it. | |
Protected Member Functions inherited from ScriptApiSecurity | |
virtual bool | modNamesAreTrusted () |
Specify if the mod names during init time(!) can be trusted. | |
Private Attributes | |
AsyncEngine * | jobDispatcher = nullptr |
bool | isErrored = false |
Friends | |
class | AsyncEngine |
Additional Inherited Members | |
Static Public Member Functions inherited from Thread | |
static Thread * | getCurrentThread () |
static void | setName (const std::string &name) |
static unsigned int | getNumberOfProcessors () |
Static Public Member Functions inherited from ScriptApiBase | |
static std::string | getCurrentModNameInsecure (lua_State *L) |
Returns the currently running mod, only during init time. | |
Static Public Member Functions inherited from ScriptApiSecurity | |
static bool | isSecure (lua_State *L) |
static void | getGlobalsBackup (lua_State *L) |
static bool | safeLoadString (lua_State *L, std::string_view code, const char *chunk_name) |
Loads a string as Lua code safely (doesn't allow bytecode). | |
static bool | safeLoadFile (lua_State *L, const char *path, const char *display_name=nullptr) |
Loads a file as Lua code safely (doesn't allow bytecode). | |
static std::string | getCurrentModName (lua_State *L) |
Returns the currently running mod, only during init time. | |
static bool | checkWhitelisted (lua_State *L, const std::string &setting) |
Check if mod is whitelisted in the given setting. | |
static bool | checkPath (lua_State *L, const char *path, bool write_required, bool *write_allowed=nullptr) |
Checks if mods are allowed to read (and optionally write) to the path. | |
Static Protected Member Functions inherited from LuaHelper | |
template<typename T > | |
static T | readParam (lua_State *L, int index) |
Read a value using a template type T from Lua state L at index. | |
template<typename T > | |
static T | readParam (lua_State *L, int index, const T &default_value) |
Read a value using a template type T from Lua state L at index. | |
Static Protected Member Functions inherited from ScriptApiSecurity | |
static bool | checkPathWithGamedef (lua_State *L, const std::string &abs_path, bool write_required, bool *write_allowed) |
Protected Attributes inherited from Thread | |
std::string | m_name |
Protected Attributes inherited from ScriptApiBase | |
std::recursive_mutex | m_luastackmutex |
std::string | m_last_run_mod |
int | m_lock_recursion_count {} |
std::thread::id | m_owning_thread |
|
virtual |
|
protected |
References g_settings, Settings::getBool(), ScriptApiBase::getStack(), ScriptApiSecurity::initializeSecurity(), isErrored, jobDispatcher, AsyncEngine::prepareEnvironment(), AsyncEngine::server, and ScriptApiBase::setGameDef().
|
overrideprotectedvirtual |
Should check if the given path may be accessed.
If write_required
is true test for write access, if false test for read access.
abs_path | absolute file/directory path, may not exist |
write_required | was write access requested? |
write_allowed | output parameter (nullable): set to true if writing is allowed |
Implements ScriptApiSecurity.
References MainMenuScripting::checkPathAccess(), ScriptApiSecurity::checkPathWithGamedef(), FATAL_ERROR, ScriptApiBase::getStack(), jobDispatcher, and AsyncEngine::server.
|
overridevirtual |
Implements Thread.
References errorstream, FATAL_ERROR, LuaJobInfo::function, AsyncEngine::getJob(), ScriptApiBase::getStack(), isErrored, jobDispatcher, LuaJobInfo::mod_origin, LuaJobInfo::params, LuaJobInfo::params_ext, PUSH_ERROR_HANDLER, AsyncEngine::putJobResult(), LuaJobInfo::result, LuaJobInfo::result_ext, script_pack(), script_unpack(), ScriptApiBase::scriptError(), AsyncEngine::server, Server::setAsyncFatalError(), ScriptApiBase::setOriginDirect(), and Thread::stopRequested().
|
friend |
|
private |
Referenced by AsyncWorkerThread(), and run().
|
private |
Referenced by AsyncWorkerThread(), checkPathInternal(), and run().