Mercurial > hg > orthanc
annotate OrthancServer/Sources/LuaScripting.cpp @ 4709:a9a75281cae9 openssl-3.x
fix build on MSVC 2008 32bit
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 22 Jun 2021 10:26:27 +0200 |
parents | f0038043fb97 |
children | 70d2a97ca8cb |
rev | line source |
---|---|
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1 /** |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
2 * Orthanc - A Lightweight, RESTful DICOM Store |
1900 | 3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
4437
d9473bd5ed43
upgrade to year 2021
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4329
diff
changeset
|
5 * Copyright (C) 2017-2021 Osimis S.A., Belgium |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
6 * |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
7 * This program is free software: you can redistribute it and/or |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
8 * modify it under the terms of the GNU General Public License as |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
9 * published by the Free Software Foundation, either version 3 of the |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
10 * License, or (at your option) any later version. |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
11 * |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
12 * This program is distributed in the hope that it will be useful, but |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
13 * WITHOUT ANY WARRANTY; without even the implied warranty of |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
15 * General Public License for more details. |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
16 * |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
17 * You should have received a copy of the GNU General Public License |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
19 **/ |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
20 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
21 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
22 #include "PrecompiledHeadersServer.h" |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
23 #include "LuaScripting.h" |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
24 |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
25 #include "OrthancConfiguration.h" |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
26 #include "OrthancRestApi/OrthancRestApi.h" |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
27 #include "ServerContext.h" |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
28 |
4554 | 29 #include "../../OrthancFramework/Sources/DicomParsing/FromDcmtkBridge.h" |
4045 | 30 #include "../../OrthancFramework/Sources/HttpServer/StringHttpOutput.h" |
31 #include "../../OrthancFramework/Sources/Logging.h" | |
32 #include "../../OrthancFramework/Sources/Lua/LuaFunctionCall.h" | |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
33 |
4032
058b5ade8acd
renaming embedded resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4031
diff
changeset
|
34 #include <OrthancServerResources.h> |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
35 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
36 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
37 namespace Orthanc |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
38 { |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
39 class LuaScripting::IEvent : public IDynamicObject |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
40 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
41 public: |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
42 virtual void Apply(LuaScripting& lock) = 0; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
43 }; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
44 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
45 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
46 class LuaScripting::OnStoredInstanceEvent : public LuaScripting::IEvent |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
47 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
48 private: |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
49 std::string instanceId_; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
50 Json::Value simplifiedTags_; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
51 Json::Value metadata_; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
52 Json::Value origin_; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
53 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
54 public: |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
55 OnStoredInstanceEvent(const std::string& instanceId, |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
56 const Json::Value& simplifiedTags, |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
57 const Json::Value& metadata, |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
58 const DicomInstanceToStore& instance) : |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
59 instanceId_(instanceId), |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
60 simplifiedTags_(simplifiedTags), |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
61 metadata_(metadata) |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
62 { |
2640
c691fcf66071
ResourceModificationJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2638
diff
changeset
|
63 instance.GetOrigin().Format(origin_); |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
64 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
65 |
4204 | 66 virtual void Apply(LuaScripting& that) ORTHANC_OVERRIDE |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
67 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
68 static const char* NAME = "OnStoredInstance"; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
69 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
70 LuaScripting::Lock lock(that); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
71 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
72 if (lock.GetLua().IsExistingFunction(NAME)) |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
73 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
74 that.InitializeJob(); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
75 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
76 LuaFunctionCall call(lock.GetLua(), NAME); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
77 call.PushString(instanceId_); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
78 call.PushJson(simplifiedTags_); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
79 call.PushJson(metadata_); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
80 call.PushJson(origin_); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
81 call.Execute(); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
82 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
83 that.SubmitJob(); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
84 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
85 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
86 }; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
87 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
88 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
89 class LuaScripting::ExecuteEvent : public LuaScripting::IEvent |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
90 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
91 private: |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
92 std::string command_; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
93 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
94 public: |
4204 | 95 explicit ExecuteEvent(const std::string& command) : |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
96 command_(command) |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
97 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
98 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
99 |
4204 | 100 virtual void Apply(LuaScripting& that) ORTHANC_OVERRIDE |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
101 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
102 LuaScripting::Lock lock(that); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
103 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
104 if (lock.GetLua().IsExistingFunction(command_.c_str())) |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
105 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
106 LuaFunctionCall call(lock.GetLua(), command_.c_str()); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
107 call.Execute(); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
108 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
109 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
110 }; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
111 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
112 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
113 class LuaScripting::StableResourceEvent : public LuaScripting::IEvent |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
114 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
115 private: |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
116 ServerIndexChange change_; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
117 |
4551
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
118 class GetInfoOperations : public ServerIndex::IReadOnlyOperations |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
119 { |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
120 private: |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
121 const ServerIndexChange& change_; |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
122 bool ok_; |
4554 | 123 DicomMap tags_; |
4551
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
124 std::map<MetadataType, std::string> metadata_; |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
125 |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
126 public: |
4555 | 127 explicit GetInfoOperations(const ServerIndexChange& change) : |
4551
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
128 change_(change), |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
129 ok_(false) |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
130 { |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
131 } |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
132 |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
133 virtual void Apply(ServerIndex::ReadOnlyTransaction& transaction) ORTHANC_OVERRIDE |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
134 { |
4554 | 135 int64_t internalId; |
136 ResourceType level; | |
137 if (transaction.LookupResource(internalId, level, change_.GetPublicId()) && | |
138 level == change_.GetResourceType()) | |
4551
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
139 { |
4554 | 140 transaction.GetMainDicomTags(tags_, internalId); |
141 transaction.GetAllMetadata(metadata_, internalId); | |
4551
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
142 ok_ = true; |
4554 | 143 } |
4551
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
144 } |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
145 |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
146 void CallLua(LuaScripting& that, |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
147 const char* name) const |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
148 { |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
149 if (ok_) |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
150 { |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
151 Json::Value formattedMetadata = Json::objectValue; |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
152 |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
153 for (std::map<MetadataType, std::string>::const_iterator |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
154 it = metadata_.begin(); it != metadata_.end(); ++it) |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
155 { |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
156 std::string key = EnumerationToString(it->first); |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
157 formattedMetadata[key] = it->second; |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
158 } |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
159 |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
160 { |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
161 LuaScripting::Lock lock(that); |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
162 |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
163 if (lock.GetLua().IsExistingFunction(name)) |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
164 { |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
165 that.InitializeJob(); |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
166 |
4554 | 167 Json::Value json = Json::objectValue; |
168 | |
169 if (change_.GetResourceType() == ResourceType_Study) | |
170 { | |
171 DicomMap t; | |
172 tags_.ExtractStudyInformation(t); // Discard patient-related tags | |
4697
569d9ef165b1
Added "short", "simplify" and/or "full" options to control the format of DICOM tags wherever possible
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4606
diff
changeset
|
173 FromDcmtkBridge::ToJson(json, t, DicomToJsonFormat_Human); |
4554 | 174 } |
175 else | |
176 { | |
4697
569d9ef165b1
Added "short", "simplify" and/or "full" options to control the format of DICOM tags wherever possible
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4606
diff
changeset
|
177 FromDcmtkBridge::ToJson(json, tags_, DicomToJsonFormat_Human); |
4554 | 178 } |
179 | |
4551
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
180 LuaFunctionCall call(lock.GetLua(), name); |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
181 call.PushString(change_.GetPublicId()); |
4554 | 182 call.PushJson(json); |
4551
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
183 call.PushJson(formattedMetadata); |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
184 call.Execute(); |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
185 |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
186 that.SubmitJob(); |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
187 } |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
188 } |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
189 } |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
190 } |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
191 }; |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
192 |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
193 |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
194 public: |
4204 | 195 explicit StableResourceEvent(const ServerIndexChange& change) : |
196 change_(change) | |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
197 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
198 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
199 |
4204 | 200 virtual void Apply(LuaScripting& that) ORTHANC_OVERRIDE |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
201 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
202 const char* name; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
203 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
204 switch (change_.GetChangeType()) |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
205 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
206 case ChangeType_StablePatient: |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
207 name = "OnStablePatient"; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
208 break; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
209 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
210 case ChangeType_StableStudy: |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
211 name = "OnStableStudy"; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
212 break; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
213 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
214 case ChangeType_StableSeries: |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
215 name = "OnStableSeries"; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
216 break; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
217 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
218 default: |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
219 throw OrthancException(ErrorCode_InternalError); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
220 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
221 |
2638
25ae209dcea9
Avoid unnecessary calls to the database if there is no Lua callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2620
diff
changeset
|
222 { |
25ae209dcea9
Avoid unnecessary calls to the database if there is no Lua callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2620
diff
changeset
|
223 // Avoid unnecessary calls to the database if there's no Lua callback |
25ae209dcea9
Avoid unnecessary calls to the database if there is no Lua callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2620
diff
changeset
|
224 LuaScripting::Lock lock(that); |
25ae209dcea9
Avoid unnecessary calls to the database if there is no Lua callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2620
diff
changeset
|
225 |
25ae209dcea9
Avoid unnecessary calls to the database if there is no Lua callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2620
diff
changeset
|
226 if (!lock.GetLua().IsExistingFunction(name)) |
25ae209dcea9
Avoid unnecessary calls to the database if there is no Lua callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2620
diff
changeset
|
227 { |
25ae209dcea9
Avoid unnecessary calls to the database if there is no Lua callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2620
diff
changeset
|
228 return; |
25ae209dcea9
Avoid unnecessary calls to the database if there is no Lua callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2620
diff
changeset
|
229 } |
25ae209dcea9
Avoid unnecessary calls to the database if there is no Lua callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2620
diff
changeset
|
230 } |
25ae209dcea9
Avoid unnecessary calls to the database if there is no Lua callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2620
diff
changeset
|
231 |
4551
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
232 GetInfoOperations operations(change_); |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
233 that.context_.GetIndex().Apply(operations); |
350a22c094f2
testing replay of transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
234 operations.CallLua(that, name); |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
235 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
236 }; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
237 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
238 |
2675
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
239 class LuaScripting::JobEvent : public LuaScripting::IEvent |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
240 { |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
241 public: |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
242 enum Type |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
243 { |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
244 Type_Failure, |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
245 Type_Submitted, |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
246 Type_Success |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
247 }; |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
248 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
249 private: |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
250 Type type_; |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
251 std::string jobId_; |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
252 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
253 public: |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
254 JobEvent(Type type, |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
255 const std::string& jobId) : |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
256 type_(type), |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
257 jobId_(jobId) |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
258 { |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
259 } |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
260 |
4204 | 261 virtual void Apply(LuaScripting& that) ORTHANC_OVERRIDE |
2675
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
262 { |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
263 std::string functionName; |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
264 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
265 switch (type_) |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
266 { |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
267 case Type_Failure: |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
268 functionName = "OnJobFailure"; |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
269 break; |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
270 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
271 case Type_Submitted: |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
272 functionName = "OnJobSubmitted"; |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
273 break; |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
274 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
275 case Type_Success: |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
276 functionName = "OnJobSuccess"; |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
277 break; |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
278 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
279 default: |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
280 throw OrthancException(ErrorCode_InternalError); |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
281 } |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
282 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
283 { |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
284 LuaScripting::Lock lock(that); |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
285 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
286 if (lock.GetLua().IsExistingFunction(functionName.c_str())) |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
287 { |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
288 LuaFunctionCall call(lock.GetLua(), functionName.c_str()); |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
289 call.PushString(jobId_); |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
290 call.Execute(); |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
291 } |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
292 } |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
293 } |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
294 }; |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
295 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
296 |
3676
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
297 class LuaScripting::DeleteEvent : public LuaScripting::IEvent |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
298 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
299 private: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
300 ResourceType level_; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
301 std::string publicId_; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
302 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
303 public: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
304 DeleteEvent(ResourceType level, |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
305 const std::string& publicId) : |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
306 level_(level), |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
307 publicId_(publicId) |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
308 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
309 } |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
310 |
4204 | 311 virtual void Apply(LuaScripting& that) ORTHANC_OVERRIDE |
3676
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
312 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
313 std::string functionName; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
314 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
315 switch (level_) |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
316 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
317 case ResourceType_Patient: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
318 functionName = "OnDeletedPatient"; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
319 break; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
320 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
321 case ResourceType_Study: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
322 functionName = "OnDeletedStudy"; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
323 break; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
324 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
325 case ResourceType_Series: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
326 functionName = "OnDeletedSeries"; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
327 break; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
328 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
329 case ResourceType_Instance: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
330 functionName = "OnDeletedInstance"; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
331 break; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
332 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
333 default: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
334 throw OrthancException(ErrorCode_InternalError); |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
335 } |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
336 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
337 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
338 LuaScripting::Lock lock(that); |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
339 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
340 if (lock.GetLua().IsExistingFunction(functionName.c_str())) |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
341 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
342 LuaFunctionCall call(lock.GetLua(), functionName.c_str()); |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
343 call.PushString(publicId_); |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
344 call.Execute(); |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
345 } |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
346 } |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
347 } |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
348 }; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
349 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
350 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
351 class LuaScripting::UpdateEvent : public LuaScripting::IEvent |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
352 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
353 private: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
354 ResourceType level_; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
355 std::string publicId_; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
356 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
357 public: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
358 UpdateEvent(ResourceType level, |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
359 const std::string& publicId) : |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
360 level_(level), |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
361 publicId_(publicId) |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
362 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
363 } |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
364 |
4204 | 365 virtual void Apply(LuaScripting& that) ORTHANC_OVERRIDE |
3676
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
366 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
367 std::string functionName; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
368 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
369 switch (level_) |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
370 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
371 case ResourceType_Patient: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
372 functionName = "OnUpdatedPatient"; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
373 break; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
374 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
375 case ResourceType_Study: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
376 functionName = "OnUpdatedStudy"; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
377 break; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
378 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
379 case ResourceType_Series: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
380 functionName = "OnUpdatedSeries"; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
381 break; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
382 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
383 case ResourceType_Instance: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
384 functionName = "OnUpdatedInstance"; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
385 break; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
386 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
387 default: |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
388 throw OrthancException(ErrorCode_InternalError); |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
389 } |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
390 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
391 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
392 LuaScripting::Lock lock(that); |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
393 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
394 if (lock.GetLua().IsExistingFunction(functionName.c_str())) |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
395 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
396 LuaFunctionCall call(lock.GetLua(), functionName.c_str()); |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
397 call.PushString(publicId_); |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
398 call.Execute(); |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
399 } |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
400 } |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
401 } |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
402 }; |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
403 |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
404 |
1444
b2b09a3dbd8e
refactoring: OrthancHttpHandler inside OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1441
diff
changeset
|
405 ServerContext* LuaScripting::GetServerContext(lua_State *state) |
1437
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
406 { |
1444
b2b09a3dbd8e
refactoring: OrthancHttpHandler inside OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1441
diff
changeset
|
407 const void* value = LuaContext::GetGlobalVariable(state, "_ServerContext"); |
b2b09a3dbd8e
refactoring: OrthancHttpHandler inside OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1441
diff
changeset
|
408 return const_cast<ServerContext*>(reinterpret_cast<const ServerContext*>(value)); |
1437
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
409 } |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
410 |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
411 |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
412 // Syntax in Lua: RestApiGet(uri, builtin) |
1444
b2b09a3dbd8e
refactoring: OrthancHttpHandler inside OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1441
diff
changeset
|
413 int LuaScripting::RestApiGet(lua_State *state) |
1437
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
414 { |
1444
b2b09a3dbd8e
refactoring: OrthancHttpHandler inside OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1441
diff
changeset
|
415 ServerContext* serverContext = GetServerContext(state); |
b2b09a3dbd8e
refactoring: OrthancHttpHandler inside OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1441
diff
changeset
|
416 if (serverContext == NULL) |
1437
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
417 { |
1440 | 418 LOG(ERROR) << "Lua: The Orthanc API is unavailable"; |
1437
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
419 lua_pushnil(state); |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
420 return 1; |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
421 } |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
422 |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
423 // Check the types of the arguments |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
424 int nArgs = lua_gettop(state); |
3442
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
425 if (nArgs < 1 || nArgs > 3 || |
1444
b2b09a3dbd8e
refactoring: OrthancHttpHandler inside OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1441
diff
changeset
|
426 !lua_isstring(state, 1) || // URI |
3442
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
427 (nArgs >= 2 && !lua_isboolean(state, 2))) // Restrict to built-in API? |
1437
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
428 { |
1444
b2b09a3dbd8e
refactoring: OrthancHttpHandler inside OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1441
diff
changeset
|
429 LOG(ERROR) << "Lua: Bad parameters to RestApiGet()"; |
1437
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
430 lua_pushnil(state); |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
431 return 1; |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
432 } |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
433 |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
434 const char* uri = lua_tostring(state, 1); |
1545 | 435 bool builtin = (nArgs == 2 ? lua_toboolean(state, 2) != 0 : false); |
1444
b2b09a3dbd8e
refactoring: OrthancHttpHandler inside OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1441
diff
changeset
|
436 |
3442
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
437 std::map<std::string, std::string> headers; |
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
438 LuaContext::GetDictionaryArgument(headers, state, 3, true /* HTTP header key to lower case */); |
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
439 |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
440 try |
1437
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
441 { |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
442 std::string result; |
4605
c8f444e8556d
new function in the plugin SDK: OrthancPluginCallRestApi()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
443 if (IHttpHandler::SimpleGet(result, NULL, serverContext->GetHttpHandler().RestrictToOrthancRestApi(builtin), |
c8f444e8556d
new function in the plugin SDK: OrthancPluginCallRestApi()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
444 RequestOrigin_Lua, uri, headers) == HttpStatus_200_Ok) |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
445 { |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
446 lua_pushlstring(state, result.c_str(), result.size()); |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
447 return 1; |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
448 } |
1437
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
449 } |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
450 catch (OrthancException& e) |
1437
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
451 { |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
452 LOG(ERROR) << "Lua: " << e.What(); |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
453 } |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
454 |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
455 LOG(ERROR) << "Lua: Error in RestApiGet() for URI: " << uri; |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
456 lua_pushnil(state); |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
457 return 1; |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
458 } |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
459 |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
460 |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
461 int LuaScripting::RestApiPostOrPut(lua_State *state, |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
462 bool isPost) |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
463 { |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
464 ServerContext* serverContext = GetServerContext(state); |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
465 if (serverContext == NULL) |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
466 { |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
467 LOG(ERROR) << "Lua: The Orthanc API is unavailable"; |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
468 lua_pushnil(state); |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
469 return 1; |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
470 } |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
471 |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
472 // Check the types of the arguments |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
473 int nArgs = lua_gettop(state); |
3442
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
474 if (nArgs < 2 || nArgs > 4 || |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
475 !lua_isstring(state, 1) || // URI |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
476 !lua_isstring(state, 2) || // Body |
3442
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
477 (nArgs >= 3 && !lua_isboolean(state, 3))) // Restrict to built-in API? |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
478 { |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
479 LOG(ERROR) << "Lua: Bad parameters to " << (isPost ? "RestApiPost()" : "RestApiPut()"); |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
480 lua_pushnil(state); |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
481 return 1; |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
482 } |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
483 |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
484 const char* uri = lua_tostring(state, 1); |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
485 size_t bodySize = 0; |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
486 const char* bodyData = lua_tolstring(state, 2, &bodySize); |
1545 | 487 bool builtin = (nArgs == 3 ? lua_toboolean(state, 3) != 0 : false); |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
488 |
3442
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
489 std::map<std::string, std::string> headers; |
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
490 LuaContext::GetDictionaryArgument(headers, state, 4, true /* HTTP header key to lower case */); |
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
491 |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
492 try |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
493 { |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
494 std::string result; |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
495 if (isPost ? |
4605
c8f444e8556d
new function in the plugin SDK: OrthancPluginCallRestApi()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
496 IHttpHandler::SimplePost(result, NULL, |
c8f444e8556d
new function in the plugin SDK: OrthancPluginCallRestApi()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
497 serverContext->GetHttpHandler().RestrictToOrthancRestApi(builtin), |
c8f444e8556d
new function in the plugin SDK: OrthancPluginCallRestApi()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
498 RequestOrigin_Lua, uri, bodyData, bodySize, headers) == HttpStatus_200_Ok : |
c8f444e8556d
new function in the plugin SDK: OrthancPluginCallRestApi()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
499 IHttpHandler::SimplePut(result, NULL, |
c8f444e8556d
new function in the plugin SDK: OrthancPluginCallRestApi()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
500 serverContext->GetHttpHandler().RestrictToOrthancRestApi(builtin), |
c8f444e8556d
new function in the plugin SDK: OrthancPluginCallRestApi()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
501 RequestOrigin_Lua, uri, bodyData, bodySize, headers) == HttpStatus_200_Ok) |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
502 { |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
503 lua_pushlstring(state, result.c_str(), result.size()); |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
504 return 1; |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
505 } |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
506 } |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
507 catch (OrthancException& e) |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
508 { |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
509 LOG(ERROR) << "Lua: " << e.What(); |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
510 } |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
511 |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
512 LOG(ERROR) << "Lua: Error in " << (isPost ? "RestApiPost()" : "RestApiPut()") << " for URI: " << uri; |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
513 lua_pushnil(state); |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
514 return 1; |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
515 } |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
516 |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
517 |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
518 // Syntax in Lua: RestApiPost(uri, body, builtin) |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
519 int LuaScripting::RestApiPost(lua_State *state) |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
520 { |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
521 return RestApiPostOrPut(state, true); |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
522 } |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
523 |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
524 |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
525 // Syntax in Lua: RestApiPut(uri, body, builtin) |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
526 int LuaScripting::RestApiPut(lua_State *state) |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
527 { |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
528 return RestApiPostOrPut(state, false); |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
529 } |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
530 |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
531 |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
532 // Syntax in Lua: RestApiDelete(uri, builtin) |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
533 int LuaScripting::RestApiDelete(lua_State *state) |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
534 { |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
535 ServerContext* serverContext = GetServerContext(state); |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
536 if (serverContext == NULL) |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
537 { |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
538 LOG(ERROR) << "Lua: The Orthanc API is unavailable"; |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
539 lua_pushnil(state); |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
540 return 1; |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
541 } |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
542 |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
543 // Check the types of the arguments |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
544 int nArgs = lua_gettop(state); |
3442
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
545 if (nArgs < 1 || nArgs > 3 || |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
546 !lua_isstring(state, 1) || // URI |
3442
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
547 (nArgs >= 2 && !lua_isboolean(state, 2))) // Restrict to built-in API? |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
548 { |
1449 | 549 LOG(ERROR) << "Lua: Bad parameters to RestApiDelete()"; |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
550 lua_pushnil(state); |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
551 return 1; |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
552 } |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
553 |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
554 const char* uri = lua_tostring(state, 1); |
1545 | 555 bool builtin = (nArgs == 2 ? lua_toboolean(state, 2) != 0 : false); |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
556 |
3442
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
557 std::map<std::string, std::string> headers; |
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
558 LuaContext::GetDictionaryArgument(headers, state, 3, true /* HTTP header key to lower case */); |
dd1e68f2d0c0
Fix issue #106 (Unable to export preview as jpeg from Lua script)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3187
diff
changeset
|
559 |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
560 try |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
561 { |
4605
c8f444e8556d
new function in the plugin SDK: OrthancPluginCallRestApi()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
562 if (IHttpHandler::SimpleDelete(NULL, serverContext->GetHttpHandler().RestrictToOrthancRestApi(builtin), |
c8f444e8556d
new function in the plugin SDK: OrthancPluginCallRestApi()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4507
diff
changeset
|
563 RequestOrigin_Lua, uri, headers) == HttpStatus_200_Ok) |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
564 { |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
565 lua_pushboolean(state, 1); |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
566 return 1; |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
567 } |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
568 } |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
569 catch (OrthancException& e) |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
570 { |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
571 LOG(ERROR) << "Lua: " << e.What(); |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
572 } |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
573 |
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
574 LOG(ERROR) << "Lua: Error in RestApiDelete() for URI: " << uri; |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
575 lua_pushnil(state); |
1437
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
576 |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
577 return 1; |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
578 } |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
579 |
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
580 |
1587
d7e569640d09
New function "GetOrthancConfiguration()" to get the Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1574
diff
changeset
|
581 // Syntax in Lua: GetOrthancConfiguration() |
d7e569640d09
New function "GetOrthancConfiguration()" to get the Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1574
diff
changeset
|
582 int LuaScripting::GetOrthancConfiguration(lua_State *state) |
d7e569640d09
New function "GetOrthancConfiguration()" to get the Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1574
diff
changeset
|
583 { |
d7e569640d09
New function "GetOrthancConfiguration()" to get the Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1574
diff
changeset
|
584 Json::Value configuration; |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
585 |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
586 { |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
587 OrthancConfiguration::ReaderLock lock; |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
588 configuration = lock.GetJson(); |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
589 } |
1587
d7e569640d09
New function "GetOrthancConfiguration()" to get the Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1574
diff
changeset
|
590 |
d7e569640d09
New function "GetOrthancConfiguration()" to get the Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1574
diff
changeset
|
591 LuaContext::GetLuaContext(state).PushJson(configuration); |
d7e569640d09
New function "GetOrthancConfiguration()" to get the Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1574
diff
changeset
|
592 |
d7e569640d09
New function "GetOrthancConfiguration()" to get the Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1574
diff
changeset
|
593 return 1; |
d7e569640d09
New function "GetOrthancConfiguration()" to get the Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1574
diff
changeset
|
594 } |
d7e569640d09
New function "GetOrthancConfiguration()" to get the Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1574
diff
changeset
|
595 |
d7e569640d09
New function "GetOrthancConfiguration()" to get the Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1574
diff
changeset
|
596 |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
597 size_t LuaScripting::ParseOperation(LuaJobManager::Lock& lock, |
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
598 const std::string& operation, |
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
599 const Json::Value& parameters) |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
600 { |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
601 if (operation == "delete") |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
602 { |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
603 LOG(INFO) << "Lua script to delete resource " << parameters["Resource"].asString(); |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
604 return lock.AddDeleteResourceOperation(context_); |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
605 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
606 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
607 if (operation == "store-scu") |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
608 { |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
609 std::string localAet; |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
610 if (parameters.isMember("LocalAet")) |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
611 { |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
612 localAet = parameters["LocalAet"].asString(); |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
613 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
614 else |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
615 { |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
616 localAet = context_.GetDefaultLocalApplicationEntityTitle(); |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
617 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
618 |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
619 std::string name = parameters["Modality"].asString(); |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
620 RemoteModalityParameters modality; |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
621 |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
622 { |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
623 OrthancConfiguration::ReaderLock configLock; |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
624 modality = configLock.GetConfiguration().GetModalityUsingSymbolicName(name); |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
625 } |
2222
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
626 |
21713ce8717b
Fix handling of Move Originator AET and ID in C-MOVE SCP
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
627 // This is not a C-MOVE: No need to call "StoreScuCommand::SetMoveOriginator()" |
3894
8f7ad4989fec
transcoding to uncompressed transfer syntaxes over DICOM protocol is implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3851
diff
changeset
|
628 return lock.AddStoreScuOperation(context_, localAet, modality); |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
629 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
630 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
631 if (operation == "store-peer") |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
632 { |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
633 OrthancConfiguration::ReaderLock configLock; |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
634 std::string name = parameters["Peer"].asString(); |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
635 |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
636 WebServiceParameters peer; |
2944
f395460af74d
simplifying OrthancConfiguration for modalities/peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2940
diff
changeset
|
637 if (configLock.GetConfiguration().LookupOrthancPeer(peer, name)) |
2799
6e3a60b85da6
New primitives to access Orthanc peers from plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2738
diff
changeset
|
638 { |
6e3a60b85da6
New primitives to access Orthanc peers from plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2738
diff
changeset
|
639 return lock.AddStorePeerOperation(peer); |
6e3a60b85da6
New primitives to access Orthanc peers from plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2738
diff
changeset
|
640 } |
6e3a60b85da6
New primitives to access Orthanc peers from plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2738
diff
changeset
|
641 else |
6e3a60b85da6
New primitives to access Orthanc peers from plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2738
diff
changeset
|
642 { |
2955 | 643 throw OrthancException(ErrorCode_UnknownResource, |
644 "No peer with symbolic name: " + name); | |
2799
6e3a60b85da6
New primitives to access Orthanc peers from plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2738
diff
changeset
|
645 } |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
646 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
647 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
648 if (operation == "modify") |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
649 { |
3712
2a170a8f1faf
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3676
diff
changeset
|
650 std::unique_ptr<DicomModification> modification(new DicomModification); |
2519
2e6b7862ccf2
ParseAnonymizationRequest/ParseModifyRequest now in DicomModification
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
651 modification->ParseModifyRequest(parameters); |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
652 |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
653 return lock.AddModifyInstanceOperation(context_, modification.release()); |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
654 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
655 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
656 if (operation == "call-system") |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
657 { |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
658 LOG(INFO) << "Lua script to call system command on " << parameters["Resource"].asString(); |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
659 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
660 const Json::Value& argsIn = parameters["Arguments"]; |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
661 if (argsIn.type() != Json::arrayValue) |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
662 { |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
663 throw OrthancException(ErrorCode_BadParameterType); |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
664 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
665 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
666 std::vector<std::string> args; |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
667 args.reserve(argsIn.size()); |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
668 for (Json::Value::ArrayIndex i = 0; i < argsIn.size(); ++i) |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
669 { |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
670 // http://jsoncpp.sourceforge.net/namespace_json.html#7d654b75c16a57007925868e38212b4e |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
671 switch (argsIn[i].type()) |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
672 { |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
673 case Json::stringValue: |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
674 args.push_back(argsIn[i].asString()); |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
675 break; |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
676 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
677 case Json::intValue: |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
678 args.push_back(boost::lexical_cast<std::string>(argsIn[i].asInt())); |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
679 break; |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
680 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
681 case Json::uintValue: |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
682 args.push_back(boost::lexical_cast<std::string>(argsIn[i].asUInt())); |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
683 break; |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
684 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
685 case Json::realValue: |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
686 args.push_back(boost::lexical_cast<std::string>(argsIn[i].asFloat())); |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
687 break; |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
688 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
689 default: |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
690 throw OrthancException(ErrorCode_BadParameterType); |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
691 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
692 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
693 |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
694 std::string command = parameters["Command"].asString(); |
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
695 std::vector<std::string> postArgs; |
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
696 |
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
697 return lock.AddSystemCallOperation(command, args, postArgs); |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
698 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
699 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
700 throw OrthancException(ErrorCode_ParameterOutOfRange); |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
701 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
702 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
703 |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
704 void LuaScripting::InitializeJob() |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
705 { |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
706 lua_.Execute("_InitializeJob()"); |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
707 } |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
708 |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
709 |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
710 void LuaScripting::SubmitJob() |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
711 { |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
712 Json::Value operations; |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
713 LuaFunctionCall call2(lua_, "_AccessJob"); |
1658
54bafe0e7e7b
Optional argument "keepStrings" in "DumpJson()"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1587
diff
changeset
|
714 call2.ExecuteToJson(operations, false); |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
715 |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
716 if (operations.type() != Json::arrayValue) |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
717 { |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
718 throw OrthancException(ErrorCode_InternalError); |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
719 } |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
720 |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
721 LuaJobManager::Lock lock(jobManager_, context_.GetJobsEngine()); |
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
722 |
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
723 bool isFirst = true; |
2727 | 724 size_t previous = 0; // Dummy initialization to avoid warning |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
725 |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
726 for (Json::Value::ArrayIndex i = 0; i < operations.size(); ++i) |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
727 { |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
728 if (operations[i].type() != Json::objectValue || |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
729 !operations[i].isMember("Operation")) |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
730 { |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
731 throw OrthancException(ErrorCode_InternalError); |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
732 } |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
733 |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
734 const Json::Value& parameters = operations[i]; |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
735 if (!parameters.isMember("Resource")) |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
736 { |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
737 throw OrthancException(ErrorCode_InternalError); |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
738 } |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
739 |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
740 std::string operation = parameters["Operation"].asString(); |
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
741 size_t index = ParseOperation(lock, operation, operations[i]); |
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
742 |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
743 std::string resource = parameters["Resource"].asString(); |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
744 if (!resource.empty()) |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
745 { |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
746 lock.AddDicomInstanceInput(index, context_, resource); |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
747 } |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
748 else if (!isFirst) |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
749 { |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
750 lock.Connect(previous, index); |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
751 } |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
752 |
2609
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
753 isFirst = false; |
f7a84b551ee4
switch Lua to new jobs engine
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2519
diff
changeset
|
754 previous = index; |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
755 } |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
756 } |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
757 |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
758 |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
759 LuaScripting::LuaScripting(ServerContext& context) : |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
760 context_(context), |
2651
1da5a052c777
testing value serialization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2649
diff
changeset
|
761 state_(State_Setup) |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
762 { |
1444
b2b09a3dbd8e
refactoring: OrthancHttpHandler inside OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1441
diff
changeset
|
763 lua_.SetGlobalVariable("_ServerContext", &context); |
b2b09a3dbd8e
refactoring: OrthancHttpHandler inside OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1441
diff
changeset
|
764 lua_.RegisterFunction("RestApiGet", RestApiGet); |
1447
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
765 lua_.RegisterFunction("RestApiPost", RestApiPost); |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
766 lua_.RegisterFunction("RestApiPut", RestApiPut); |
5ba7471780ae
refactoring: HttpToolbox, DumpJson in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1445
diff
changeset
|
767 lua_.RegisterFunction("RestApiDelete", RestApiDelete); |
1587
d7e569640d09
New function "GetOrthancConfiguration()" to get the Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1574
diff
changeset
|
768 lua_.RegisterFunction("GetOrthancConfiguration", GetOrthancConfiguration); |
2738
3a55b77339ff
fix deadlock in Lua scripts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2727
diff
changeset
|
769 |
3a55b77339ff
fix deadlock in Lua scripts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2727
diff
changeset
|
770 LOG(INFO) << "Initializing Lua for the event handler"; |
3a55b77339ff
fix deadlock in Lua scripts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2727
diff
changeset
|
771 LoadGlobalConfiguration(); |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
772 } |
1437
02f5a3f5c0a0
access to the REST API from Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1436
diff
changeset
|
773 |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
774 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
775 LuaScripting::~LuaScripting() |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
776 { |
2651
1da5a052c777
testing value serialization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2649
diff
changeset
|
777 if (state_ == State_Running) |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
778 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
779 LOG(ERROR) << "INTERNAL ERROR: LuaScripting::Stop() should be invoked manually to avoid mess in the destruction order!"; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
780 Stop(); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
781 } |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
782 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
783 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
784 |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
785 void LuaScripting::EventThread(LuaScripting* that) |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
786 { |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
787 for (;;) |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
788 { |
3712
2a170a8f1faf
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3676
diff
changeset
|
789 std::unique_ptr<IDynamicObject> event(that->pendingEvents_.Dequeue(100)); |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
790 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
791 if (event.get() == NULL) |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
792 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
793 // The event queue is empty, check whether we should stop |
2618 | 794 boost::recursive_mutex::scoped_lock lock(that->mutex_); |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
795 |
2651
1da5a052c777
testing value serialization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2649
diff
changeset
|
796 if (that->state_ != State_Running) |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
797 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
798 return; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
799 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
800 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
801 else |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
802 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
803 try |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
804 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
805 dynamic_cast<IEvent&>(*event).Apply(*that); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
806 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
807 catch (OrthancException& e) |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
808 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
809 LOG(ERROR) << "Error while processing Lua events: " << e.What(); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
810 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
811 } |
3851
6498739a3c3c
refactoring: TimeoutDicomConnectionManager is now only used by Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3845
diff
changeset
|
812 |
6498739a3c3c
refactoring: TimeoutDicomConnectionManager is now only used by Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3845
diff
changeset
|
813 that->jobManager_.GetDicomConnectionManager().CloseIfInactive(); |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
814 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
815 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
816 |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
817 |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
818 void LuaScripting::Start() |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
819 { |
2618 | 820 boost::recursive_mutex::scoped_lock lock(mutex_); |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
821 |
2651
1da5a052c777
testing value serialization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2649
diff
changeset
|
822 if (state_ != State_Setup || |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
823 eventThread_.joinable() /* already started */) |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
824 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
825 throw OrthancException(ErrorCode_BadSequenceOfCalls); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
826 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
827 else |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
828 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
829 LOG(INFO) << "Starting the Lua engine"; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
830 eventThread_ = boost::thread(EventThread, this); |
2665
389d050a2e66
fix deadlock, speed up unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2651
diff
changeset
|
831 state_ = State_Running; |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
832 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
833 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
834 |
1572
904096e7367e
More information about the origin request in OnStoredInstance() callbacks
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1571
diff
changeset
|
835 |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
836 void LuaScripting::Stop() |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
837 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
838 { |
2618 | 839 boost::recursive_mutex::scoped_lock lock(mutex_); |
1572
904096e7367e
More information about the origin request in OnStoredInstance() callbacks
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1571
diff
changeset
|
840 |
2651
1da5a052c777
testing value serialization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2649
diff
changeset
|
841 if (state_ != State_Running) |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
842 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
843 throw OrthancException(ErrorCode_BadSequenceOfCalls); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
844 } |
1572
904096e7367e
More information about the origin request in OnStoredInstance() callbacks
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1571
diff
changeset
|
845 |
2651
1da5a052c777
testing value serialization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2649
diff
changeset
|
846 state_ = State_Done; |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
847 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
848 |
2620
1232922c8793
speeding up shutdown if Lua script is in trailing phase
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2618
diff
changeset
|
849 jobManager_.AwakeTrailingSleep(); |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
850 |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
851 if (eventThread_.joinable()) |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
852 { |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
853 LOG(INFO) << "Stopping the Lua engine"; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
854 eventThread_.join(); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
855 LOG(INFO) << "The Lua engine has stopped"; |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
856 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
857 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
858 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
859 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
860 void LuaScripting::SignalStoredInstance(const std::string& publicId, |
3916
0e3849268a55
new plugin SDK primitives related to OrthancPluginDicomInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3894
diff
changeset
|
861 const DicomInstanceToStore& instance, |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
862 const Json::Value& simplifiedTags) |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
863 { |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
864 Json::Value metadata = Json::objectValue; |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
865 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
866 for (ServerIndex::MetadataMap::const_iterator |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
867 it = instance.GetMetadata().begin(); |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
868 it != instance.GetMetadata().end(); ++it) |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
869 { |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
870 if (it->first.first == ResourceType_Instance) |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
871 { |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
872 metadata[EnumerationToString(it->first.second)] = it->second; |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
873 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
874 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
875 |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
876 pendingEvents_.Enqueue(new OnStoredInstanceEvent(publicId, simplifiedTags, metadata, instance)); |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
877 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
878 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
879 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
880 void LuaScripting::SignalChange(const ServerIndexChange& change) |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
881 { |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
882 if (change.GetChangeType() == ChangeType_StablePatient || |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
883 change.GetChangeType() == ChangeType_StableStudy || |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
884 change.GetChangeType() == ChangeType_StableSeries) |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
885 { |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
886 pendingEvents_.Enqueue(new StableResourceEvent(change)); |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
887 } |
3676
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
888 else if (change.GetChangeType() == ChangeType_Deleted) |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
889 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
890 pendingEvents_.Enqueue(new DeleteEvent(change.GetResourceType(), change.GetPublicId())); |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
891 } |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
892 else if (change.GetChangeType() == ChangeType_UpdatedAttachment || |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
893 change.GetChangeType() == ChangeType_UpdatedMetadata) |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
894 { |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
895 pendingEvents_.Enqueue(new UpdateEvent(change.GetResourceType(), change.GetPublicId())); |
231b46ce1984
Lua events for deleted/updated resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3640
diff
changeset
|
896 } |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
897 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
898 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
899 |
1574
0c29ebe80ac9
give access to full request origin in ReceivedInstanceFilter (Lua)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1572
diff
changeset
|
900 bool LuaScripting::FilterIncomingInstance(const DicomInstanceToStore& instance, |
0c29ebe80ac9
give access to full request origin in ReceivedInstanceFilter (Lua)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1572
diff
changeset
|
901 const Json::Value& simplified) |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
902 { |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
903 static const char* NAME = "ReceivedInstanceFilter"; |
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
904 |
1456
68827c07e683
fix recursive calls with Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1455
diff
changeset
|
905 boost::recursive_mutex::scoped_lock lock(mutex_); |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
906 |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
907 if (lua_.IsExistingFunction(NAME)) |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
908 { |
1435
6406f5493d92
refactoring: Lua toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1433
diff
changeset
|
909 LuaFunctionCall call(lua_, NAME); |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
910 call.PushJson(simplified); |
1574
0c29ebe80ac9
give access to full request origin in ReceivedInstanceFilter (Lua)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1572
diff
changeset
|
911 |
0c29ebe80ac9
give access to full request origin in ReceivedInstanceFilter (Lua)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1572
diff
changeset
|
912 Json::Value origin; |
2640
c691fcf66071
ResourceModificationJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2638
diff
changeset
|
913 instance.GetOrigin().Format(origin); |
1574
0c29ebe80ac9
give access to full request origin in ReceivedInstanceFilter (Lua)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1572
diff
changeset
|
914 call.PushJson(origin); |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
915 |
3845
281045a1e6db
new "info" field in "ReceivedInstanceFilter()" callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
916 Json::Value info = Json::objectValue; |
281045a1e6db
new "info" field in "ReceivedInstanceFilter()" callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
917 info["HasPixelData"] = instance.HasPixelData(); |
281045a1e6db
new "info" field in "ReceivedInstanceFilter()" callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
918 |
4507
b4c58795f3a8
widening the use of DicomTransferSyntax enum
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4460
diff
changeset
|
919 DicomTransferSyntax s; |
3845
281045a1e6db
new "info" field in "ReceivedInstanceFilter()" callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
920 if (instance.LookupTransferSyntax(s)) |
281045a1e6db
new "info" field in "ReceivedInstanceFilter()" callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
921 { |
4507
b4c58795f3a8
widening the use of DicomTransferSyntax enum
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4460
diff
changeset
|
922 info["TransferSyntaxUID"] = GetTransferSyntaxUid(s); |
3845
281045a1e6db
new "info" field in "ReceivedInstanceFilter()" callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
923 } |
281045a1e6db
new "info" field in "ReceivedInstanceFilter()" callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
924 |
281045a1e6db
new "info" field in "ReceivedInstanceFilter()" callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
925 call.PushJson(info); |
281045a1e6db
new "info" field in "ReceivedInstanceFilter()" callback
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
926 |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
927 if (!call.ExecutePredicate()) |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
928 { |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
929 return false; |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
930 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
931 } |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
932 |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
933 return true; |
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
934 } |
1455
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1449
diff
changeset
|
935 |
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1449
diff
changeset
|
936 |
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1449
diff
changeset
|
937 void LuaScripting::Execute(const std::string& command) |
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1449
diff
changeset
|
938 { |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
939 pendingEvents_.Enqueue(new ExecuteEvent(command)); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
940 } |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
941 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
942 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
943 void LuaScripting::LoadGlobalConfiguration() |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
944 { |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
945 OrthancConfiguration::ReaderLock configLock; |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
946 |
4031
e3b3af80732d
ServerResources, and moving EmbeddedResourceHttpHandler from Core to OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4030
diff
changeset
|
947 { |
e3b3af80732d
ServerResources, and moving EmbeddedResourceHttpHandler from Core to OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4030
diff
changeset
|
948 std::string command; |
e3b3af80732d
ServerResources, and moving EmbeddedResourceHttpHandler from Core to OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4030
diff
changeset
|
949 Orthanc::ServerResources::GetFileResource(command, Orthanc::ServerResources::LUA_TOOLBOX); |
e3b3af80732d
ServerResources, and moving EmbeddedResourceHttpHandler from Core to OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4030
diff
changeset
|
950 lua_.Execute(command); |
e3b3af80732d
ServerResources, and moving EmbeddedResourceHttpHandler from Core to OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4030
diff
changeset
|
951 } |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
952 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
953 std::list<std::string> luaScripts; |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
954 configLock.GetConfiguration().GetListOfStringsParameter(luaScripts, "LuaScripts"); |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
955 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
956 LuaScripting::Lock lock(*this); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
957 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
958 for (std::list<std::string>::const_iterator |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
959 it = luaScripts.begin(); it != luaScripts.end(); ++it) |
1455
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1449
diff
changeset
|
960 { |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2799
diff
changeset
|
961 std::string path = configLock.GetConfiguration().InterpretStringParameterAsPath(*it); |
2616
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
962 LOG(INFO) << "Installing the Lua scripts from: " << path; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
963 std::string script; |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
964 SystemToolbox::ReadFile(script, path); |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
965 |
2f3007bf0708
event queues in Lua, serialization of sequence of operations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2609
diff
changeset
|
966 lock.GetLua().Execute(script); |
1455
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1449
diff
changeset
|
967 } |
a68545767975
Initialize() and Finalize() events in Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1449
diff
changeset
|
968 } |
2675
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
969 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
970 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
971 void LuaScripting::SignalJobSubmitted(const std::string& jobId) |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
972 { |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
973 pendingEvents_.Enqueue(new JobEvent(JobEvent::Type_Submitted, jobId)); |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
974 } |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
975 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
976 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
977 void LuaScripting::SignalJobSuccess(const std::string& jobId) |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
978 { |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
979 pendingEvents_.Enqueue(new JobEvent(JobEvent::Type_Success, jobId)); |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
980 } |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
981 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
982 |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
983 void LuaScripting::SignalJobFailure(const std::string& jobId) |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
984 { |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
985 pendingEvents_.Enqueue(new JobEvent(JobEvent::Type_Failure, jobId)); |
3fc310ceb6d4
lua callbacks for jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2665
diff
changeset
|
986 } |
1433
461e7554bff7
refactoring: LuaScripting
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
987 } |