Mercurial > hg > orthanc-transfers
annotate Plugin/PluginContext.cpp @ 77:1e396fb509ca default
updated copyright, as Orthanc Team now replaces Osimis
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 30 May 2024 22:44:10 +0200 |
parents | b09adb6aa199 |
children |
rev | line source |
---|---|
0 | 1 /** |
2 * Transfers accelerator plugin for Orthanc | |
77
1e396fb509ca
updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
55
diff
changeset
|
3 * Copyright (C) 2018-2023 Osimis S.A., Belgium |
1e396fb509ca
updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
55
diff
changeset
|
4 * Copyright (C) 2024-2024 Orthanc Team SRL, Belgium |
1e396fb509ca
updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
55
diff
changeset
|
5 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
0 | 6 * |
7 * This program is free software: you can redistribute it and/or | |
8 * modify it under the terms of the GNU Affero General Public License | |
9 * as published by the Free Software Foundation, either version 3 of | |
10 * the License, or (at your option) any later version. | |
11 * | |
12 * This program is distributed in the hope that it will be useful, but | |
13 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 * Affero General Public License for more details. | |
16 * | |
17 * You should have received a copy of the GNU Affero General Public License | |
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
19 **/ | |
20 | |
21 | |
22 #include "PluginContext.h" | |
23 | |
25
dfc43678aecb
replacing deprecated std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
20
diff
changeset
|
24 #include <Compatibility.h> // For std::unique_ptr |
20 | 25 #include <Logging.h> |
0 | 26 |
27 | |
28 namespace OrthancPlugins | |
29 { | |
8
4c3437217518
fix for compatibility with simplified OrthancPluginCppWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
30 PluginContext::PluginContext(size_t threadsCount, |
0 | 31 size_t targetBucketSize, |
32 size_t maxPushTransactions, | |
10
c9e28e31262e
new option: MaxHttpRetries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
9
diff
changeset
|
33 size_t memoryCacheSize, |
55
b09adb6aa199
new PeerConnectivityTimeout configuration
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
34 unsigned int maxHttpRetries, |
b09adb6aa199
new PeerConnectivityTimeout configuration
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
35 unsigned int peerConnectivityTimeout) : |
0 | 36 pushTransactions_(maxPushTransactions), |
37 semaphore_(threadsCount), | |
12 | 38 pluginUuid_(Orthanc::Toolbox::GenerateUuid()), |
0 | 39 threadsCount_(threadsCount), |
10
c9e28e31262e
new option: MaxHttpRetries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
9
diff
changeset
|
40 targetBucketSize_(targetBucketSize), |
55
b09adb6aa199
new PeerConnectivityTimeout configuration
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
41 maxHttpRetries_(maxHttpRetries), |
b09adb6aa199
new PeerConnectivityTimeout configuration
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
42 peerConnectivityTimeout_(peerConnectivityTimeout) |
0 | 43 { |
44 cache_.SetMaxMemorySize(memoryCacheSize); | |
45 | |
17 | 46 LOG(INFO) << "Transfers accelerator will use " << threadsCount_ << " thread(s) to run HTTP queries"; |
55
b09adb6aa199
new PeerConnectivityTimeout configuration
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
47 LOG(INFO) << "Transfers accelerator will keep local DICOM files in a memory cache of size: " |
0 | 48 << OrthancPlugins::ConvertToMegabytes(memoryCacheSize) << " MB"; |
49 LOG(INFO) << "Transfers accelerator will aim at HTTP queries of size: " | |
17 | 50 << OrthancPlugins::ConvertToKilobytes(targetBucketSize_) << " KB"; |
0 | 51 LOG(INFO) << "Transfers accelerator will be able to receive up to " |
17 | 52 << maxPushTransactions << " push transaction(s) at once"; |
53 LOG(INFO) << "Transfers accelerator will retry " | |
54 << maxHttpRetries_ << " time(s) if some HTTP query fails"; | |
55
b09adb6aa199
new PeerConnectivityTimeout configuration
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
55 LOG(INFO) << "Transfers accelerator will use " |
b09adb6aa199
new PeerConnectivityTimeout configuration
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
56 << peerConnectivityTimeout_ << " seconds as a timeout when checking peers connectivity"; |
0 | 57 } |
58 | |
59 | |
25
dfc43678aecb
replacing deprecated std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
20
diff
changeset
|
60 std::unique_ptr<PluginContext>& PluginContext::GetSingleton() |
0 | 61 { |
25
dfc43678aecb
replacing deprecated std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
20
diff
changeset
|
62 static std::unique_ptr<PluginContext> singleton_; |
0 | 63 return singleton_; |
64 } | |
65 | |
66 | |
8
4c3437217518
fix for compatibility with simplified OrthancPluginCppWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
67 void PluginContext::Initialize(size_t threadsCount, |
0 | 68 size_t targetBucketSize, |
69 size_t maxPushTransactions, | |
10
c9e28e31262e
new option: MaxHttpRetries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
9
diff
changeset
|
70 size_t memoryCacheSize, |
55
b09adb6aa199
new PeerConnectivityTimeout configuration
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
71 unsigned int maxHttpRetries, |
b09adb6aa199
new PeerConnectivityTimeout configuration
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
72 unsigned int peerConnectivityTimeout) |
0 | 73 { |
8
4c3437217518
fix for compatibility with simplified OrthancPluginCppWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5
diff
changeset
|
74 GetSingleton().reset(new PluginContext(threadsCount, targetBucketSize, |
55
b09adb6aa199
new PeerConnectivityTimeout configuration
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
75 maxPushTransactions, memoryCacheSize, maxHttpRetries, peerConnectivityTimeout)); |
0 | 76 } |
77 | |
78 | |
79 PluginContext& PluginContext::GetInstance() | |
80 { | |
81 if (GetSingleton().get() == NULL) | |
82 { | |
83 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | |
84 } | |
85 else | |
86 { | |
87 return *GetSingleton(); | |
88 } | |
89 } | |
90 | |
91 | |
92 void PluginContext::Finalize() | |
93 { | |
94 if (GetSingleton().get() != NULL) | |
95 { | |
96 GetSingleton().reset(); | |
97 } | |
98 } | |
99 } |