ImagingTools Core SDK
IProtocolEngine.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ACF includes
6#include <iser/IVersionInfo.h>
7
8// ImtCore includes
9#include <imtrest/IRequest.h>
10#include <imtrest/IRequestServlet.h>
11#include <imtrest/IResponse.h>
12
13
14namespace imtrest
15{
16
17
21class IProtocolEngine: virtual public istd::IPolymorphic
22{
23public:
25 {
30
35
40
45
51
56
61
62 SC_CONTINUE,
63 SC_SWITCHING_PROTOCOLS,
64 SC_PROCESSING,
65 SC_CREATED,
66 SC_ACCEPTED,
67 SC_NON_AUTHORITATIVE_INFORMATION,
68 SC_NO_CONTENT,
69 SC_RESET_CONTENT,
70 SC_PARTIAL_CONTENT,
71 SC_MULTI_STATUS,
72 SC_ALREADY_REPORTED,
73 SC_IM_USED,
74 SC_MULTIPLE_CHOICES,
75 SC_MOVED_PERMANENTLY,
76 SC_MOVED_TEMPORARILY,
77 SC_SEE_OTHER,
78 SC_USE_PROXY,
79 SC_RESERVE,
80 SC_TEMPORARY_REDIRECT,
81 SC_PERMANENT_REDIRECT,
82 SC_BAD_REQUEST,
83 SC_PAYMENT_REQUIRED,
84 SC_FORBIDDEN,
85 SC_NOT_FOUND,
86 SC_METHOD_NOT_ALLOWED,
87 SC_NOT_ACCEPTABLE,
88 SC_PROXY_AUTHENTICATION_REQUIRED,
89 SC_REQUEST_TIMEOUT,
90 SC_CONFLICT,
91 SC_GONE,
92 SC_LENGTH_REQUIRED,
93 SC_PRECONDITION_FAILED,
94 SC_PAYLOAD_TOO_LARGE,
95 SC_URI_TOO_LONG,
96 SC_UNSUPPORTED_MEDIA_TYPE,
97 SC_RANGE_NOT_SATISFIABLE,
98 SC_EXPECTATION_FAILED,
99 SC_I_AM_A_TEAPOT,
100 SC_MISDIRECTED_REQUEST,
101 SC_UNPROCESSABLE_ENTITY,
102 SC_LOCKED,
103 SC_FAILED_DEPENDENCY,
104 SC_UPGRADE_REQUIRED,
105 SC_PRECONDITION_REQUIRED,
106 SC_TOO_MANY_REQUESTS,
107 SC_REQUEST_HEADER_FIELDS_TOO_LARGE,
108 SC_RETRY_WITH,
109 SC_UNAVAILABLE_FOR_LEGAL_REASONS,
110 SC_INTERNAL_SERVER_ERROR,
111 SC_NOT_IMPLEMENTED,
112 SC_BAD_GATEWAY,
113 SC_SERVICE_UNAVAILABLE,
114 SC_GATEWAY_TIMEOUT,
115 SC_HTTP_VERSION_NOT_SUPPORTED,
116 SC_VARIANT_ALSO_NEGOTIATES,
117 SC_INSUFFICIENT_STORAGE,
118 SC_LOOP_DETECTED,
119 SC_BANDWIDTH_LIMIT_EXCEEDED,
120 SC_NOT_EXTENDED,
121 SC_NETWORK_AUTHENTICATION_REQUIRED,
122 SC_UNKNOWN_ERROR,
123 SC_WEB_SERVER_IS_DOWN,
124 SC_CONNECTION_TIMED_OUT,
125 SC_ORIGIN_IS_UNREACHABLE,
126 SC_A_TIMEOUT_OCCURRED,
127 SC_SSL_HANDSHAKE_FAILED,
128 SC_INVALID_SSL_CERTIFICATE
129 };
130
134 virtual QByteArray GetProtocolTypeId() const = 0;
135
139 virtual const iser::IVersionInfo* GetProtocolVersion() const = 0;
140
145 int statusCode,
146 int& protocolStatusCode,
147 QByteArray& statusCodeLiteral) const = 0;
148
154 virtual imtrest::IRequestUniquePtr CreateRequest(const IRequestServlet& requestHandler) const = 0;
155
161 virtual imtrest::IRequestUniquePtr CreateRequestForSend(
162 const IRequestServlet& requestHandler,
163 int statusCode,
164 const QByteArray& data,
165 const QByteArray& dataTypeId) const = 0;
166
172 virtual imtrest::IResponseUniquePtr CreateResponse(
173 const IRequest& request,
174 int statusCode,
175 const QByteArray& data,
176 const QByteArray& dataTypeId) const = 0;
177};
178
179
180} // namespace imtrest
181
182
virtual bool GetProtocolStatusCode(int statusCode, int &protocolStatusCode, QByteArray &statusCodeLiteral) const =0
virtual imtrest::IResponseUniquePtr CreateResponse(const IRequest &request, int statusCode, const QByteArray &data, const QByteArray &dataTypeId) const =0
virtual const iser::IVersionInfo * GetProtocolVersion() const =0
virtual imtrest::IRequestUniquePtr CreateRequestForSend(const IRequestServlet &requestHandler, int statusCode, const QByteArray &data, const QByteArray &dataTypeId) const =0
virtual QByteArray GetProtocolTypeId() const =0
virtual imtrest::IRequestUniquePtr CreateRequest(const IRequestServlet &requestHandler) const =0