comparison OrthancServer/QueryRetrieveHandler.cpp @ 2617:912a767911b0 jobs

back to a single Lua context
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 22 May 2018 12:45:34 +0200
parents 2f3007bf0708
children 4ee3a759afea
comparison
equal deleted inserted replaced
2616:2f3007bf0708 2617:912a767911b0
40 #include "../Core/Logging.h" 40 #include "../Core/Logging.h"
41 41
42 42
43 namespace Orthanc 43 namespace Orthanc
44 { 44 {
45 static LuaScripting& GetLuaScripting(ServerContext& context)
46 {
47 // Returns a singleton Lua context
48 static boost::mutex mutex_;
49 static std::auto_ptr<LuaScripting> lua_;
50
51 boost::mutex::scoped_lock lock(mutex_);
52
53 if (lua_.get() == NULL)
54 {
55 LOG(INFO) << "Initializing Lua for QueryRetrieveHandler";
56 lua_.reset(new LuaScripting(context));
57 lua_->LoadGlobalConfiguration();
58 }
59
60 return *lua_;
61 }
62
63
64 static void FixQueryLua(DicomMap& query, 45 static void FixQueryLua(DicomMap& query,
65 ServerContext& context, 46 ServerContext& context,
66 const std::string& modality) 47 const std::string& modality)
67 { 48 {
68 static const char* LUA_CALLBACK = "OutgoingFindRequestFilter"; 49 static const char* LUA_CALLBACK = "OutgoingFindRequestFilter";
69 50
70 LuaScripting::Lock lock(GetLuaScripting(context)); 51 LuaScripting::Lock lock(context.GetLuaScripting());
71 52
72 if (lock.GetLua().IsExistingFunction(LUA_CALLBACK)) 53 if (lock.GetLua().IsExistingFunction(LUA_CALLBACK))
73 { 54 {
74 LuaFunctionCall call(lock.GetLua(), LUA_CALLBACK); 55 LuaFunctionCall call(lock.GetLua(), LUA_CALLBACK);
75 call.PushDicom(query); 56 call.PushDicom(query);