comparison OrthancStone/Sources/Oracle/GetOrthancImageCommand.h @ 1512:244ad1e4e76a

reorganization of folders
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 07 Jul 2020 16:21:02 +0200
parents Framework/Oracle/GetOrthancImageCommand.h@30deba7bc8e2
children 85e117739eca
comparison
equal deleted inserted replaced
1511:9dfeee74c1e6 1512:244ad1e4e76a
1 /**
2 * Stone of Orthanc
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
4 * Department, University Hospital of Liege, Belgium
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium
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 #pragma once
23
24 #include "../Messages/IMessageEmitter.h"
25 #include "OracleCommandBase.h"
26
27 #include <Images/ImageAccessor.h>
28
29 #include <map>
30
31 namespace OrthancStone
32 {
33 class GetOrthancImageCommand : public OracleCommandBase
34 {
35 public:
36 typedef std::map<std::string, std::string> HttpHeaders;
37
38 class SuccessMessage : public OriginMessage<GetOrthancImageCommand>
39 {
40 ORTHANC_STONE_MESSAGE(__FILE__, __LINE__);
41
42 private:
43 const Orthanc::ImageAccessor& image_;
44 Orthanc::MimeType mime_;
45
46 public:
47 SuccessMessage(const GetOrthancImageCommand& command,
48 const Orthanc::ImageAccessor& image,
49 Orthanc::MimeType mime) :
50 OriginMessage(command),
51 image_(image),
52 mime_(mime)
53 {
54 }
55
56 const Orthanc::ImageAccessor& GetImage() const
57 {
58 return image_;
59 }
60
61 Orthanc::MimeType GetMimeType() const
62 {
63 return mime_;
64 }
65 };
66
67
68 private:
69 std::string uri_;
70 HttpHeaders headers_;
71 unsigned int timeout_;
72 bool hasExpectedFormat_;
73 Orthanc::PixelFormat expectedFormat_;
74
75 GetOrthancImageCommand(const GetOrthancImageCommand& other) :
76 uri_(other.uri_),
77 headers_(other.headers_),
78 timeout_(other.timeout_),
79 hasExpectedFormat_(other.hasExpectedFormat_),
80 expectedFormat_(other.expectedFormat_)
81 {
82 }
83
84 public:
85 GetOrthancImageCommand();
86
87 virtual Type GetType() const
88 {
89 return Type_GetOrthancImage;
90 }
91
92 virtual IOracleCommand* Clone() const
93 {
94 return new GetOrthancImageCommand(*this);
95 }
96
97 void SetExpectedPixelFormat(Orthanc::PixelFormat format);
98
99 void SetUri(const std::string& uri)
100 {
101 uri_ = uri;
102 }
103
104 void SetInstanceUri(const std::string& instance,
105 Orthanc::PixelFormat pixelFormat);
106
107 void SetFrameUri(const std::string& instance,
108 unsigned int frame,
109 Orthanc::PixelFormat pixelFormat);
110
111 void SetHttpHeader(const std::string& key,
112 const std::string& value)
113 {
114 headers_[key] = value;
115 }
116
117 const std::string& GetUri() const
118 {
119 return uri_;
120 }
121
122 const HttpHeaders& GetHttpHeaders() const
123 {
124 return headers_;
125 }
126
127 void SetTimeout(unsigned int seconds)
128 {
129 timeout_ = seconds;
130 }
131
132 unsigned int GetTimeout() const
133 {
134 return timeout_;
135 }
136
137 void ProcessHttpAnswer(boost::weak_ptr<IObserver> receiver,
138 IMessageEmitter& emitter,
139 const std::string& answer,
140 const HttpHeaders& answerHeaders) const;
141 };
142 }