Mercurial > hg > orthanc
diff OrthancServer/ServerContext.h @ 2738:3a55b77339ff
fix deadlock in Lua scripts
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 16 Jul 2018 11:19:30 +0200 |
parents | 8e0bc055d18c |
children | 925d8dc03a23 |
line wrap: on
line diff
--- a/OrthancServer/ServerContext.h Sun Jul 15 16:41:43 2018 +0200 +++ b/OrthancServer/ServerContext.h Mon Jul 16 11:19:30 2018 +0200 @@ -63,6 +63,36 @@ class ServerContext : private JobsRegistry::IObserver { private: + class LuaServerListener : public IServerListener + { + private: + ServerContext& context_; + + public: + LuaServerListener(ServerContext& context) : + context_(context) + { + } + + virtual void SignalStoredInstance(const std::string& publicId, + DicomInstanceToStore& instance, + const Json::Value& simplifiedTags) + { + context_.mainLua_.SignalStoredInstance(publicId, instance, simplifiedTags); + } + + virtual void SignalChange(const ServerIndexChange& change) + { + context_.mainLua_.SignalChange(change); + } + + virtual bool FilterIncomingInstance(const DicomInstanceToStore& instance, + const Json::Value& simplified) + { + return context_.filterLua_.FilterIncomingInstance(instance, simplified); + } + }; + class DicomCacheProvider : public ICachePageProvider { private: @@ -135,7 +165,9 @@ MemoryCache dicomCache_; JobsEngine jobsEngine_; - LuaScripting lua_; + LuaScripting mainLua_; + LuaScripting filterLua_; + LuaServerListener luaListener_; #if ORTHANC_ENABLE_PLUGINS == 1 OrthancPlugins* plugins_; @@ -279,7 +311,7 @@ LuaScripting& GetLuaScripting() { - return lua_; + return mainLua_; } OrthancHttpHandler& GetHttpHandler()