AWS IoT Device SDK C++ v2 1.44.2
AWS IoT Device SDK C++ v2
Loading...
Searching...
No Matches
EventStreamClient.h
Go to the documentation of this file.
1#pragma once
6
8
9#include <aws/crt/DateTime.h>
10#include <aws/crt/JsonObject.h>
12#include <aws/crt/Types.h>
15
16#include <aws/event-stream/event_stream_rpc_client.h>
17
18#include <functional>
19#include <future>
20
21namespace Aws
22{
23 namespace Crt
24 {
25 namespace Io
26 {
27 class ClientBootstrap;
28 }
29 } // namespace Crt
31 {
33 class MessageAmendment;
34 class ClientOperation;
35 class ClientConnection;
37
38 using HeaderValueType = aws_event_stream_header_value_type;
39 using MessageType = aws_event_stream_rpc_message_type;
40
45 using OnMessageFlushCallback = std::function<void(int errorCode)>;
46
52 using ConnectMessageAmender = std::function<const MessageAmendment &(void)>;
53
58 {
59 public:
60 EventStreamHeader(const EventStreamHeader &lhs) noexcept;
62 explicit EventStreamHeader(
63 const struct aws_event_stream_header_value_pair &header,
64 Crt::Allocator *allocator = Crt::g_allocator);
66 const Crt::String &name,
67 const Crt::String &value,
68 Crt::Allocator *allocator = Crt::g_allocator) noexcept;
69
70 ~EventStreamHeader() noexcept;
71
72 EventStreamHeader &operator=(const EventStreamHeader &lhs) noexcept;
73
74 Crt::String GetHeaderName() const noexcept;
75
76 bool GetValueAsString(Crt::String &) const noexcept;
77
78 const struct aws_event_stream_header_value_pair *GetUnderlyingHandle() const;
79
80 private:
81 Crt::Allocator *m_allocator;
82 Crt::ByteBuf m_valueByteBuf;
83 struct aws_event_stream_header_value_pair m_underlyingHandle;
84 };
85
92 {
93 public:
94 explicit MessageAmendment(Crt::Allocator *allocator = Crt::g_allocator) noexcept;
96 MessageAmendment(MessageAmendment &&rhs) noexcept;
98 const Crt::List<EventStreamHeader> &headers,
100 Crt::Allocator *allocator) noexcept;
101 explicit MessageAmendment(
102 const Crt::List<EventStreamHeader> &headers,
103 Crt::Allocator *allocator = Crt::g_allocator) noexcept;
104 explicit MessageAmendment(
106 Crt::Allocator *allocator = Crt::g_allocator) noexcept;
107 explicit MessageAmendment(
108 const Crt::ByteBuf &payload,
109 Crt::Allocator *allocator = Crt::g_allocator) noexcept;
110
111 ~MessageAmendment() noexcept;
112
115
119 void AddHeader(EventStreamHeader &&header) noexcept;
120
125 void SetPayload(const Crt::Optional<Crt::ByteBuf> &payload) noexcept;
127 const Crt::List<EventStreamHeader> &GetHeaders() const & noexcept;
129 const Crt::Optional<Crt::ByteBuf> &GetPayload() const & noexcept;
131
132 private:
135 Crt::Allocator *m_allocator;
136 };
137
155
160 {
161 public:
164 Crt::Optional<uint32_t> GetPort() const noexcept { return m_port; }
174 {
175 return [&]() -> const MessageAmendment & { return m_connectAmendment; };
176 }
177
178 void SetHostName(Crt::String hostName) noexcept { m_hostName = std::move(hostName); }
179 void SetPort(uint32_t port) noexcept { m_port = port; }
180 void SetSocketOptions(const Crt::Io::SocketOptions &socketOptions) noexcept
181 {
182 m_socketOptions = socketOptions;
183 }
184 void SetConnectAmendment(const MessageAmendment &connectAmendment) noexcept
185 {
186 m_connectAmendment = connectAmendment;
187 }
188 void SetTlsConnectionOptions(Crt::Io::TlsConnectionOptions tlsConnectionOptions) noexcept
189 {
190 m_tlsConnectionOptions = std::move(tlsConnectionOptions);
191 }
192 void SetClientBootstrap(Crt::Io::ClientBootstrap *clientBootstrap) noexcept
193 {
194 m_clientBootstrap = clientBootstrap;
195 }
196 void SetConnectRequestCallback(OnMessageFlushCallback connectRequestCallback) noexcept
197 {
198 m_connectRequestCallback = std::move(connectRequestCallback);
199 }
200
201 EventStreamRpcStatusCode Validate() const noexcept;
202
203 protected:
204 Crt::Optional<Crt::String> m_hostName;
205 Crt::Optional<uint32_t> m_port;
206 Crt::Optional<Crt::Io::SocketOptions> m_socketOptions;
207 Crt::Optional<Crt::Io::TlsConnectionOptions> m_tlsConnectionOptions;
208 Crt::Io::ClientBootstrap *m_clientBootstrap;
211 };
212
214 {
215 explicit operator bool() const noexcept { return baseStatus == EVENT_STREAM_RPC_SUCCESS; }
216 Crt::String StatusToString() const;
217
220 };
221
226 {
227 public:
228 virtual ~ConnectionLifecycleHandler() noexcept = default;
229
235 virtual void OnConnectCallback();
236
242 virtual void OnDisconnectCallback(RpcError status);
243
249 virtual bool OnErrorCallback(RpcError status);
250
255 virtual void OnPingCallback(
256 const Crt::List<EventStreamHeader> &headers,
257 const Crt::Optional<Crt::ByteBuf> &payload);
258 };
259
262
267 {
268 public:
269 ClientConnection(Crt::Allocator *allocator, aws_client_bootstrap *bootstrap) noexcept;
270 ~ClientConnection() noexcept;
271
278 std::future<RpcError> Connect(
279 const ConnectionConfig &connectionOptions,
280 ConnectionLifecycleHandler *connectionLifecycleHandler) noexcept;
281
286 std::shared_ptr<ClientContinuationImpl> NewStream() noexcept;
287
291 void Close() noexcept;
292
297 bool IsOpen() const noexcept;
298
299 private:
300 std::shared_ptr<ClientConnectionImpl> m_impl;
301 };
302
308 {
309 public:
310 virtual ~ClientContinuationHandler() noexcept = default;
311 };
312
317 {
318 public:
319 AbstractShapeBase() noexcept;
320 virtual ~AbstractShapeBase() noexcept = default;
321 static void s_customDeleter(AbstractShapeBase *shape) noexcept;
322 virtual void SerializeToJsonObject(Crt::JsonObject &payloadObject) const = 0;
323 virtual Crt::String GetModelName() const noexcept = 0;
324
325 protected:
326 Crt::Allocator *m_allocator;
327 };
328
333 {
334 public:
335 explicit OperationError() noexcept = default;
336 static void s_customDeleter(OperationError *shape) noexcept;
337 void SerializeToJsonObject(Crt::JsonObject &payloadObject) const override;
338 virtual Crt::Optional<Crt::String> GetMessage() const noexcept = 0;
339 };
340
347 {
348 public:
349 virtual ~StreamResponseHandler() noexcept = default;
350
354 virtual void OnStreamClosed();
355
356 protected:
361 virtual void OnStreamEvent(Crt::ScopedResource<AbstractShapeBase> response);
367 virtual bool OnStreamError(Crt::ScopedResource<OperationError> operationError, RpcError rpcError);
368 };
369
377
379 {
380 public:
382 explicit EventstreamResultVariantType(Crt::ScopedResource<AbstractShapeBase> &&modeledResponse) noexcept;
384 explicit EventstreamResultVariantType(RpcError rpcError) noexcept;
387
389
390 ResultType GetType() const { return m_type; }
391
392 AbstractShapeBase *GetModeledResponse() const;
393
394 OperationError *GetModeledError() const;
395
396 RpcError GetRpcError() const;
397
398 private:
399 ResultType m_type;
400
403 RpcError m_rpcError;
404 };
405
406 using ExpectedResponseFactory = std::function<
408 using ErrorResponseFactory = std::function<
410
411 using LoneResponseRetriever = std::function<ExpectedResponseFactory(const Crt::String &modelName)>;
412 using StreamingResponseRetriever = std::function<ExpectedResponseFactory(const Crt::String &modelName)>;
413 using ErrorResponseRetriever = std::function<ErrorResponseFactory(const Crt::String &modelName)>;
414
416 {
417 /* An interface shared by all operations for retrieving the response object given the model name. */
418 public:
419 virtual ~ResponseRetriever() noexcept = default;
421 const Crt::String &modelName) const noexcept = 0;
423 const Crt::String &modelName) const noexcept = 0;
425 const Crt::String &modelName) const noexcept = 0;
426 };
427
429 {
430 public:
431 virtual ~ServiceModel() noexcept = default;
433 const Crt::String &errorModelName,
434 Crt::StringView stringView,
435 Crt::Allocator *allocator) const noexcept = 0;
436 };
437
442 {
443 public:
444 explicit OperationModelContext(const ServiceModel &serviceModel) noexcept;
445
446 virtual ~OperationModelContext() noexcept = default;
447
455 Crt::StringView stringView,
456 Crt::Allocator *allocator) const noexcept = 0;
457
465 Crt::StringView stringView,
466 Crt::Allocator *allocator) const noexcept = 0;
467
472 virtual Crt::String GetInitialResponseModelName() const noexcept = 0;
473
478 virtual Crt::String GetRequestModelName() const noexcept = 0;
479
484 virtual Crt::Optional<Crt::String> GetStreamingResponseModelName() const noexcept = 0;
485
492 virtual Crt::String GetOperationName() const noexcept = 0;
493
502 const Crt::String &errorModelName,
503 Crt::StringView stringView,
504 Crt::Allocator *allocator) const noexcept
505 {
506 return m_serviceModel.AllocateOperationErrorFromPayload(errorModelName, stringView, allocator);
507 }
508
509 private:
510 const ServiceModel &m_serviceModel;
511 };
512
517 {
518 public:
520 ClientConnection &connection,
521 std::shared_ptr<StreamResponseHandler> streamHandler,
522 const std::shared_ptr<OperationModelContext> &operationModelContext,
523 Crt::Allocator *allocator) noexcept;
524 ~ClientOperation() noexcept override;
525
526 ClientOperation(const ClientOperation &clientOperation) noexcept = delete;
527 ClientOperation(ClientOperation &&clientOperation) noexcept = delete;
528 bool operator=(const ClientOperation &clientOperation) noexcept = delete;
529 bool operator=(ClientOperation &&clientOperation) noexcept = delete;
530
538 std::future<RpcError> Close(OnMessageFlushCallback onMessageFlushCallback = nullptr) noexcept;
539
547 void WithLaunchMode(std::launch mode) noexcept;
548
549 protected:
557 std::future<RpcError> Activate(
558 const AbstractShapeBase *shape,
559 OnMessageFlushCallback &&onMessageFlushCallback,
560 std::function<void(EventstreamResultVariantType &&)> &&onResultCallback) noexcept;
561
571 const AbstractShapeBase *shape,
572 OnMessageFlushCallback &&onMessageFlushCallback) noexcept;
573
579 virtual Crt::String GetModelName() const noexcept;
580
581 private:
582 Aws::Crt::Allocator *m_allocator;
583
584 std::shared_ptr<ClientContinuationImpl> m_impl;
585 };
586
587 } // namespace Eventstreamrpc
588} // namespace Aws
Definition Bootstrap.h:35
Definition SocketOptions.h:48
Definition TlsOptions.h:311
Definition Optional.h:19
Definition EventStreamClient.h:317
virtual ~AbstractShapeBase() noexcept=default
virtual void SerializeToJsonObject(Crt::JsonObject &payloadObject) const =0
Crt::Allocator * m_allocator
Definition EventStreamClient.h:326
AbstractShapeBase() noexcept
Definition EventStreamClient.cpp:1299
static void s_customDeleter(AbstractShapeBase *shape) noexcept
Definition EventStreamClient.cpp:1301
virtual Crt::String GetModelName() const noexcept=0
Definition EventStreamClient.h:267
std::shared_ptr< ClientContinuationImpl > NewStream() noexcept
Definition EventStreamClient.cpp:1269
void Close() noexcept
Definition EventStreamClient.cpp:1274
ClientConnection(Crt::Allocator *allocator, aws_client_bootstrap *bootstrap) noexcept
Definition EventStreamClient.cpp:1251
std::future< RpcError > Connect(const ConnectionConfig &connectionOptions, ConnectionLifecycleHandler *connectionLifecycleHandler) noexcept
Definition EventStreamClient.cpp:1262
bool IsOpen() const noexcept
Definition EventStreamClient.cpp:1279
Definition EventStreamClient.cpp:697
Definition EventStreamClient.h:308
virtual ~ClientContinuationHandler() noexcept=default
Definition EventStreamClient.cpp:1418
Definition EventStreamClient.h:517
bool operator=(ClientOperation &&clientOperation) noexcept=delete
std::future< RpcError > Close(OnMessageFlushCallback onMessageFlushCallback=nullptr) noexcept
Definition EventStreamClient.cpp:2333
std::future< RpcError > SendStreamMessage(const AbstractShapeBase *shape, OnMessageFlushCallback &&onMessageFlushCallback) noexcept
Definition EventStreamClient.cpp:2371
ClientOperation(ClientConnection &connection, std::shared_ptr< StreamResponseHandler > streamHandler, const std::shared_ptr< OperationModelContext > &operationModelContext, Crt::Allocator *allocator) noexcept
Definition EventStreamClient.cpp:2317
ClientOperation(const ClientOperation &clientOperation) noexcept=delete
virtual Crt::String GetModelName() const noexcept
Definition EventStreamClient.cpp:2343
void WithLaunchMode(std::launch mode) noexcept
Definition EventStreamClient.cpp:2338
ClientOperation(ClientOperation &&clientOperation) noexcept=delete
bool operator=(const ClientOperation &clientOperation) noexcept=delete
std::future< RpcError > Activate(const AbstractShapeBase *shape, OnMessageFlushCallback &&onMessageFlushCallback, std::function< void(EventstreamResultVariantType &&)> &&onResultCallback) noexcept
Definition EventStreamClient.cpp:2348
Definition EventStreamClient.h:160
Crt::Optional< uint32_t > m_port
Definition EventStreamClient.h:205
void SetTlsConnectionOptions(Crt::Io::TlsConnectionOptions tlsConnectionOptions) noexcept
Definition EventStreamClient.h:188
void SetConnectAmendment(const MessageAmendment &connectAmendment) noexcept
Definition EventStreamClient.h:184
void SetSocketOptions(const Crt::Io::SocketOptions &socketOptions) noexcept
Definition EventStreamClient.h:180
Crt::Optional< Crt::String > GetHostName() const noexcept
Definition EventStreamClient.h:163
Crt::Io::ClientBootstrap * GetClientBootstrap() const noexcept
Definition EventStreamClient.h:171
Crt::Optional< uint32_t > GetPort() const noexcept
Definition EventStreamClient.h:164
Crt::Optional< Crt::Io::TlsConnectionOptions > m_tlsConnectionOptions
Definition EventStreamClient.h:207
void SetConnectRequestCallback(OnMessageFlushCallback connectRequestCallback) noexcept
Definition EventStreamClient.h:196
Crt::Optional< Crt::Io::TlsConnectionOptions > GetTlsConnectionOptions() const noexcept
Definition EventStreamClient.h:167
ConnectionConfig() noexcept
Definition EventStreamClient.h:162
OnMessageFlushCallback GetConnectRequestCallback() const noexcept
Definition EventStreamClient.h:172
Crt::Io::ClientBootstrap * m_clientBootstrap
Definition EventStreamClient.h:208
Crt::Optional< MessageAmendment > GetConnectAmendment() const noexcept
Definition EventStreamClient.h:166
MessageAmendment m_connectAmendment
Definition EventStreamClient.h:209
void SetHostName(Crt::String hostName) noexcept
Definition EventStreamClient.h:178
Crt::Optional< Crt::String > m_hostName
Definition EventStreamClient.h:204
OnMessageFlushCallback m_connectRequestCallback
Definition EventStreamClient.h:210
void SetClientBootstrap(Crt::Io::ClientBootstrap *clientBootstrap) noexcept
Definition EventStreamClient.h:192
ConnectMessageAmender GetConnectMessageAmender() const noexcept
Definition EventStreamClient.h:173
Crt::Optional< Crt::Io::SocketOptions > GetSocketOptions() const noexcept
Definition EventStreamClient.h:165
void SetPort(uint32_t port) noexcept
Definition EventStreamClient.h:179
Crt::Optional< Crt::Io::SocketOptions > m_socketOptions
Definition EventStreamClient.h:206
Definition EventStreamClient.h:226
virtual void OnPingCallback(const Crt::List< EventStreamHeader > &headers, const Crt::Optional< Crt::ByteBuf > &payload)
Definition EventStreamClient.cpp:376
virtual void OnDisconnectCallback(RpcError status)
Definition EventStreamClient.cpp:386
virtual void OnConnectCallback()
Definition EventStreamClient.cpp:384
virtual bool OnErrorCallback(RpcError status)
Definition EventStreamClient.cpp:369
virtual ~ConnectionLifecycleHandler() noexcept=default
Definition EventStreamClient.h:58
bool GetValueAsString(Crt::String &) const noexcept
Definition EventStreamClient.cpp:487
const struct aws_event_stream_header_value_pair * GetUnderlyingHandle() const
Definition EventStreamClient.cpp:477
EventStreamHeader(const EventStreamHeader &lhs) noexcept
Definition EventStreamClient.cpp:442
Crt::String GetHeaderName() const noexcept
Definition EventStreamClient.cpp:482
EventStreamHeader & operator=(const EventStreamHeader &lhs) noexcept
Definition EventStreamClient.cpp:451
Definition EventStreamClient.h:379
EventstreamResultVariantType()
Definition EventStreamClient.cpp:2391
ResultType GetType() const
Definition EventStreamClient.h:390
EventstreamResultVariantType & operator=(EventstreamResultVariantType &&rhs) noexcept
Definition EventStreamClient.cpp:2423
Definition EventStreamClient.h:92
MessageAmendment & operator=(const MessageAmendment &lhs)
Definition EventStreamClient.cpp:217
void SetPayload(const Crt::Optional< Crt::ByteBuf > &payload) noexcept
Definition EventStreamClient.cpp:283
const Crt::List< EventStreamHeader > & GetHeaders() const &noexcept
Definition EventStreamClient.cpp:253
const Crt::Optional< Crt::ByteBuf > & GetPayload() const &noexcept
Definition EventStreamClient.cpp:263
MessageAmendment(Crt::Allocator *allocator=Crt::g_allocator) noexcept
Definition EventStreamClient.cpp:172
void PrependHeaders(Crt::List< EventStreamHeader > &&headers)
Definition EventStreamClient.cpp:278
void AddHeader(EventStreamHeader &&header) noexcept
Definition EventStreamClient.cpp:273
Definition EventStreamClient.h:333
static void s_customDeleter(OperationError *shape) noexcept
Definition EventStreamClient.cpp:1294
virtual Crt::Optional< Crt::String > GetMessage() const noexcept=0
void SerializeToJsonObject(Crt::JsonObject &payloadObject) const override
Definition EventStreamClient.cpp:1289
virtual Crt::Optional< Crt::String > GetStreamingResponseModelName() const noexcept=0
virtual Crt::String GetOperationName() const noexcept=0
Crt::ScopedResource< OperationError > AllocateOperationErrorFromPayload(const Crt::String &errorModelName, Crt::StringView stringView, Crt::Allocator *allocator) const noexcept
Definition EventStreamClient.h:501
virtual Crt::String GetRequestModelName() const noexcept=0
OperationModelContext(const ServiceModel &serviceModel) noexcept
Definition EventStreamClient.cpp:1284
virtual Crt::ScopedResource< AbstractShapeBase > AllocateStreamingResponseFromPayload(Crt::StringView stringView, Crt::Allocator *allocator) const noexcept=0
virtual ~OperationModelContext() noexcept=default
virtual Crt::ScopedResource< AbstractShapeBase > AllocateInitialResponseFromPayload(Crt::StringView stringView, Crt::Allocator *allocator) const noexcept=0
virtual Crt::String GetInitialResponseModelName() const noexcept=0
Definition EventStreamClient.h:416
virtual ~ResponseRetriever() noexcept=default
virtual ExpectedResponseFactory GetStreamingResponseFromModelName(const Crt::String &modelName) const noexcept=0
virtual ErrorResponseFactory GetOperationErrorFromModelName(const Crt::String &modelName) const noexcept=0
virtual ExpectedResponseFactory GetInitialResponseFromModelName(const Crt::String &modelName) const noexcept=0
Definition EventStreamClient.h:429
virtual Crt::ScopedResource< OperationError > AllocateOperationErrorFromPayload(const Crt::String &errorModelName, Crt::StringView stringView, Crt::Allocator *allocator) const noexcept=0
virtual ~ServiceModel() noexcept=default
Definition EventStreamClient.h:347
virtual void OnStreamEvent(Crt::ScopedResource< AbstractShapeBase > response)
Definition EventStreamClient.cpp:1318
virtual void OnStreamClosed()
Definition EventStreamClient.cpp:1323
virtual ~StreamResponseHandler() noexcept=default
friend class ClientContinuationImpl
Definition EventStreamClient.h:357
virtual bool OnStreamError(Crt::ScopedResource< OperationError > operationError, RpcError rpcError)
Definition EventStreamClient.cpp:1309
#define AWS_EVENTSTREAMRPC_API
Definition Exports.h:19
Definition Credentials.h:23
Definition Allocator.h:13
std::unique_ptr< T, std::function< void(T *)> > ScopedResource
Definition Types.h:163
std::basic_string< char, std::char_traits< char >, StlAllocator< char > > String
Definition Types.h:45
AWS_CRT_CPP_API Allocator * g_allocator
Definition Allocator.cpp:22
aws_allocator Allocator
Definition Allocator.h:14
string_view StringView
Definition StringView.h:856
std::list< T, StlAllocator< T > > List
Definition Types.h:54
aws_byte_buf ByteBuf
Definition Types.h:30
Definition EventStreamClient.h:31
aws_event_stream_header_value_type HeaderValueType
Definition EventStreamClient.h:38
std::function< ExpectedResponseFactory(const Crt::String &modelName)> LoneResponseRetriever
Definition EventStreamClient.h:411
std::function< const MessageAmendment &(void)> ConnectMessageAmender
Definition EventStreamClient.h:52
std::function< void(int errorCode)> OnMessageFlushCallback
Definition EventStreamClient.h:45
std::function< ExpectedResponseFactory(const Crt::String &modelName)> StreamingResponseRetriever
Definition EventStreamClient.h:412
std::function< Crt::ScopedResource< AbstractShapeBase >(const Crt::StringView &payload, Crt::Allocator *allocator)> ExpectedResponseFactory
Definition EventStreamClient.h:406
EventStreamRpcStatusCode
Definition EventStreamClient.h:139
@ EVENT_STREAM_RPC_CONNECTION_SETUP_FAILED
Definition EventStreamClient.h:144
@ EVENT_STREAM_RPC_UNMAPPED_DATA
Definition EventStreamClient.h:150
@ EVENT_STREAM_RPC_CONNECTION_ALREADY_ESTABLISHED
Definition EventStreamClient.h:146
@ EVENT_STREAM_RPC_UNINITIALIZED
Definition EventStreamClient.h:142
@ EVENT_STREAM_RPC_NULL_PARAMETER
Definition EventStreamClient.h:141
@ EVENT_STREAM_RPC_CRT_ERROR
Definition EventStreamClient.h:152
@ EVENT_STREAM_RPC_SUCCESS
Definition EventStreamClient.h:140
@ EVENT_STREAM_RPC_CONTINUATION_NOT_YET_OPENED
Definition EventStreamClient.h:153
@ EVENT_STREAM_RPC_CONNECTION_ACCESS_DENIED
Definition EventStreamClient.h:145
@ EVENT_STREAM_RPC_CONTINUATION_CLOSED
Definition EventStreamClient.h:148
@ EVENT_STREAM_RPC_CONNECTION_CLOSED
Definition EventStreamClient.h:147
@ EVENT_STREAM_RPC_UNSUPPORTED_CONTENT_TYPE
Definition EventStreamClient.h:151
@ EVENT_STREAM_RPC_UNKNOWN_PROTOCOL_MESSAGE
Definition EventStreamClient.h:149
@ EVENT_STREAM_RPC_ALLOCATION_ERROR
Definition EventStreamClient.h:143
aws_event_stream_rpc_message_type MessageType
Definition EventStreamClient.h:39
std::function< ErrorResponseFactory(const Crt::String &modelName)> ErrorResponseRetriever
Definition EventStreamClient.h:413
ResultType
Definition EventStreamClient.h:371
@ NONE
Definition EventStreamClient.h:372
@ OPERATION_ERROR
Definition EventStreamClient.h:374
@ OPERATION_RESPONSE
Definition EventStreamClient.h:373
@ RPC_ERROR
Definition EventStreamClient.h:375
std::function< Crt::ScopedResource< OperationError >(const Crt::StringView &payload, Crt::Allocator *allocator)> ErrorResponseFactory
Definition EventStreamClient.h:408
Definition Mqtt5Client.h:19
Definition Allocator.h:11
Definition StringView.h:862
Definition EventStreamClient.h:214
int crtError
Definition EventStreamClient.h:219
EventStreamRpcStatusCode baseStatus
Definition EventStreamClient.h:218