16#include <aws/event-stream/event_stream_rpc_client.h>
63 const struct aws_event_stream_header_value_pair &header,
83 struct aws_event_stream_header_value_pair m_underlyingHandle;
257 const
Crt::Optional<
Crt::ByteBuf> &payload);
286 std::shared_ptr<ClientContinuationImpl>
NewStream()
noexcept;
291 void Close()
noexcept;
297 bool IsOpen()
const noexcept;
300 std::shared_ptr<ClientConnectionImpl> m_impl;
421 const
Crt::String &modelName) const noexcept = 0;
423 const
Crt::String &modelName) const noexcept = 0;
425 const
Crt::String &modelName) const noexcept = 0;
433 const
Crt::String &errorModelName,
434 Crt::StringView stringView,
435 Crt::Allocator *allocator) const noexcept = 0;
455 Crt::StringView stringView,
456 Crt::Allocator *allocator) const noexcept = 0;
465 Crt::StringView stringView,
466 Crt::Allocator *allocator) const noexcept = 0;
502 const
Crt::String &errorModelName,
503 Crt::StringView stringView,
504 Crt::Allocator *allocator) const noexcept
506 return m_serviceModel.AllocateOperationErrorFromPayload(errorModelName, stringView, allocator);
521 std::shared_ptr<StreamResponseHandler> streamHandler,
522 const std::shared_ptr<OperationModelContext> &operationModelContext,
582 Aws::
Crt::Allocator *m_allocator;
Definition Bootstrap.h:35
Definition SocketOptions.h:48
Definition TlsOptions.h:311
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:379
~EventstreamResultVariantType()=default
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
OperationError() noexcept=default
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