Mercurial > hg > orthanc
annotate OrthancServer/Sources/OrthancInitialization.cpp @ 4945:6a59dc426f93
added ParsedDicomFile::DecodeOverlay()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sun, 20 Mar 2022 11:35:17 +0100 |
parents | 6eff25f70121 |
children | 94a7b681b340 |
rev | line source |
---|---|
0 | 1 /** |
62 | 2 * Orthanc - A Lightweight, RESTful DICOM Store |
1900 | 3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
1288
6e7e5ed91c2d
upgrade to year 2015
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1275
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
4870
43e613a7756b
upgrade to year 2022
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4831
diff
changeset
|
5 * Copyright (C) 2017-2022 Osimis S.A., Belgium |
43e613a7756b
upgrade to year 2022
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4831
diff
changeset
|
6 * Copyright (C) 2021-2022 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
0 | 7 * |
8 * This program is free software: you can redistribute it and/or | |
9 * modify it under the terms of the GNU General Public License as | |
10 * published by the Free Software Foundation, either version 3 of the | |
11 * License, or (at your option) any later version. | |
12 * | |
13 * This program is distributed in the hope that it will be useful, but | |
14 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
16 * General Public License for more details. | |
17 * | |
18 * You should have received a copy of the GNU General Public License | |
19 * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
20 **/ | |
21 | |
22 | |
831
84513f2ee1f3
pch for unit tests and server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
824
diff
changeset
|
23 #include "PrecompiledHeadersServer.h" |
2547
8b6b0b6ece6b
MinGW, ORTHANC_FRAMEWORK_URL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
24 |
8b6b0b6ece6b
MinGW, ORTHANC_FRAMEWORK_URL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
25 #if defined(_WIN32) |
8b6b0b6ece6b
MinGW, ORTHANC_FRAMEWORK_URL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
26 // "Please include winsock2.h before windows.h" |
8b6b0b6ece6b
MinGW, ORTHANC_FRAMEWORK_URL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
27 # include <winsock2.h> |
8b6b0b6ece6b
MinGW, ORTHANC_FRAMEWORK_URL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
28 #endif |
8b6b0b6ece6b
MinGW, ORTHANC_FRAMEWORK_URL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
29 |
4366
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
30 #if !defined(HAVE_MALLOPT) |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
31 # error Macro HAVE_MALLOPT must be defined |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
32 #endif |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
33 |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
34 #if HAVE_MALLOPT == 1 |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
35 # include <malloc.h> |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
36 #endif |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
37 |
62 | 38 #include "OrthancInitialization.h" |
0 | 39 |
4045 | 40 #include "../../OrthancFramework/Sources/DicomParsing/FromDcmtkBridge.h" |
41 #include "../../OrthancFramework/Sources/FileStorage/FilesystemStorage.h" | |
4105
c02a2d9efbc2
move FromDcmtkBridge::ExecuteToDicom() to LuaFunctionCall, to remove dependency of DCMTK on Lua
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4045
diff
changeset
|
42 #include "../../OrthancFramework/Sources/HttpClient.h" |
4045 | 43 #include "../../OrthancFramework/Sources/Logging.h" |
44 #include "../../OrthancFramework/Sources/OrthancException.h" | |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
45 #include "../../OrthancFramework/Sources/SerializationToolbox.h" |
1485
27661b33f624
Creation of Logging.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1429
diff
changeset
|
46 |
3093
2e1808b6146a
reorganization of folders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3061
diff
changeset
|
47 #include "Database/SQLiteDatabaseWrapper.h" |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
48 #include "OrthancConfiguration.h" |
1274 | 49 |
4032
058b5ade8acd
renaming embedded resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4031
diff
changeset
|
50 #include <OrthancServerResources.h> |
4031
e3b3af80732d
ServerResources, and moving EmbeddedResourceHttpHandler from Core to OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4026
diff
changeset
|
51 |
4280
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
52 #include <dcmtk/dcmnet/diutil.h> // For DCM_dcmnetLogger |
1927
b60f27664b8f
simplification in FromDcmtkBridge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
53 |
b60f27664b8f
simplification in FromDcmtkBridge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
54 |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
55 static const char* const STORAGE_DIRECTORY = "StorageDirectory"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
56 static const char* const ORTHANC_STORAGE = "OrthancStorage"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
57 |
1927
b60f27664b8f
simplification in FromDcmtkBridge
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1900
diff
changeset
|
58 |
62 | 59 namespace Orthanc |
0 | 60 { |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
61 static void RegisterUserMetadata(const Json::Value& config) |
1423
7b7d597a190c
The configuration can be splitted into several files stored inside the same folder
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1422
diff
changeset
|
62 { |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
63 static const char* const USER_METADATA = "UserMetadata"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
64 |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
65 if (config.isMember(USER_METADATA)) |
1423
7b7d597a190c
The configuration can be splitted into several files stored inside the same folder
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1422
diff
changeset
|
66 { |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
67 const Json::Value& parameter = config[USER_METADATA]; |
435
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
68 |
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
69 Json::Value::Members members = parameter.getMemberNames(); |
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
70 for (size_t i = 0; i < members.size(); i++) |
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
71 { |
1772
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
72 const std::string& name = members[i]; |
435
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
73 |
1772
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
74 if (!parameter[name].isInt()) |
435
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
75 { |
2955 | 76 throw OrthancException(ErrorCode_BadParameterType, |
77 "Not a number in this user-defined metadata: " + name); | |
435
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
78 } |
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
79 |
1772
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
80 int metadata = parameter[name].asInt(); |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
81 |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
82 LOG(INFO) << "Registering user-defined metadata: " << name << " (index " |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
83 << metadata << ")"; |
435
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
84 |
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
85 try |
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
86 { |
1772
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
87 RegisterUserMetadata(metadata, name); |
435
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
88 } |
657
5425bb6f1ea5
further cppcheck fixes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
656
diff
changeset
|
89 catch (OrthancException&) |
435
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
90 { |
1772
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
91 LOG(ERROR) << "Cannot register this user-defined metadata: " << name; |
657
5425bb6f1ea5
further cppcheck fixes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
656
diff
changeset
|
92 throw; |
435
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
93 } |
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
94 } |
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
95 } |
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
96 } |
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
97 |
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
98 |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
99 static void RegisterUserContentType(const Json::Value& config) |
696
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
100 { |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
101 static const char* const USER_CONTENT_TYPE = "UserContentType"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
102 |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
103 if (config.isMember(USER_CONTENT_TYPE)) |
696
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
104 { |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
105 const Json::Value& parameter = config[USER_CONTENT_TYPE]; |
696
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
106 |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
107 Json::Value::Members members = parameter.getMemberNames(); |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
108 for (size_t i = 0; i < members.size(); i++) |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
109 { |
1772
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
110 const std::string& name = members[i]; |
2905
ae20fccdd867
refactoring mime types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2871
diff
changeset
|
111 std::string mime = MIME_BINARY; |
1772
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
112 |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
113 const Json::Value& value = parameter[name]; |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
114 int contentType; |
696
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
115 |
1772
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
116 if (value.isArray() && |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
117 value.size() == 2 && |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
118 value[0].isInt() && |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
119 value[1].isString()) |
696
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
120 { |
1772
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
121 contentType = value[0].asInt(); |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
122 mime = value[1].asString(); |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
123 } |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
124 else if (value.isInt()) |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
125 { |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
126 contentType = value.asInt(); |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
127 } |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
128 else |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
129 { |
2955 | 130 throw OrthancException(ErrorCode_BadParameterType, |
131 "Not a number in this user-defined attachment type: " + name); | |
696
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
132 } |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
133 |
1772
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
134 LOG(INFO) << "Registering user-defined attachment type: " << name << " (index " |
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
135 << contentType << ") with MIME type \"" << mime << "\""; |
696
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
136 |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
137 try |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
138 { |
1772
53e045b5a8ec
MIME content type can be associated to custom attachments (cf. "UserContentType")
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1765
diff
changeset
|
139 RegisterUserContentType(contentType, name, mime); |
696
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
140 } |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
141 catch (OrthancException&) |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
142 { |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
143 throw; |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
144 } |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
145 } |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
146 } |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
147 } |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
148 |
4c1860179cc5
dictionary of user-defined content types
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
149 |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
150 static void LoadExternalDictionaries(const Json::Value& configuration) |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
151 { |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
152 static const char* const EXTERNAL_DICTIONARIES = "ExternalDictionaries"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
153 |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
154 if (configuration.type() == Json::objectValue && |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
155 configuration.isMember(EXTERNAL_DICTIONARIES)) |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
156 { |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
157 std::vector<std::string> dictionaries; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
158 SerializationToolbox::ReadArrayOfStrings(dictionaries, configuration, EXTERNAL_DICTIONARIES); |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
159 FromDcmtkBridge::LoadExternalDictionaries(dictionaries); |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
160 } |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
161 } |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
162 |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
163 |
1765
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
164 static void LoadCustomDictionary(const Json::Value& configuration) |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
165 { |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
166 static const char* const DICTIONARY = "Dictionary"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
167 |
1765
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
168 if (configuration.type() != Json::objectValue || |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
169 !configuration.isMember(DICTIONARY) || |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
170 configuration[DICTIONARY].type() != Json::objectValue) |
1765
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
171 { |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
172 return; |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
173 } |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
174 |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
175 Json::Value::Members tags(configuration[DICTIONARY].getMemberNames()); |
1765
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
176 |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
177 for (Json::Value::ArrayIndex i = 0; i < tags.size(); i++) |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
178 { |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
179 const Json::Value& content = configuration[DICTIONARY][tags[i]]; |
1765
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
180 if (content.type() != Json::arrayValue || |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
181 content.size() < 2 || |
2115
a657f7772e69
Handling of private tags/creators in the "Dictionary" configuration option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2099
diff
changeset
|
182 content.size() > 5 || |
1765
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
183 content[0].type() != Json::stringValue || |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
184 content[1].type() != Json::stringValue || |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
185 (content.size() >= 3 && content[2].type() != Json::intValue) || |
2115
a657f7772e69
Handling of private tags/creators in the "Dictionary" configuration option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2099
diff
changeset
|
186 (content.size() >= 4 && content[3].type() != Json::intValue) || |
a657f7772e69
Handling of private tags/creators in the "Dictionary" configuration option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2099
diff
changeset
|
187 (content.size() >= 5 && content[4].type() != Json::stringValue)) |
1765
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
188 { |
4011
914b15dedae3
fix for non private sequence tags in C-Find
Alain Mazy <alain@mazy.be>
parents:
3640
diff
changeset
|
189 throw OrthancException(ErrorCode_BadFileFormat, "The definition of the '" + tags[i] + "' dictionary entry is invalid."); |
1765
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
190 } |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
191 |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
192 DicomTag tag(FromDcmtkBridge::ParseTag(tags[i])); |
2006
6301bbcbcaed
more generic support of value representations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1987
diff
changeset
|
193 ValueRepresentation vr = StringToValueRepresentation(content[0].asString(), true); |
1765
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
194 std::string name = content[1].asString(); |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
195 unsigned int minMultiplicity = (content.size() >= 2) ? content[2].asUInt() : 1; |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
196 unsigned int maxMultiplicity = (content.size() >= 3) ? content[3].asUInt() : 1; |
2115
a657f7772e69
Handling of private tags/creators in the "Dictionary" configuration option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2099
diff
changeset
|
197 std::string privateCreator = (content.size() >= 4) ? content[4].asString() : ""; |
1765
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
198 |
2115
a657f7772e69
Handling of private tags/creators in the "Dictionary" configuration option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2099
diff
changeset
|
199 FromDcmtkBridge::RegisterDictionaryTag(tag, vr, name, minMultiplicity, maxMultiplicity, privateCreator); |
1765
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
200 } |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
201 } |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
202 |
57b9e6890482
New configuration option: "Dictionary" to declare custom DICOM tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1656
diff
changeset
|
203 |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
204 static void ConfigurePkcs11(const Json::Value& config) |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
205 { |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
206 static const char* const MODULE = "Module"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
207 static const char* const VERBOSE = "Verbose"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
208 static const char* const PIN = "Pin"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
209 |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
210 if (config.type() != Json::objectValue || |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
211 !config.isMember(MODULE) || |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
212 config[MODULE].type() != Json::stringValue) |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
213 { |
2955 | 214 throw OrthancException(ErrorCode_BadFileFormat, |
215 "No path to the PKCS#11 module (DLL or .so) is provided " | |
216 "for HTTPS client authentication"); | |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
217 } |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
218 |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
219 std::string pin; |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
220 if (config.isMember(PIN)) |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
221 { |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
222 if (config[PIN].type() == Json::stringValue) |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
223 { |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
224 pin = config[PIN].asString(); |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
225 } |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
226 else |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
227 { |
2955 | 228 throw OrthancException(ErrorCode_BadFileFormat, |
229 "The PIN number in the PKCS#11 configuration must be a string"); | |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
230 } |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
231 } |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
232 |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
233 bool verbose = false; |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
234 if (config.isMember(VERBOSE)) |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
235 { |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
236 if (config[VERBOSE].type() == Json::booleanValue) |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
237 { |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
238 verbose = config[VERBOSE].asBool(); |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
239 } |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
240 else |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
241 { |
2955 | 242 throw OrthancException(ErrorCode_BadFileFormat, |
243 "The Verbose option in the PKCS#11 configuration must be a Boolean"); | |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
244 } |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
245 } |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
246 |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
247 HttpClient::InitializePkcs11(config[MODULE].asString(), pin, verbose); |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
248 } |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
249 |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
250 |
1656 | 251 |
62 | 252 void OrthancInitialize(const char* configurationFile) |
0 | 253 { |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
254 static const char* const LOCALE = "Locale"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
255 static const char* const PKCS11 = "Pkcs11"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
256 static const char* const DEFAULT_ENCODING = "DefaultEncoding"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
257 static const char* const MALLOC_ARENA_MAX = "MallocArenaMax"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
258 static const char* const LOAD_PRIVATE_DICTIONARY = "LoadPrivateDictionary"; |
4366
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
259 |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
260 OrthancConfiguration::WriterLock lock; |
435
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
261 |
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
262 InitializeServerEnumerations(); |
1423
7b7d597a190c
The configuration can be splitted into several files stored inside the same folder
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1422
diff
changeset
|
263 |
7b7d597a190c
The configuration can be splitted into several files stored inside the same folder
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1422
diff
changeset
|
264 // Read the user-provided configuration |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
265 lock.GetConfiguration().Read(configurationFile); |
435
28ba73274919
registration of user-defined metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
430
diff
changeset
|
266 |
2330
9c7a80c87ae9
"Locale" configuration option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2326
diff
changeset
|
267 { |
4026
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4011
diff
changeset
|
268 std::string locale; |
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4011
diff
changeset
|
269 |
4366
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
270 if (lock.GetJson().isMember(LOCALE)) |
4026
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4011
diff
changeset
|
271 { |
4366
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
272 locale = lock.GetConfiguration().GetStringParameter(LOCALE, ""); |
4026
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4011
diff
changeset
|
273 } |
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4011
diff
changeset
|
274 |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
275 bool loadPrivate = lock.GetConfiguration().GetBooleanParameter(LOAD_PRIVATE_DICTIONARY, true); |
4026
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4011
diff
changeset
|
276 Orthanc::InitializeFramework(locale, loadPrivate); |
2330
9c7a80c87ae9
"Locale" configuration option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2326
diff
changeset
|
277 } |
4026
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4011
diff
changeset
|
278 |
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4011
diff
changeset
|
279 // The Orthanc framework is now initialized |
2330
9c7a80c87ae9
"Locale" configuration option
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2326
diff
changeset
|
280 |
4366
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
281 if (lock.GetJson().isMember(DEFAULT_ENCODING)) |
2381
b8969010b534
uncoupling DCMTK primitives from Orthanc::Configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2380
diff
changeset
|
282 { |
4366
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
283 std::string encoding = lock.GetConfiguration().GetStringParameter(DEFAULT_ENCODING, ""); |
2381
b8969010b534
uncoupling DCMTK primitives from Orthanc::Configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2380
diff
changeset
|
284 SetDefaultDicomEncoding(StringToEncoding(encoding.c_str())); |
b8969010b534
uncoupling DCMTK primitives from Orthanc::Configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2380
diff
changeset
|
285 } |
b8969010b534
uncoupling DCMTK primitives from Orthanc::Configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2380
diff
changeset
|
286 else |
b8969010b534
uncoupling DCMTK primitives from Orthanc::Configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2380
diff
changeset
|
287 { |
b8969010b534
uncoupling DCMTK primitives from Orthanc::Configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2380
diff
changeset
|
288 SetDefaultDicomEncoding(ORTHANC_DEFAULT_DICOM_ENCODING); |
b8969010b534
uncoupling DCMTK primitives from Orthanc::Configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2380
diff
changeset
|
289 } |
b8969010b534
uncoupling DCMTK primitives from Orthanc::Configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2380
diff
changeset
|
290 |
4366
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
291 if (lock.GetJson().isMember(PKCS11)) |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
292 { |
4366
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
293 ConfigurePkcs11(lock.GetJson()[PKCS11]); |
2022
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
294 } |
fefbe71c2272
Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2020
diff
changeset
|
295 |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
296 RegisterUserMetadata(lock.GetJson()); |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
297 RegisterUserContentType(lock.GetJson()); |
685
b01cc78caba4
possibility to disable the DICOM/HTTP servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
660
diff
changeset
|
298 |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
299 LoadExternalDictionaries(lock.GetJson()); // New in Orthanc 1.9.4 |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
300 LoadCustomDictionary(lock.GetJson()); |
847
03ea55da7429
fully functional JPEG-LS conversion
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
301 |
4031
e3b3af80732d
ServerResources, and moving EmbeddedResourceHttpHandler from Core to OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4026
diff
changeset
|
302 lock.GetConfiguration().RegisterFont(ServerResources::FONT_UBUNTU_MONO_BOLD_16); |
4366
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
303 |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
304 #if HAVE_MALLOPT == 1 |
4374
79ef2b6d8e76
there will be a 1.8.2 release before 1.9.0
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4366
diff
changeset
|
305 // New in Orthanc 1.8.2 |
4366
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
306 // https://book.orthanc-server.com/faq/scalability.html#controlling-memory-usage |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
307 unsigned int maxArena = lock.GetConfiguration().GetUnsignedIntegerParameter(MALLOC_ARENA_MAX, 5); |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
308 if (maxArena != 0) |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
309 { |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
310 // https://man7.org/linux/man-pages/man3/mallopt.3.html |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
311 LOG(INFO) << "Calling mallopt(M_ARENA_MAX, " << maxArena << ")"; |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
312 if (mallopt(M_ARENA_MAX, maxArena) != 1 /* success */) |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
313 { |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
314 throw OrthancException(ErrorCode_InternalError, "The call to mallopt(M_ARENA_MAX, " + |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
315 boost::lexical_cast<std::string>(maxArena) + ") has failed"); |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
316 } |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
317 } |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
318 #else |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
319 if (lock.GetJson().isMember(MALLOC_ARENA_MAX)) |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
320 { |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
321 LOG(INFO) << "Your platform does not support mallopt(), ignoring configuration option \"" |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
322 << MALLOC_ARENA_MAX << "\""; |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
323 } |
6a39ca7083b9
New config option "MallocArenaMax" to control memory usage on GNU/Linux
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4281
diff
changeset
|
324 #endif |
0 | 325 } |
326 | |
327 | |
328 | |
62 | 329 void OrthancFinalize() |
0 | 330 { |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
331 OrthancConfiguration::WriterLock lock; |
4026
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4011
diff
changeset
|
332 Orthanc::FinalizeFramework(); |
0 | 333 } |
334 | |
335 | |
1274 | 336 static IDatabaseWrapper* CreateSQLiteWrapper() |
337 { | |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
338 OrthancConfiguration::ReaderLock lock; |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
339 |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
340 std::string storageDirectoryStr = |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
341 lock.GetConfiguration().GetStringParameter(STORAGE_DIRECTORY, ORTHANC_STORAGE); |
1274 | 342 |
343 // Open the database | |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
344 boost::filesystem::path indexDirectory = lock.GetConfiguration().InterpretStringParameterAsPath( |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
345 lock.GetConfiguration().GetStringParameter("IndexDirectory", storageDirectoryStr)); |
1274 | 346 |
347 LOG(WARNING) << "SQLite index directory: " << indexDirectory; | |
348 | |
349 try | |
350 { | |
351 boost::filesystem::create_directories(indexDirectory); | |
352 } | |
2836
7133ad478eea
fix Debian warnings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2801
diff
changeset
|
353 catch (boost::filesystem::filesystem_error&) |
1274 | 354 { |
355 } | |
356 | |
3017
517fc4767ae0
renamed class DatabaseWrapper as SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2955
diff
changeset
|
357 return new SQLiteDatabaseWrapper(indexDirectory.string() + "/index"); |
1274 | 358 } |
359 | |
360 | |
361 namespace | |
362 { | |
363 // Anonymous namespace to avoid clashes between compilation modules | |
364 | |
365 class FilesystemStorageWithoutDicom : public IStorageArea | |
366 { | |
367 private: | |
368 FilesystemStorage storage_; | |
369 | |
370 public: | |
4185
b289a1234822
giving a try to cross-platform compilation of SyncStorageArea
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4105
diff
changeset
|
371 FilesystemStorageWithoutDicom(const std::string& path, |
b289a1234822
giving a try to cross-platform compilation of SyncStorageArea
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4105
diff
changeset
|
372 bool fsyncOnWrite) : |
b289a1234822
giving a try to cross-platform compilation of SyncStorageArea
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4105
diff
changeset
|
373 storage_(path, fsyncOnWrite) |
1274 | 374 { |
375 } | |
376 | |
377 virtual void Create(const std::string& uuid, | |
378 const void* content, | |
379 size_t size, | |
4484
64f06e7d5fc7
new abstraction IMemoryBuffer to avoid unnecessary copies of std::string buffers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
380 FileContentType type) ORTHANC_OVERRIDE |
1274 | 381 { |
382 if (type != FileContentType_Dicom) | |
383 { | |
384 storage_.Create(uuid, content, size, type); | |
385 } | |
386 } | |
387 | |
4484
64f06e7d5fc7
new abstraction IMemoryBuffer to avoid unnecessary copies of std::string buffers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
388 virtual IMemoryBuffer* Read(const std::string& uuid, |
64f06e7d5fc7
new abstraction IMemoryBuffer to avoid unnecessary copies of std::string buffers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
389 FileContentType type) ORTHANC_OVERRIDE |
1274 | 390 { |
391 if (type != FileContentType_Dicom) | |
392 { | |
4484
64f06e7d5fc7
new abstraction IMemoryBuffer to avoid unnecessary copies of std::string buffers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
393 return storage_.Read(uuid, type); |
1274 | 394 } |
395 else | |
396 { | |
397 throw OrthancException(ErrorCode_UnknownResource); | |
398 } | |
399 } | |
400 | |
4495
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
401 virtual IMemoryBuffer* ReadRange(const std::string& uuid, |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
402 FileContentType type, |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
403 uint64_t start /* inclusive */, |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
404 uint64_t end /* exclusive */) ORTHANC_OVERRIDE |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
405 { |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
406 if (type != FileContentType_Dicom) |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
407 { |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
408 return storage_.ReadRange(uuid, type, start, end); |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
409 } |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
410 else |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
411 { |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
412 throw OrthancException(ErrorCode_UnknownResource); |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
413 } |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
414 } |
fa2311f94d9f
IStorageArea::ReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4484
diff
changeset
|
415 |
4498
7b99e8bb8246
IStorageArea::HasReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4495
diff
changeset
|
416 virtual bool HasReadRange() const ORTHANC_OVERRIDE |
7b99e8bb8246
IStorageArea::HasReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4495
diff
changeset
|
417 { |
7b99e8bb8246
IStorageArea::HasReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4495
diff
changeset
|
418 return storage_.HasReadRange(); |
7b99e8bb8246
IStorageArea::HasReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4495
diff
changeset
|
419 } |
7b99e8bb8246
IStorageArea::HasReadRange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4495
diff
changeset
|
420 |
1274 | 421 virtual void Remove(const std::string& uuid, |
4484
64f06e7d5fc7
new abstraction IMemoryBuffer to avoid unnecessary copies of std::string buffers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
422 FileContentType type) ORTHANC_OVERRIDE |
1274 | 423 { |
424 if (type != FileContentType_Dicom) | |
425 { | |
426 storage_.Remove(uuid, type); | |
427 } | |
428 } | |
429 }; | |
430 } | |
431 | |
432 | |
433 static IStorageArea* CreateFilesystemStorage() | |
434 { | |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
435 static const char* const SYNC_STORAGE_AREA = "SyncStorageArea"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
436 static const char* const STORE_DICOM = "StoreDicom"; |
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
437 |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
438 OrthancConfiguration::ReaderLock lock; |
1274 | 439 |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
440 std::string storageDirectoryStr = |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
441 lock.GetConfiguration().GetStringParameter(STORAGE_DIRECTORY, ORTHANC_STORAGE); |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
442 |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
443 boost::filesystem::path storageDirectory = |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
444 lock.GetConfiguration().InterpretStringParameterAsPath(storageDirectoryStr); |
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
445 |
1274 | 446 LOG(WARNING) << "Storage directory: " << storageDirectory; |
447 | |
4185
b289a1234822
giving a try to cross-platform compilation of SyncStorageArea
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4105
diff
changeset
|
448 // New in Orthanc 1.7.4 |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
449 bool fsyncOnWrite = lock.GetConfiguration().GetBooleanParameter(SYNC_STORAGE_AREA, true); |
4185
b289a1234822
giving a try to cross-platform compilation of SyncStorageArea
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4105
diff
changeset
|
450 |
4696
dd6274412ff4
new configuration option "ExternalDictionaries" to load external DICOM dictionaries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4662
diff
changeset
|
451 if (lock.GetConfiguration().GetBooleanParameter(STORE_DICOM, true)) |
1274 | 452 { |
4185
b289a1234822
giving a try to cross-platform compilation of SyncStorageArea
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4105
diff
changeset
|
453 return new FilesystemStorage(storageDirectory.string(), fsyncOnWrite); |
1274 | 454 } |
455 else | |
456 { | |
457 LOG(WARNING) << "The DICOM files will not be stored, Orthanc running in index-only mode"; | |
4185
b289a1234822
giving a try to cross-platform compilation of SyncStorageArea
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4105
diff
changeset
|
458 return new FilesystemStorageWithoutDicom(storageDirectory.string(), fsyncOnWrite); |
1274 | 459 } |
460 } | |
461 | |
462 | |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
463 IDatabaseWrapper* CreateDatabaseWrapper() |
1274 | 464 { |
465 return CreateSQLiteWrapper(); | |
466 } | |
467 | |
468 | |
2940
4767d36679ed
refactoring access to Orthanc configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2933
diff
changeset
|
469 IStorageArea* CreateStorageArea() |
1274 | 470 { |
471 return CreateFilesystemStorage(); | |
4280
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
472 } |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
473 |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
474 |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
475 static void SetDcmtkVerbosity(Verbosity verbosity) |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
476 { |
4281
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
477 // INFO_LOG_LEVEL was the DCMTK log level in Orthanc <= 1.8.0 |
4280
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
478 // https://support.dcmtk.org/docs-dcmrt/classOFLogger.html#ae20bf2616f15313c1f089da2eefb8245 |
4281
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
479 |
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
480 OFLogger::LogLevel dataLevel, networkLevel; |
4280
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
481 |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
482 switch (verbosity) |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
483 { |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
484 case Verbosity_Default: |
4281
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
485 // Turn off logging in DCMTK core |
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
486 dataLevel = OFLogger::OFF_LOG_LEVEL; |
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
487 networkLevel = OFLogger::OFF_LOG_LEVEL; |
4280
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
488 break; |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
489 |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
490 case Verbosity_Verbose: |
4281
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
491 dataLevel = OFLogger::INFO_LOG_LEVEL; |
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
492 networkLevel = OFLogger::INFO_LOG_LEVEL; |
4280
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
493 break; |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
494 |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
495 case Verbosity_Trace: |
4281
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
496 dataLevel = OFLogger::INFO_LOG_LEVEL; // DEBUG here makes DCMTK too verbose to be useful |
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
497 networkLevel = OFLogger::DEBUG_LOG_LEVEL; |
4280
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
498 break; |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
499 |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
500 default: |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
501 throw OrthancException(ErrorCode_ParameterOutOfRange); |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
502 } |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
503 |
4281
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
504 OFLog::configure(dataLevel); |
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
505 assert(dcmtk::log4cplus::Logger::getRoot().getChainedLogLevel() == dataLevel); |
4280
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
506 |
4281
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
507 DCM_dcmdataLogger.setLogLevel(dataLevel); // This seems to be implied by "OFLog::configure()" |
d2f79a475b51
debug log for DCMTK SCU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4280
diff
changeset
|
508 DCM_dcmnetLogger.setLogLevel(networkLevel); // This will display PDU in DICOM networking |
4280
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
509 } |
4273
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
510 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
511 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
512 void SetGlobalVerbosity(Verbosity verbosity) |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
513 { |
4280
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
514 SetDcmtkVerbosity(verbosity); |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
515 |
4273
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
516 switch (verbosity) |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
517 { |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
518 case Verbosity_Default: |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
519 Logging::EnableInfoLevel(false); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
520 Logging::EnableTraceLevel(false); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
521 break; |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
522 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
523 case Verbosity_Verbose: |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
524 Logging::EnableInfoLevel(true); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
525 Logging::EnableTraceLevel(false); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
526 break; |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
527 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
528 case Verbosity_Trace: |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
529 Logging::EnableInfoLevel(true); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
530 Logging::EnableTraceLevel(true); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
531 break; |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
532 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
533 default: |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
534 throw OrthancException(ErrorCode_ParameterOutOfRange); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
535 } |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
536 } |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
537 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
538 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
539 Verbosity GetGlobalVerbosity() |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
540 { |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
541 if (Logging::IsTraceLevelEnabled()) |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
542 { |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
543 return Verbosity_Trace; |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
544 } |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
545 else if (Logging::IsInfoLevelEnabled()) |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
546 { |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
547 return Verbosity_Verbose; |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
548 } |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
549 else |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
550 { |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
551 return Verbosity_Default; |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
552 } |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
553 } |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
554 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
555 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
556 void SetCategoryVerbosity(Logging::LogCategory category, |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
557 Verbosity verbosity) |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
558 { |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
559 switch (verbosity) |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
560 { |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
561 case Verbosity_Default: |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
562 Logging::SetCategoryEnabled(Logging::LogLevel_INFO, category, false); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
563 Logging::SetCategoryEnabled(Logging::LogLevel_TRACE, category, false); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
564 break; |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
565 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
566 case Verbosity_Verbose: |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
567 Logging::SetCategoryEnabled(Logging::LogLevel_INFO, category, true); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
568 Logging::SetCategoryEnabled(Logging::LogLevel_TRACE, category, false); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
569 break; |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
570 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
571 case Verbosity_Trace: |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
572 Logging::SetCategoryEnabled(Logging::LogLevel_INFO, category, true); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
573 Logging::SetCategoryEnabled(Logging::LogLevel_TRACE, category, true); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
574 break; |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
575 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
576 default: |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
577 throw OrthancException(ErrorCode_ParameterOutOfRange); |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
578 } |
4280
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
579 |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
580 if (category == Logging::LogCategory_DICOM) |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
581 { |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
582 SetDcmtkVerbosity(verbosity); |
58e757ded69e
SetDcmtkVerbosity()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4273
diff
changeset
|
583 } |
4273
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
584 } |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
585 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
586 |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
587 Verbosity GetCategoryVerbosity(Logging::LogCategory category) |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
588 { |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
589 if (Logging::IsCategoryEnabled(Logging::LogLevel_TRACE, category)) |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
590 { |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
591 return Verbosity_Trace; |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
592 } |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
593 else if (Logging::IsCategoryEnabled(Logging::LogLevel_INFO, category)) |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
594 { |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
595 return Verbosity_Verbose; |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
596 } |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
597 else |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
598 { |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
599 return Verbosity_Default; |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
600 } |
0034f855c023
tuning log categories from command-line, and binary compat with orthanc framework 1.7.2
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4185
diff
changeset
|
601 } |
0 | 602 } |