Mercurial > hg > orthanc
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); |