Mercurial > hg > orthanc
annotate OrthancServer/Sources/ServerJobs/DicomMoveScuJob.h @ 5410:16cbfefa15e9
Solved a deadlock related to the Job Engine events and plugins
author | Alain Mazy <am@osimis.io> |
---|---|
date | Tue, 07 Nov 2023 12:52:37 +0100 |
parents | 0ea402b4d901 |
children | 48b8dae6dc77 |
rev | line source |
---|---|
2867 | 1 /** |
2 * Orthanc - A Lightweight, RESTful DICOM Store | |
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics | |
4 * Department, University Hospital of Liege, Belgium | |
5185
0ea402b4d901
upgrade to year 2023
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5025
diff
changeset
|
5 * Copyright (C) 2017-2023 Osimis S.A., Belgium |
0ea402b4d901
upgrade to year 2023
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5025
diff
changeset
|
6 * Copyright (C) 2021-2023 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
2867 | 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 | |
23 #pragma once | |
24 | |
4045 | 25 #include "../../../OrthancFramework/Sources/Compatibility.h" |
26 #include "../../../OrthancFramework/Sources/DicomNetworking/DicomControlUserConnection.h" | |
27 #include "../../../OrthancFramework/Sources/JobsEngine/SetOfCommandsJob.h" | |
2867 | 28 |
29 #include "../QueryRetrieveHandler.h" | |
30 | |
31 namespace Orthanc | |
32 { | |
3095
beeeb6096f27
removing dependencies upon ServerContext
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
33 class ServerContext; |
beeeb6096f27
removing dependencies upon ServerContext
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
34 |
2867 | 35 class DicomMoveScuJob : public SetOfCommandsJob |
36 { | |
37 private: | |
38 class Command; | |
39 class Unserializer; | |
40 | |
3877
4b4f387c6bb8
making DicomMoveScuJob more consistent with DicomModalityStoreJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3870
diff
changeset
|
41 ServerContext& context_; |
4b4f387c6bb8
making DicomMoveScuJob more consistent with DicomModalityStoreJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3870
diff
changeset
|
42 DicomAssociationParameters parameters_; |
4b4f387c6bb8
making DicomMoveScuJob more consistent with DicomModalityStoreJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3870
diff
changeset
|
43 std::string targetAet_; |
4730
7826ac059c31
Added Short/Simplify/Full options to format "/modalities/{id}/find-worklist" and "/queries/{id}/retrieve"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4729
diff
changeset
|
44 DicomFindAnswers query_; |
4729
4e2247df6327
Added "Short" and "Full" options in /modalities/id/find-worklist
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
45 DicomToJsonFormat queryFormat_; // New in 1.9.5 |
2867 | 46 |
3843
138d0dde41b5
end of replacements of DicomUserConnection by DicomControlUserConnection
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
47 std::unique_ptr<DicomControlUserConnection> connection_; |
138d0dde41b5
end of replacements of DicomUserConnection by DicomControlUserConnection
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
48 |
2867 | 49 void Retrieve(const DicomMap& findAnswer); |
50 | |
51 public: | |
4205 | 52 explicit DicomMoveScuJob(ServerContext& context) : |
3303
a215182a0c2f
"DicomMoveScu" jobs provide the associated C-FIND answer in their "Query" public field
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3095
diff
changeset
|
53 context_(context), |
5025
afa427f65444
Added an Asynchronous mode to /modalities/../move
Alain Mazy <am@osimis.io>
parents:
4892
diff
changeset
|
54 query_(false /* this is not for worklists */), |
4729
4e2247df6327
Added "Short" and "Full" options in /modalities/id/find-worklist
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
55 queryFormat_(DicomToJsonFormat_Short) |
2867 | 56 { |
57 } | |
58 | |
59 DicomMoveScuJob(ServerContext& context, | |
60 const Json::Value& serialized); | |
61 | |
62 void AddFindAnswer(const DicomMap& answer); | |
63 | |
5025
afa427f65444
Added an Asynchronous mode to /modalities/../move
Alain Mazy <am@osimis.io>
parents:
4892
diff
changeset
|
64 void AddQuery(const DicomMap& query); |
afa427f65444
Added an Asynchronous mode to /modalities/../move
Alain Mazy <am@osimis.io>
parents:
4892
diff
changeset
|
65 |
2867 | 66 void AddFindAnswer(QueryRetrieveHandler& query, |
67 size_t i); | |
3877
4b4f387c6bb8
making DicomMoveScuJob more consistent with DicomModalityStoreJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3870
diff
changeset
|
68 |
4b4f387c6bb8
making DicomMoveScuJob more consistent with DicomModalityStoreJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3870
diff
changeset
|
69 const DicomAssociationParameters& GetParameters() const |
2867 | 70 { |
3877
4b4f387c6bb8
making DicomMoveScuJob more consistent with DicomModalityStoreJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3870
diff
changeset
|
71 return parameters_; |
2867 | 72 } |
3877
4b4f387c6bb8
making DicomMoveScuJob more consistent with DicomModalityStoreJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3870
diff
changeset
|
73 |
4b4f387c6bb8
making DicomMoveScuJob more consistent with DicomModalityStoreJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3870
diff
changeset
|
74 void SetLocalAet(const std::string& aet); |
2867 | 75 |
3877
4b4f387c6bb8
making DicomMoveScuJob more consistent with DicomModalityStoreJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3870
diff
changeset
|
76 void SetRemoteModality(const RemoteModalityParameters& remote); |
4b4f387c6bb8
making DicomMoveScuJob more consistent with DicomModalityStoreJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3870
diff
changeset
|
77 |
4b4f387c6bb8
making DicomMoveScuJob more consistent with DicomModalityStoreJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3870
diff
changeset
|
78 void SetTimeout(uint32_t timeout); |
2867 | 79 |
80 const std::string& GetTargetAet() const | |
81 { | |
82 return targetAet_; | |
83 } | |
3877
4b4f387c6bb8
making DicomMoveScuJob more consistent with DicomModalityStoreJob
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3870
diff
changeset
|
84 |
2867 | 85 void SetTargetAet(const std::string& aet); |
86 | |
4729
4e2247df6327
Added "Short" and "Full" options in /modalities/id/find-worklist
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
87 void SetQueryFormat(DicomToJsonFormat format); |
4e2247df6327
Added "Short" and "Full" options in /modalities/id/find-worklist
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
88 |
4e2247df6327
Added "Short" and "Full" options in /modalities/id/find-worklist
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
89 DicomToJsonFormat GetQueryFormat() const |
4e2247df6327
Added "Short" and "Full" options in /modalities/id/find-worklist
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
90 { |
4e2247df6327
Added "Short" and "Full" options in /modalities/id/find-worklist
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
91 return queryFormat_; |
4e2247df6327
Added "Short" and "Full" options in /modalities/id/find-worklist
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
92 } |
4e2247df6327
Added "Short" and "Full" options in /modalities/id/find-worklist
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
93 |
4205 | 94 virtual void Stop(JobStopReason reason) ORTHANC_OVERRIDE; |
2867 | 95 |
4205 | 96 virtual void GetJobType(std::string& target) ORTHANC_OVERRIDE |
2867 | 97 { |
98 target = "DicomMoveScu"; | |
99 } | |
100 | |
4205 | 101 virtual void GetPublicContent(Json::Value& value) ORTHANC_OVERRIDE; |
2867 | 102 |
4205 | 103 virtual bool Serialize(Json::Value& target) ORTHANC_OVERRIDE; |
2867 | 104 }; |
105 } |