annotate Applications/ApplicationToolbox.cpp @ 318:8ad12abde290

sparse re-encoding with OpenSlide (notably for MIRAX format)
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 11 Sep 2024 16:11:16 +0200
parents 0683312e21ba
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 /**
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2 * Orthanc - A Lightweight, RESTful DICOM Store
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4 * Department, University Hospital of Liege, Belgium
312
0683312e21ba updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 309
diff changeset
5 * Copyright (C) 2017-2023 Osimis S.A., Belgium
0683312e21ba updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 309
diff changeset
6 * Copyright (C) 2024-2024 Orthanc Team SRL, Belgium
309
7020852a8fa9 updated year to 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 254
diff changeset
7 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8 *
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9 * This program is free software: you can redistribute it and/or
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 * modify it under the terms of the GNU Affero General Public License
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 * as published by the Free Software Foundation, either version 3 of
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 * the License, or (at your option) any later version.
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 *
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful, but
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 * Affero General Public License for more details.
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 *
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19 * You should have received a copy of the GNU Affero General Public License
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 * along with this program. If not, see <http://www.gnu.org/licenses/>.
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21 **/
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24 #include "ApplicationToolbox.h"
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26 #include "../Framework/Inputs/OpenSlideLibrary.h"
151
fb8d4cd2f618 fix applications
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 140
diff changeset
27 #include "../Framework/MultiThreading/BagOfTasksProcessor.h"
140
a0f9a3df1110 resort to Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 128
diff changeset
28
199
a1c265cb2174 replacing deprecated std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 192
diff changeset
29 #include <Compatibility.h> // For std::unique_ptr
192
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 175
diff changeset
30 #include <DicomParsing/FromDcmtkBridge.h>
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 175
diff changeset
31 #include <HttpClient.h>
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 175
diff changeset
32 #include <Logging.h>
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 175
diff changeset
33 #include <OrthancException.h>
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 175
diff changeset
34 #include <SystemToolbox.h>
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 175
diff changeset
35 #include <Toolbox.h>
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
36
93
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
37 #include <boost/filesystem.hpp>
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
38 #include <boost/lexical_cast.hpp>
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39 #include <boost/regex.hpp>
93
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
40 #include <boost/date_time/posix_time/posix_time.hpp>
87
3d83d34cd4db sync, optimizations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
41 #include <cassert>
3d83d34cd4db sync, optimizations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
42
3d83d34cd4db sync, optimizations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
43
128
788dd04b87f5 cleaning up options in DicomToTiff
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 127
diff changeset
44 static const char* OPTION_CA_CERTIFICATES = "ca-certificates";
788dd04b87f5 cleaning up options in DicomToTiff
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 127
diff changeset
45 static const char* OPTION_PASSWORD = "password";
788dd04b87f5 cleaning up options in DicomToTiff
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 127
diff changeset
46 static const char* OPTION_PROXY = "proxy";
788dd04b87f5 cleaning up options in DicomToTiff
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 127
diff changeset
47 static const char* OPTION_TIMEOUT = "timeout";
127
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
48 static const char* OPTION_URL = "orthanc";
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
49 static const char* OPTION_USERNAME = "username";
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
50 static const char* OPTION_VERIFY_PEERS = "verify-peers";
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
51
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
52
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
53
87
3d83d34cd4db sync, optimizations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
54 static bool DisplayPerformanceWarning()
3d83d34cd4db sync, optimizations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
55 {
3d83d34cd4db sync, optimizations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
56 (void) DisplayPerformanceWarning; // Disable warning about unused function
3d83d34cd4db sync, optimizations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
57 LOG(WARNING) << "Performance warning in whole-slide imaging: "
3d83d34cd4db sync, optimizations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
58 << "Non-release build, runtime debug assertions are turned on";
3d83d34cd4db sync, optimizations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
59 return true;
3d83d34cd4db sync, optimizations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
60 }
3d83d34cd4db sync, optimizations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
61
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
62
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
63 namespace OrthancWSI
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
64 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
65 namespace ApplicationToolbox
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
66 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
67 void GlobalInitialize()
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
68 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
69 Orthanc::Logging::Initialize();
151
fb8d4cd2f618 fix applications
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 140
diff changeset
70 Orthanc::Toolbox::InitializeOpenSsl();
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
71 Orthanc::HttpClient::GlobalInitialize();
51
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 31
diff changeset
72 Orthanc::FromDcmtkBridge::InitializeDictionary(false /* don't load private dictionary */);
87
3d83d34cd4db sync, optimizations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 59
diff changeset
73 assert(DisplayPerformanceWarning());
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
74 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
75
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
76
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
77 void GlobalFinalize()
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
78 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
79 OrthancWSI::OpenSlideLibrary::Finalize();
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
80 Orthanc::HttpClient::GlobalFinalize();
151
fb8d4cd2f618 fix applications
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 140
diff changeset
81 Orthanc::Toolbox::FinalizeOpenSsl();
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
82 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
83
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
84
236
b0ee417b667a migrating new definitions in namespace Orthanc to namespace OrthancWSI
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
85 static void PrintProgress(BagOfTasksProcessor::Handle* handle,
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
86 bool* done)
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
87 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
88 unsigned int previous = 0;
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
89
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
90 while (!*done)
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
91 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
92 unsigned int progress = static_cast<unsigned int>(100.0f * handle->GetProgress());
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
93 if (previous != progress)
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
94 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
95 LOG(WARNING) << "Progress: " << progress << "%";
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
96 previous = progress;
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
97 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
98
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
99 boost::this_thread::sleep(boost::posix_time::milliseconds(100));
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
100 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
101 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
102
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
103
236
b0ee417b667a migrating new definitions in namespace Orthanc to namespace OrthancWSI
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
104 void Execute(BagOfTasks& tasks,
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
105 unsigned int threadsCount)
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
106 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
107 if (threadsCount > 1)
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
108 {
7
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
109 // Submit the tasks to a newly-created processor
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
110 LOG(WARNING) << "Running " << tasks.GetSize() << " tasks";
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
111 LOG(WARNING) << "Using " << threadsCount << " threads for the computation";
236
b0ee417b667a migrating new definitions in namespace Orthanc to namespace OrthancWSI
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
112 BagOfTasksProcessor processor(threadsCount);
b0ee417b667a migrating new definitions in namespace Orthanc to namespace OrthancWSI
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
113 std::unique_ptr<BagOfTasksProcessor::Handle> handle(processor.Submit(tasks));
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
114
7
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
115 // Start a thread to display the progress
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
116 bool done = false;
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
117 boost::thread progress(PrintProgress, handle.get(), &done);
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
118
7
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
119 // Wait for the completion of the tasks
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
120 bool success = handle->Join();
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
121
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
122 // Stop the progress-printing thread
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
123 done = true;
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
124
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
125 if (progress.joinable())
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
126 {
7
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
127 progress.join();
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
128 }
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
129
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
130 if (success)
bc3ca410b765 Fix freeze if the target Orthanc is not accepting images
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
131 {
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
132 LOG(WARNING) << "All tasks have finished";
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
133 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
134 else
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
135 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
136 LOG(ERROR) << "Error has occurred, aborting";
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
137 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
138 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
139 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
140 else
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
141 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
142 LOG(WARNING) << "Running " << tasks.GetSize() << " tasks without multithreading";
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
143
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
144 unsigned int previous = 0;
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
145 unsigned int size = tasks.GetSize();
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
146
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
147 // No multithreading
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
148 while (!tasks.IsEmpty())
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
149 {
236
b0ee417b667a migrating new definitions in namespace Orthanc to namespace OrthancWSI
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 214
diff changeset
150 std::unique_ptr<ICommand> task(tasks.Pop());
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
151 if (task->Execute())
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
152 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
153 unsigned int progress = static_cast<unsigned int>(100.0f *
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
154 static_cast<float>((size - tasks.GetSize())) /
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
155 static_cast<float>(size));
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
156 if (progress != previous)
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
157 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
158 LOG(WARNING) << "Progress: " << progress << "%";
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
159 previous = progress;
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
160 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
161 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
162 else
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
163 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
164 LOG(ERROR) << "Error has occurred, aborting";
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
165 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
166 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
167 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
168 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
169 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
170
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
171
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
172 void ParseColor(uint8_t& red,
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
173 uint8_t& green,
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
174 uint8_t& blue,
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
175 const std::string& color)
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
176 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
177 boost::regex pattern("([0-9]*),([0-9]*),([0-9]*)");
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
178
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
179 bool ok = false;
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
180 boost::cmatch what;
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
181
106
18e9a5429cc4 clarification about --max-size option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 99
diff changeset
182 // Set white as the default color to avoid compiler warnings
18e9a5429cc4 clarification about --max-size option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 99
diff changeset
183 red = 255;
18e9a5429cc4 clarification about --max-size option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 99
diff changeset
184 green = 255;
18e9a5429cc4 clarification about --max-size option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 99
diff changeset
185 blue = 255;
18e9a5429cc4 clarification about --max-size option
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 99
diff changeset
186
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
187 try
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
188 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
189 if (regex_match(color.c_str(), what, pattern))
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
190 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
191 int r = boost::lexical_cast<int>(what[1]);
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
192 int g = boost::lexical_cast<int>(what[2]);
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
193 int b = boost::lexical_cast<int>(what[3]);
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
194
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
195 if (r >= 0 && r <= 255 &&
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
196 g >= 0 && g <= 255 &&
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
197 b >= 0 && b <= 255)
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
198 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
199 red = static_cast<uint8_t>(r);
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
200 green = static_cast<uint8_t>(g);
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
201 blue = static_cast<uint8_t>(b);
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
202 ok = true;
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
203 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
204 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
205 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
206 catch (boost::bad_lexical_cast&)
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
207 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
208 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
209
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
210 if (!ok)
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
211 {
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
212 LOG(ERROR) << "Bad color specification: " << color;
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
213 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
214 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
215 }
8
62adabb8c122 Provide "--version" in command-line tools
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
216
62adabb8c122 Provide "--version" in command-line tools
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
217
62adabb8c122 Provide "--version" in command-line tools
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
218 void PrintVersion(const char* path)
62adabb8c122 Provide "--version" in command-line tools
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
219 {
62adabb8c122 Provide "--version" in command-line tools
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
220 std::cout
62adabb8c122 Provide "--version" in command-line tools
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
221 << path << " " << ORTHANC_WSI_VERSION << std::endl
62adabb8c122 Provide "--version" in command-line tools
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
222 << "Copyright (C) 2012-2016 Sebastien Jodogne, "
62adabb8c122 Provide "--version" in command-line tools
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
223 << "Medical Physics Department, University Hospital of Liege (Belgium)" << std::endl
312
0683312e21ba updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 309
diff changeset
224 << "Copyright (C) 2017-2023 Osimis S.A. (Belgium)" << std::endl
0683312e21ba updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 309
diff changeset
225 << "Copyright (C) 2024-2024 Orthanc Team SRL (Belgium)" << std::endl
309
7020852a8fa9 updated year to 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 254
diff changeset
226 << "Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain (Belgium)" << std::endl
31
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 8
diff changeset
227 << "Licensing AGPL: GNU AGPL version 3 or later <http://gnu.org/licenses/agpl.html>." << std::endl
8
62adabb8c122 Provide "--version" in command-line tools
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
228 << "This is free software: you are free to change and redistribute it." << std::endl
62adabb8c122 Provide "--version" in command-line tools
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
229 << "There is NO WARRANTY, to the extent permitted by law." << std::endl
62adabb8c122 Provide "--version" in command-line tools
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
230 << std::endl
157
6b8ccfc02051 preparing for 2019
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 152
diff changeset
231 << "Written by Sebastien Jodogne <s.jodogne@orthanc-labs.com>" << std::endl;
8
62adabb8c122 Provide "--version" in command-line tools
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 7
diff changeset
232 }
93
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
233
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
234
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
235 void ShowVersionInLog(const char* path)
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
236 {
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
237 std::string version(ORTHANC_WSI_VERSION);
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
238
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
239 if (version == "mainline")
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
240 {
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
241 try
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
242 {
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
243 boost::filesystem::path exe(Orthanc::SystemToolbox::GetPathToExecutable());
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
244 std::time_t creation = boost::filesystem::last_write_time(exe);
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
245 boost::posix_time::ptime converted(boost::posix_time::from_time_t(creation));
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
246 version += " (" + boost::posix_time::to_iso_string(converted) + ")";
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
247 }
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
248 catch (...)
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
249 {
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
250 }
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
251 }
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
252
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
253 LOG(WARNING) << "Orthanc WSI version: " << version;
14146ecd1688 Display version of the framework in the logs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 87
diff changeset
254 }
125
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
255
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
256
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
257
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
258 void AddRestApiOptions(boost::program_options::options_description& section)
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
259 {
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
260 section.add_options()
127
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
261 (OPTION_USERNAME, boost::program_options::value<std::string>(),
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
262 "Username for the target Orthanc server")
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
263 (OPTION_PASSWORD, boost::program_options::value<std::string>(),
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
264 "Password for the target Orthanc server")
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
265 (OPTION_PROXY, boost::program_options::value<std::string>(),
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
266 "HTTP proxy to be used")
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
267 (OPTION_TIMEOUT, boost::program_options::value<int>()->default_value(0),
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
268 "HTTP timeout (in seconds, 0 means no timeout)")
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
269 (OPTION_VERIFY_PEERS, boost::program_options::value<bool>()->default_value(true),
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
270 "Enable the verification of the peers during HTTPS requests")
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
271 (OPTION_CA_CERTIFICATES, boost::program_options::value<std::string>()->default_value(""),
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
272 "Path to the CA (certification authority) certificates to validate peers in HTTPS requests")
125
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
273 ;
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
274 }
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
275
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
276
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
277 void SetupRestApi(Orthanc::WebServiceParameters& parameters,
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
278 const boost::program_options::variables_map& options)
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
279 {
127
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
280 if (options.count(OPTION_URL))
125
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
281 {
127
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
282 parameters.SetUrl(options[OPTION_URL].as<std::string>());
125
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
283 }
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
284
127
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
285 if (options.count(OPTION_USERNAME) &&
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
286 options.count(OPTION_PASSWORD))
125
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
287 {
152
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 151
diff changeset
288 parameters.SetCredentials(options[OPTION_USERNAME].as<std::string>(),
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 151
diff changeset
289 options[OPTION_PASSWORD].as<std::string>());
125
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
290 }
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
291
127
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
292 if (options.count(OPTION_TIMEOUT))
125
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
293 {
127
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
294 int timeout = options[OPTION_TIMEOUT].as<int>();
125
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
295 if (timeout < 0)
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
296 {
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
297 LOG(ERROR) << "Timeouts cannot be negative: " << timeout;
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
298 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
299 }
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
300 else
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
301 {
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
302 Orthanc::HttpClient::SetDefaultTimeout(timeout);
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
303 }
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
304
127
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
305 if (options.count(OPTION_PROXY))
125
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
306 {
127
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
307 Orthanc::HttpClient::SetDefaultProxy(options[OPTION_PROXY].as<std::string>());
125
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
308 }
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
309 }
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
310
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
311 #if ORTHANC_ENABLE_SSL == 1
127
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
312 if (options.count(OPTION_VERIFY_PEERS) ||
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
313 options.count(OPTION_CA_CERTIFICATES))
125
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
314 {
127
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
315 Orthanc::HttpClient::ConfigureSsl(options[OPTION_VERIFY_PEERS].as<bool>(),
2cb9fabb529e cleaning up options
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 125
diff changeset
316 options[OPTION_CA_CERTIFICATES].as<std::string>());
125
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
317 }
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
318 #endif
7a3f4d580625 SSL is enabled by default for HTTPS transfers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 123
diff changeset
319 }
0
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
320 }
4a7a53257c7d initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
321 }