Mercurial > hg > orthanc
annotate OrthancServer/Plugins/Samples/MultitenantDicom/Plugin.cpp @ 5563:e02cdf358905
fix plugin init wrt logging
author | Alain Mazy <am@orthanc.team> |
---|---|
date | Tue, 23 Apr 2024 10:26:48 +0200 |
parents | 0b18690c1935 |
children | f7adfb22e20e |
rev | line source |
---|---|
5273
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1 /** |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
2 * Orthanc - A Lightweight, RESTful DICOM Store |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
5485
48b8dae6dc77
upgrade to year 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5372
diff
changeset
|
5 * Copyright (C) 2017-2024 Osimis S.A., Belgium |
48b8dae6dc77
upgrade to year 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5372
diff
changeset
|
6 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
5273
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
7 * |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
8 * This program is free software: you can redistribute it and/or |
5371
a8385880902f
fix incorrect license for MultitenantDicom plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5277
diff
changeset
|
9 * modify it under the terms of the GNU General Public License as |
a8385880902f
fix incorrect license for MultitenantDicom plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5277
diff
changeset
|
10 * published by the Free Software Foundation, either version 3 of the |
a8385880902f
fix incorrect license for MultitenantDicom plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5277
diff
changeset
|
11 * License, or (at your option) any later version. |
5273
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
12 * |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
13 * This program is distributed in the hope that it will be useful, but |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
14 * WITHOUT ANY WARRANTY; without even the implied warranty of |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
5371
a8385880902f
fix incorrect license for MultitenantDicom plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5277
diff
changeset
|
16 * General Public License for more details. |
5273
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
17 * |
5371
a8385880902f
fix incorrect license for MultitenantDicom plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5277
diff
changeset
|
18 * You should have received a copy of the GNU General Public License |
a8385880902f
fix incorrect license for MultitenantDicom plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5277
diff
changeset
|
19 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
5273
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
20 **/ |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
21 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
22 |
5538
6ce05f8b5b13
deprecating OrthancPluginSetDescription2(), OrthancPluginExtendOrthancExplorer2() and OrthancPluginSetRootUri2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5485
diff
changeset
|
23 #define ORTHANC_PLUGIN_NAME "multitenant-dicom" |
6ce05f8b5b13
deprecating OrthancPluginSetDescription2(), OrthancPluginExtendOrthancExplorer2() and OrthancPluginSetRootUri2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5485
diff
changeset
|
24 |
5273
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
25 #include "MultitenantDicomServer.h" |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
26 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
27 #include "../../../../OrthancFramework/Sources/DicomParsing/FromDcmtkBridge.h" |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
28 #include "../../../../OrthancFramework/Sources/Logging.h" |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
29 #include "../../../../OrthancFramework/Sources/OrthancException.h" |
5544
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
30 #include "../../../../OrthancFramework/Sources/OrthancFramework.h" |
5273
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
31 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
32 #include "../Common/OrthancPluginCppWrapper.h" |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
33 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
34 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
35 typedef std::list<MultitenantDicomServer*> DicomServers; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
36 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
37 static DicomServers dicomServers_; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
38 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
39 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
40 static OrthancPluginErrorCode OnChangeCallback(OrthancPluginChangeType changeType, |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
41 OrthancPluginResourceType resourceType, |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
42 const char* resourceId) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
43 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
44 switch (changeType) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
45 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
46 case OrthancPluginChangeType_OrthancStarted: |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
47 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
48 for (DicomServers::iterator it = dicomServers_.begin(); it != dicomServers_.end(); ++it) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
49 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
50 if (*it != NULL) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
51 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
52 try |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
53 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
54 (*it)->Start(); |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
55 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
56 catch (Orthanc::OrthancException& e) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
57 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
58 LOG(ERROR) << "Exception while stopping the multitenant DICOM server: " << e.What(); |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
59 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
60 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
61 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
62 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
63 break; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
64 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
65 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
66 case OrthancPluginChangeType_OrthancStopped: |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
67 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
68 for (DicomServers::iterator it = dicomServers_.begin(); it != dicomServers_.end(); ++it) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
69 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
70 if (*it != NULL) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
71 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
72 try |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
73 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
74 (*it)->Stop(); |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
75 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
76 catch (Orthanc::OrthancException& e) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
77 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
78 LOG(ERROR) << "Exception while stopping the multitenant DICOM server: " << e.What(); |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
79 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
80 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
81 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
82 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
83 break; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
84 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
85 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
86 default: |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
87 break; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
88 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
89 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
90 return OrthancPluginErrorCode_Success; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
91 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
92 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
93 |
5544
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
94 static void MyInitialization(const OrthancPlugins::OrthancConfiguration& config) |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
95 { |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
96 static const char* const LOCALE = "Locale"; |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
97 static const char* const DEFAULT_ENCODING = "DefaultEncoding"; |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
98 |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
99 /** |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
100 * This function is a simplified version of function |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
101 * "Orthanc::OrthancInitialize()" that is executed when starting the |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
102 * Orthanc server. |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
103 **/ |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
104 |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
105 Orthanc::InitializeFramework(config.GetStringValue(LOCALE, ""), false /* loadPrivateDictionary */); |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
106 |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
107 std::string encoding; |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
108 if (config.LookupStringValue(encoding, DEFAULT_ENCODING)) |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
109 { |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
110 Orthanc::SetDefaultDicomEncoding(Orthanc::StringToEncoding(encoding.c_str())); |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
111 } |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
112 else |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
113 { |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
114 Orthanc::SetDefaultDicomEncoding(Orthanc::ORTHANC_DEFAULT_DICOM_ENCODING); |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
115 } |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
116 } |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
117 |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
118 |
5273
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
119 extern "C" |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
120 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
121 ORTHANC_PLUGINS_API int32_t OrthancPluginInitialize(OrthancPluginContext* context) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
122 { |
5561
0b18690c1935
SDK: added OrthancPluginLogMessage to display plugin name + file and line from plugin
Alain Mazy <am@orthanc.team>
parents:
5544
diff
changeset
|
123 OrthancPlugins::SetGlobalContext(context, ORTHANC_PLUGIN_NAME); |
5563 | 124 Orthanc::Logging::InitializePluginContext(context, ORTHANC_PLUGIN_NAME); |
5273
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
125 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
126 /* Check the version of the Orthanc core */ |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
127 if (OrthancPluginCheckVersion(OrthancPlugins::GetGlobalContext()) == 0) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
128 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
129 char info[1024]; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
130 sprintf(info, "Your version of Orthanc (%s) must be above %d.%d.%d to run this plugin", |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
131 OrthancPlugins::GetGlobalContext()->orthancVersion, |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
132 ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER, |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
133 ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER, |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
134 ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER); |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
135 OrthancPluginLogError(OrthancPlugins::GetGlobalContext(), info); |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
136 return -1; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
137 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
138 |
5538
6ce05f8b5b13
deprecating OrthancPluginSetDescription2(), OrthancPluginExtendOrthancExplorer2() and OrthancPluginSetRootUri2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5485
diff
changeset
|
139 OrthancPluginSetDescription2(context, ORTHANC_PLUGIN_NAME, "Multitenant plugin for Orthanc."); |
5273
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
140 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
141 OrthancPluginRegisterOnChangeCallback(context, OnChangeCallback); |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
142 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
143 try |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
144 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
145 OrthancPlugins::OrthancConfiguration globalConfig; |
5544
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
146 MyInitialization(globalConfig); |
5273
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
147 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
148 OrthancPlugins::OrthancConfiguration pluginConfig; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
149 globalConfig.GetSection(pluginConfig, KEY_MULTITENANT_DICOM); |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
150 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
151 if (pluginConfig.GetJson().isMember(KEY_SERVERS)) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
152 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
153 const Json::Value& servers = pluginConfig.GetJson() [KEY_SERVERS]; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
154 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
155 if (servers.type() != Json::arrayValue) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
156 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
157 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadParameterType, "Configuration option \"" + |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
158 std::string(KEY_MULTITENANT_DICOM) + "." + std::string(KEY_SERVERS) + "\" must be an array"); |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
159 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
160 else |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
161 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
162 for (Json::Value::ArrayIndex i = 0; i < servers.size(); i++) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
163 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
164 dicomServers_.push_back(new MultitenantDicomServer(servers[i])); |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
165 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
166 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
167 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
168 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
169 return 0; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
170 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
171 catch (Orthanc::OrthancException& e) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
172 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
173 LOG(ERROR) << "Exception while starting the multitenant DICOM server: " << e.What(); |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
174 return -1; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
175 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
176 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
177 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
178 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
179 ORTHANC_PLUGINS_API void OrthancPluginFinalize() |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
180 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
181 for (DicomServers::iterator it = dicomServers_.begin(); it != dicomServers_.end(); ++it) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
182 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
183 if (*it != NULL) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
184 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
185 try |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
186 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
187 delete *it; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
188 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
189 catch (Orthanc::OrthancException& e) |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
190 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
191 LOG(ERROR) << "Exception while destroying the multitenant DICOM server: " << e.What(); |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
192 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
193 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
194 } |
5544
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
195 |
dce22a789a2b
Multitenant DICOM plugin: added support for locales
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5538
diff
changeset
|
196 Orthanc::FinalizeFramework(); |
5273
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
197 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
198 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
199 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
200 ORTHANC_PLUGINS_API const char* OrthancPluginGetName() |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
201 { |
5538
6ce05f8b5b13
deprecating OrthancPluginSetDescription2(), OrthancPluginExtendOrthancExplorer2() and OrthancPluginSetRootUri2()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5485
diff
changeset
|
202 return ORTHANC_PLUGIN_NAME; |
5273
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
203 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
204 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
205 |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
206 ORTHANC_PLUGINS_API const char* OrthancPluginGetVersion() |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
207 { |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
208 return ORTHANC_PLUGIN_VERSION; |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
209 } |
7cb1b851f5c8
Added a sample plugin bringing multitenant DICOM support through labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
210 } |