1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-07 03:07:45 +00:00

more watchdog shenanigans

This commit is contained in:
Tahir 2023-02-04 20:10:14 +00:00
parent 6f457a4e7e
commit f9b5e0e874
3 changed files with 20 additions and 2 deletions

View file

@ -70,9 +70,9 @@ foreach(_scriptDir ${children})
)
else()
add_custom_command(TARGET "script_${_name}" POST_BUILD
COMMAND ${CMAKE_COMMAND} -E touch ${SCRIPT_POSTBUILD_DIR}/$<TARGET_FILE:${ScriptTargetName}>_LOCK
COMMAND ${CMAKE_COMMAND} -E touch ${SCRIPT_POSTBUILD_DIR}$<TARGET_FILE_NAME:${ScriptTargetName}>_LOCK
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:${ScriptTargetName}> ${SCRIPT_POSTBUILD_DIR}
COMMAND ${CMAKE_COMMAND} -E remove ${SCRIPT_POSTBUILD_DIR}/$<TARGET_FILE:${ScriptTargetName}>_LOCK
COMMAND ${CMAKE_COMMAND} -E remove ${SCRIPT_POSTBUILD_DIR}$<TARGET_FILE_NAME:${ScriptTargetName}>_LOCK
)
endif()

View file

@ -9,6 +9,8 @@ namespace Sapphire::Scripting
bool NativeScriptMgr::loadScript( const std::string& path )
{
std::scoped_lock lock( m_mutex );
auto module = m_loader.loadModule( path );
if( !module )
return false;
@ -47,11 +49,15 @@ namespace Sapphire::Scripting
const std::string NativeScriptMgr::getModuleExtension()
{
std::scoped_lock lock( m_mutex );
return m_loader.getModuleExtension();
}
bool NativeScriptMgr::unloadScript( const std::string& name )
{
std::scoped_lock lock( m_mutex );
auto info = m_loader.getScriptInfo( name );
if( !info )
return false;
@ -61,6 +67,8 @@ namespace Sapphire::Scripting
bool NativeScriptMgr::unloadScript( ScriptInfo* info )
{
std::scoped_lock lock( m_mutex );
for( auto& script : info->scripts )
{
m_scripts[ script->getType() ].erase( script->getId() );
@ -83,11 +91,14 @@ namespace Sapphire::Scripting
if( !unloadScript( info ) )
return;
std::scoped_lock lock( m_mutex );
m_scriptLoadQueue.push( libPath );
}
void NativeScriptMgr::processLoadQueue()
{
std::scoped_lock lock( m_mutex );
std::vector< std::string > deferredLoads;
while( !m_scriptLoadQueue.empty() )
@ -110,11 +121,15 @@ namespace Sapphire::Scripting
void NativeScriptMgr::findScripts( std::set< Sapphire::Scripting::ScriptInfo* >& scripts, const std::string& search )
{
std::scoped_lock lock( m_mutex );
return m_loader.findScripts( scripts, search );
}
bool NativeScriptMgr::isModuleLoaded( const std::string& name )
{
std::scoped_lock lock( m_mutex );
return m_loader.isModuleLoaded( name );
}

View file

@ -4,6 +4,7 @@
#include <unordered_map>
#include <set>
#include <queue>
#include <mutex>
#include "ScriptLoader.h"
@ -29,6 +30,8 @@ namespace Sapphire::Scripting
*/
std::queue< std::string > m_scriptLoadQueue;
std::recursive_mutex m_mutex;
/*!
* @brief Used to unload a script
*