14#include <aws/mqtt/request-response/request_response_client.h>
36 namespace RequestResponse
88 m_errorCode = errorCode;
141 AWS_ZERO_STRUCT(m_topic);
142 AWS_ZERO_STRUCT(m_payload);
177 m_contentType = contentType;
189 m_userProperties = std::move(userProperties);
201 m_messageExpiryIntervalSeconds = messageExpiryIntervalSeconds;
232 return m_userProperties;
237 return m_messageExpiryIntervalSeconds;
268 AWS_ZERO_STRUCT(m_payload);
269 AWS_ZERO_STRUCT(m_topic);
329 template <
typename R,
typename E>
class Result
334 explicit Result(
const R &response) : m_rawResult(response) {}
335 explicit Result(R &&response) : m_rawResult(
std::move(response)) {}
336 explicit Result(
const E &error) : m_rawResult(error) {}
337 explicit Result(E &&error) : m_rawResult(
std::move(error)) {}
341 this->m_rawResult = response;
348 this->m_rawResult = std::move(response);
355 this->m_rawResult = error;
361 this->m_rawResult = std::move(error);
366 bool IsSuccess()
const {
return m_rawResult.template holds_alternative<R>(); }
372 return m_rawResult.template get<R>();
379 return m_rawResult.template get<E>();
416 m_subscriptionStatusEventHandler = handler;
428 m_streamHandler = handler;
439 return m_subscriptionStatusEventHandler;
452 std::function<void(T &&)> m_streamHandler;
465 : subscriptionTopicFilter(), subscriptionStatusEventHandler(), incomingPublishEventHandler()
467 AWS_ZERO_STRUCT(subscriptionTopicFilter);
512 uint32_t maxRequestResponseSubscriptions)
514 m_maxRequestResponseSubscriptions = maxRequestResponseSubscriptions;
529 m_maxStreamingSubscriptions = maxStreamingSubscriptions;
543 m_operationTimeoutInSeconds = operationTimeoutInSeconds;
574 uint32_t m_maxRequestResponseSubscriptions = 0;
579 uint32_t m_maxStreamingSubscriptions = 0;
584 uint32_t m_operationTimeoutInSeconds = 0;
607 const aws_mqtt_request_operation_options &requestOptions,
#define AWS_CRT_CPP_API
Definition Exports.h:36
Definition Mqtt5Client.h:332
Definition MqttConnection.h:158
Definition MqttRequestResponseClient.h:591
virtual int SubmitRequest(const aws_mqtt_request_operation_options &requestOptions, UnmodeledResultHandler &&resultHandler)=0
virtual ~IMqttRequestResponseClient()=default
virtual std::shared_ptr< IStreamingOperation > CreateStream(const StreamingOperationOptionsInternal &options)=0
Definition MqttRequestResponseClient.h:481
virtual ~IStreamingOperation()=default
Definition MqttRequestResponseClient.h:134
IncomingPublishEvent & WithContentType(Aws::Crt::ByteCursor contentType)
Definition MqttRequestResponseClient.h:175
IncomingPublishEvent()
Definition MqttRequestResponseClient.h:139
const Aws::Crt::Optional< Aws::Crt::Vector< UserPropertyView > > & GetUserProperties() const
Definition MqttRequestResponseClient.h:230
IncomingPublishEvent & WithUserProperties(Aws::Crt::Vector< UserPropertyView > userProperties)
Definition MqttRequestResponseClient.h:187
const Aws::Crt::Optional< uint32_t > & GetMessageExpiryIntervalSeconds() const
Definition MqttRequestResponseClient.h:235
IncomingPublishEvent & WithPayload(Aws::Crt::ByteCursor payload)
Definition MqttRequestResponseClient.h:163
Aws::Crt::ByteCursor GetPayload() const
Definition MqttRequestResponseClient.h:217
IncomingPublishEvent & WithMessageExpiryIntervalSeconds(uint32_t messageExpiryIntervalSeconds)
Definition MqttRequestResponseClient.h:199
const Aws::Crt::Optional< Aws::Crt::ByteCursor > & GetContentType() const
Definition MqttRequestResponseClient.h:224
IncomingPublishEvent & WithTopic(Aws::Crt::ByteCursor topic)
Definition MqttRequestResponseClient.h:151
Aws::Crt::ByteCursor GetTopic() const
Definition MqttRequestResponseClient.h:210
Definition MqttRequestResponseClient.h:499
RequestResponseClientOptions & WithMaxRequestResponseSubscriptions(uint32_t maxRequestResponseSubscriptions)
Definition MqttRequestResponseClient.h:511
uint32_t GetOperationTimeoutInSeconds() const
Definition MqttRequestResponseClient.h:568
RequestResponseClientOptions & WithOperationTimeoutInSeconds(uint32_t operationTimeoutInSeconds)
Definition MqttRequestResponseClient.h:541
RequestResponseClientOptions & WithMaxStreamingSubscriptions(uint32_t maxStreamingSubscriptions)
Definition MqttRequestResponseClient.h:527
uint32_t GetMaxStreamingSubscriptions() const
Definition MqttRequestResponseClient.h:561
uint32_t GetMaxRequestResponseSubscriptions() const
Definition MqttRequestResponseClient.h:554
Definition MqttRequestResponseClient.h:330
Result(E &&error)
Definition MqttRequestResponseClient.h:337
Result & operator=(E &&error)
Definition MqttRequestResponseClient.h:359
const R & GetResponse() const
Definition MqttRequestResponseClient.h:368
Result(const R &response)
Definition MqttRequestResponseClient.h:334
Result & operator=(const E &error)
Definition MqttRequestResponseClient.h:353
Result & operator=(const R &response)
Definition MqttRequestResponseClient.h:339
Result(const E &error)
Definition MqttRequestResponseClient.h:336
Result(R &&response)
Definition MqttRequestResponseClient.h:335
const E & GetError() const
Definition MqttRequestResponseClient.h:375
bool IsSuccess() const
Definition MqttRequestResponseClient.h:366
Result & operator=(R &&response)
Definition MqttRequestResponseClient.h:346
Definition MqttRequestResponseClient.h:405
StreamingOperationOptions & WithSubscriptionStatusEventHandler(const SubscriptionStatusEventHandler &handler)
Definition MqttRequestResponseClient.h:413
const SubscriptionStatusEventHandler & GetSubscriptionStatusEventHandler() const
Definition MqttRequestResponseClient.h:437
StreamingOperationOptions & WithStreamHandler(const std::function< void(T &&)> &handler)
Definition MqttRequestResponseClient.h:426
const std::function< void(T &&)> & GetStreamHandler() const
Definition MqttRequestResponseClient.h:447
Definition MqttRequestResponseClient.h:66
SubscriptionStatusEventType GetType() const
Definition MqttRequestResponseClient.h:96
SubscriptionStatusEvent & WithErrorCode(int errorCode)
Definition MqttRequestResponseClient.h:86
int GetErrorCode() const
Definition MqttRequestResponseClient.h:102
SubscriptionStatusEvent & WithType(SubscriptionStatusEventType type)
Definition MqttRequestResponseClient.h:74
Definition MqttRequestResponseClient.h:261
Aws::Crt::ByteCursor GetPayload() const
Definition MqttRequestResponseClient.h:301
UnmodeledResponse()
Definition MqttRequestResponseClient.h:266
UnmodeledResponse & WithTopic(Aws::Crt::ByteCursor topic)
Definition MqttRequestResponseClient.h:290
UnmodeledResponse & WithPayload(Aws::Crt::ByteCursor payload)
Definition MqttRequestResponseClient.h:278
Aws::Crt::ByteCursor GetTopic() const
Definition MqttRequestResponseClient.h:308
aws_byte_cursor ByteCursor
Definition Types.h:31
aws_allocator Allocator
Definition Allocator.h:14
AWS_CRT_CPP_API Allocator * ApiAllocator() noexcept
Definition Allocator.cpp:24
std::unique_ptr< T, std::function< void(T *)> > ScopedResource
Definition Types.h:163
SubscriptionStatusEventType
Definition MqttRequestResponseClient.h:42
@ SubscriptionEstablished
std::function< void(IncomingPublishEvent &&)> IncomingPublishEventHandler
Definition MqttRequestResponseClient.h:253
std::function< void(UnmodeledResult &&)> UnmodeledResultHandler
Definition MqttRequestResponseClient.h:397
AWS_CRT_CPP_API std::shared_ptr< IMqttRequestResponseClient > NewClientFrom311(const Aws::Crt::Mqtt::MqttConnection &protocolClient, const RequestResponseClientOptions &options, Aws::Crt::Allocator *allocator=Aws::Crt::ApiAllocator())
Definition MqttRequestResponseClient.cpp:498
AWS_CRT_CPP_API std::shared_ptr< IMqttRequestResponseClient > NewClientFrom5(const Aws::Crt::Mqtt5::Mqtt5Client &protocolClient, const RequestResponseClientOptions &options, Aws::Crt::Allocator *allocator=Aws::Crt::ApiAllocator())
Definition MqttRequestResponseClient.cpp:469
std::function< void(SubscriptionStatusEvent &&)> SubscriptionStatusEventHandler
Definition MqttRequestResponseClient.h:112
Definition Allocator.h:11
Definition StringView.h:862
Definition MqttRequestResponseClient.h:462
SubscriptionStatusEventHandler subscriptionStatusEventHandler
Definition MqttRequestResponseClient.h:472
StreamingOperationOptionsInternal()
Definition MqttRequestResponseClient.h:464
IncomingPublishEventHandler incomingPublishEventHandler
Definition MqttRequestResponseClient.h:474
Aws::Crt::ByteCursor subscriptionTopicFilter
Definition MqttRequestResponseClient.h:470
Definition MqttRequestResponseClient.h:120
UserPropertyView(Aws::Crt::ByteCursor name, Aws::Crt::ByteCursor value)
Definition MqttRequestResponseClient.h:121
Aws::Crt::ByteCursor m_value
Definition MqttRequestResponseClient.h:125
Aws::Crt::ByteCursor m_name
Definition MqttRequestResponseClient.h:124