# HG changeset patch # User Sebastien Jodogne # Date 1526985934 -7200 # Node ID 912a767911b02e271f912f7abefbd5ecabf70138 # Parent 2f3007bf0708a0dba0d4fc73e86a6dc24870d4f1 back to a single Lua context diff -r 2f3007bf0708 -r 912a767911b0 OrthancServer/IServerListener.h --- a/OrthancServer/IServerListener.h Tue May 22 12:25:37 2018 +0200 +++ b/OrthancServer/IServerListener.h Tue May 22 12:45:34 2018 +0200 @@ -40,7 +40,7 @@ namespace Orthanc { - class IServerListener + class IServerListener : public boost::noncopyable { public: virtual ~IServerListener() diff -r 2f3007bf0708 -r 912a767911b0 OrthancServer/LuaScripting.h --- a/OrthancServer/LuaScripting.h Tue May 22 12:25:37 2018 +0200 +++ b/OrthancServer/LuaScripting.h Tue May 22 12:45:34 2018 +0200 @@ -88,7 +88,7 @@ boost::mutex::scoped_lock lock_; public: - Lock(LuaScripting& that) : + explicit Lock(LuaScripting& that) : that_(that), lock_(that.mutex_) { diff -r 2f3007bf0708 -r 912a767911b0 OrthancServer/OrthancFindRequestHandler.cpp --- a/OrthancServer/OrthancFindRequestHandler.cpp Tue May 22 12:25:37 2018 +0200 +++ b/OrthancServer/OrthancFindRequestHandler.cpp Tue May 22 12:45:34 2018 +0200 @@ -47,25 +47,6 @@ namespace Orthanc { - static LuaScripting& GetLuaScripting(ServerContext& context) - { - // Returns a singleton Lua context - static boost::mutex mutex_; - static std::auto_ptr lua_; - - boost::mutex::scoped_lock lock(mutex_); - - if (lua_.get() == NULL) - { - LOG(INFO) << "Initializing Lua for OrthancFindRequestHandler"; - lua_.reset(new LuaScripting(context)); - lua_->LoadGlobalConfiguration(); - } - - return *lua_; - } - - static void GetChildren(std::list& target, ServerIndex& index, const std::list& source) @@ -505,7 +486,8 @@ { static const char* LUA_CALLBACK = "IncomingFindRequestFilter"; - LuaScripting::Lock lock(GetLuaScripting(context_)); + LuaScripting::Lock lock(context_.GetLuaScripting()); + if (!lock.GetLua().IsExistingFunction(LUA_CALLBACK)) { return false; diff -r 2f3007bf0708 -r 912a767911b0 OrthancServer/OrthancRestApi/OrthancRestSystem.cpp --- a/OrthancServer/OrthancRestApi/OrthancRestSystem.cpp Tue May 22 12:25:37 2018 +0200 +++ b/OrthancServer/OrthancRestApi/OrthancRestSystem.cpp Tue May 22 12:45:34 2018 +0200 @@ -124,7 +124,7 @@ call.BodyToString(command); { - LuaScripting::Lock lock(context.GetLuaEventHandler()); + LuaScripting::Lock lock(context.GetLuaScripting()); lock.GetLua().Execute(result, command); } diff -r 2f3007bf0708 -r 912a767911b0 OrthancServer/QueryRetrieveHandler.cpp --- a/OrthancServer/QueryRetrieveHandler.cpp Tue May 22 12:25:37 2018 +0200 +++ b/OrthancServer/QueryRetrieveHandler.cpp Tue May 22 12:45:34 2018 +0200 @@ -42,32 +42,13 @@ namespace Orthanc { - static LuaScripting& GetLuaScripting(ServerContext& context) - { - // Returns a singleton Lua context - static boost::mutex mutex_; - static std::auto_ptr lua_; - - boost::mutex::scoped_lock lock(mutex_); - - if (lua_.get() == NULL) - { - LOG(INFO) << "Initializing Lua for QueryRetrieveHandler"; - lua_.reset(new LuaScripting(context)); - lua_->LoadGlobalConfiguration(); - } - - return *lua_; - } - - static void FixQueryLua(DicomMap& query, ServerContext& context, const std::string& modality) { static const char* LUA_CALLBACK = "OutgoingFindRequestFilter"; - LuaScripting::Lock lock(GetLuaScripting(context)); + LuaScripting::Lock lock(context.GetLuaScripting()); if (lock.GetLua().IsExistingFunction(LUA_CALLBACK)) { diff -r 2f3007bf0708 -r 912a767911b0 OrthancServer/ServerContext.cpp --- a/OrthancServer/ServerContext.cpp Tue May 22 12:25:37 2018 +0200 +++ b/OrthancServer/ServerContext.cpp Tue May 22 12:45:34 2018 +0200 @@ -114,7 +114,7 @@ storeMD5_(true), provider_(*this), dicomCache_(provider_, DICOM_CACHE_SIZE), - luaEventHandler_(*this), + lua_(*this), #if ORTHANC_ENABLE_PLUGINS == 1 plugins_(NULL), #endif @@ -122,7 +122,7 @@ queryRetrieveArchive_(Configuration::GetGlobalUnsignedIntegerParameter("QueryRetrieveSize", 10)), defaultLocalAet_(Configuration::GetGlobalStringParameter("DicomAet", "ORTHANC")) { - listeners_.push_back(ServerListener(luaEventHandler_, "Lua")); + listeners_.push_back(ServerListener(lua_, "Lua")); jobsEngine_.SetWorkersCount(Configuration::GetGlobalUnsignedIntegerParameter("ConcurrentJobs", 2)); //jobsEngine_.SetMaxCompleted // TODO @@ -580,7 +580,7 @@ // TODO REFACTOR THIS listeners_.clear(); - listeners_.push_back(ServerListener(luaEventHandler_, "Lua")); + listeners_.push_back(ServerListener(lua_, "Lua")); listeners_.push_back(ServerListener(plugins, "plugin")); } @@ -593,7 +593,7 @@ // TODO REFACTOR THIS listeners_.clear(); - listeners_.push_back(ServerListener(luaEventHandler_, "Lua")); + listeners_.push_back(ServerListener(lua_, "Lua")); } diff -r 2f3007bf0708 -r 912a767911b0 OrthancServer/ServerContext.h --- a/OrthancServer/ServerContext.h Tue May 22 12:25:37 2018 +0200 +++ b/OrthancServer/ServerContext.h Tue May 22 12:45:34 2018 +0200 @@ -119,7 +119,7 @@ MemoryCache dicomCache_; JobsEngine jobsEngine_; - LuaScripting luaEventHandler_; + LuaScripting lua_; #if ORTHANC_ENABLE_PLUGINS == 1 OrthancPlugins* plugins_; @@ -257,9 +257,9 @@ return defaultLocalAet_; } - LuaScripting& GetLuaEventHandler() + LuaScripting& GetLuaScripting() { - return luaEventHandler_; + return lua_; } OrthancHttpHandler& GetHttpHandler() diff -r 2f3007bf0708 -r 912a767911b0 OrthancServer/main.cpp --- a/OrthancServer/main.cpp Tue May 22 12:25:37 2018 +0200 +++ b/OrthancServer/main.cpp Tue May 22 12:45:34 2018 +0200 @@ -167,19 +167,16 @@ class OrthancApplicationEntityFilter : public IApplicationEntityFilter { private: - LuaScripting lua_; - bool alwaysAllowEcho_; - bool alwaysAllowStore_; + ServerContext& context_; + bool alwaysAllowEcho_; + bool alwaysAllowStore_; public: OrthancApplicationEntityFilter(ServerContext& context) : - lua_(context) + context_(context) { alwaysAllowEcho_ = Configuration::GetGlobalBoolParameter("DicomAlwaysAllowEcho", true); alwaysAllowStore_ = Configuration::GetGlobalBoolParameter("DicomAlwaysAllowStore", true); - - LOG(INFO) << "Initializing Lua for OrthancApplicationEntityFilter"; - lua_.LoadGlobalConfiguration(); } virtual bool IsAllowedConnection(const std::string& remoteIp, @@ -268,7 +265,7 @@ { std::string name = "Is" + configuration; - LuaScripting::Lock lock(lua_); + LuaScripting::Lock lock(context_.GetLuaScripting()); if (lock.GetLua().IsExistingFunction(name.c_str())) { @@ -293,7 +290,7 @@ { std::string lua = "Is" + std::string(configuration); - LuaScripting::Lock lock(lua_); + LuaScripting::Lock lock(context_.GetLuaScripting()); if (lock.GetLua().IsExistingFunction(lua.c_str())) { @@ -313,17 +310,15 @@ class MyIncomingHttpRequestFilter : public IIncomingHttpRequestFilter { private: - LuaScripting lua_; + ServerContext& context_; OrthancPlugins* plugins_; public: MyIncomingHttpRequestFilter(ServerContext& context, OrthancPlugins* plugins) : - lua_(context), + context_(context), plugins_(plugins) { - LOG(INFO) << "Initializing Lua for MyIncomingHttpRequestFilter"; - lua_.LoadGlobalConfiguration(); } virtual bool IsAllowed(HttpMethod method, @@ -341,7 +336,7 @@ static const char* HTTP_FILTER = "IncomingHttpRequestFilter"; - LuaScripting::Lock lock(lua_); + LuaScripting::Lock lock(context_.GetLuaScripting()); // Test if the instance must be filtered out if (lock.GetLua().IsExistingFunction(HTTP_FILTER)) @@ -675,8 +670,8 @@ } #endif - context.GetLuaEventHandler().Start(); - context.GetLuaEventHandler().Execute("Initialize"); + context.GetLuaScripting().Start(); + context.GetLuaScripting().Execute("Initialize"); bool restart; @@ -710,8 +705,8 @@ } } - context.GetLuaEventHandler().Execute("Finalize"); - context.GetLuaEventHandler().Stop(); + context.GetLuaScripting().Execute("Finalize"); + context.GetLuaScripting().Stop(); #if ORTHANC_ENABLE_PLUGINS == 1 if (context.HasPlugins()) @@ -1000,7 +995,7 @@ } LOG(INFO) << "Initializing Lua for the event handler"; - context.GetLuaEventHandler().LoadGlobalConfiguration(); + context.GetLuaScripting().LoadGlobalConfiguration(); #if ORTHANC_ENABLE_PLUGINS == 1 if (plugins)