10#include <aws/iotdevice/secure_tunneling.h>
26 const aws_secure_tunnel_message_view &raw_options,
32 uint32_t connectionId,
40 uint32_t connectionId,
99 Crt::Allocator *m_allocator;
106 Crt::Optional<
Crt::ByteCursor> m_serviceId;
113 uint32_t m_connectionId;
118 Crt::Optional<
Crt::ByteCursor> m_payload;
123 Crt::ByteBuf m_payloadStorage;
124 Crt::ByteBuf m_serviceIdStorage;
143 enum aws_secure_tunnel_message_type type,
161 Crt::Allocator *m_allocator;
167 Crt::ByteCursor m_messageType;
172 Crt::ByteBuf m_messageTypeStorage;
191 const aws_secure_tunnel_connection_view &raw_options,
223 Crt::Allocator *m_allocator;
230 Crt::Optional<
Crt::ByteCursor> m_serviceId1;
235 Crt::Optional<
Crt::ByteCursor> m_serviceId2;
240 Crt::Optional<
Crt::ByteCursor> m_serviceId3;
245 Crt::ByteBuf m_serviceId1Storage;
246 Crt::ByteBuf m_serviceId2Storage;
247 Crt::ByteBuf m_serviceId3Storage;
266 const aws_secure_tunnel_message_view &raw_options,
291 Crt::Allocator *m_allocator;
298 Crt::Optional<
Crt::ByteCursor> m_serviceId;
305 uint32_t m_connectionId;
310 Crt::ByteBuf m_serviceIdStorage;
329 const aws_secure_tunnel_message_view &raw_options,
347 Crt::Allocator *m_allocator;
354 Crt::Optional<
Crt::ByteCursor> m_serviceId;
359 Crt::ByteBuf m_serviceIdStorage;
378 const aws_secure_tunnel_message_view &raw_options,
403 Crt::Allocator *m_allocator;
410 Crt::Optional<
Crt::ByteCursor> m_serviceId;
416 uint32_t m_connectionId;
421 Crt::ByteBuf m_serviceIdStorage;
440 const aws_secure_tunnel_message_view &raw_options,
465 Crt::Allocator *m_allocator;
472 Crt::Optional<
Crt::ByteCursor> m_serviceId;
478 uint32_t m_connectionId;
483 Crt::ByteBuf m_serviceIdStorage;
596 const std::string &accessToken,
597 aws_secure_tunneling_local_proxy_mode localProxyMode,
598 const std::string &endpointHost);
606 const std::string &accessToken,
607 aws_secure_tunneling_local_proxy_mode localProxyMode,
608 const std::string &endpointHost);
615 const std::string &accessToken,
616 aws_secure_tunneling_local_proxy_mode localProxyMode,
617 const std::string &endpointHost);
796 std::shared_ptr<SecureTunnel>
Build()
noexcept;
819 std::string m_accessToken;
824 aws_secure_tunneling_local_proxy_mode m_localProxyMode;
829 std::string m_endpointHost;
837 std::string m_clientToken;
848 std::string m_rootCa;
963 const std::string &accessToken,
964 aws_secure_tunneling_local_proxy_mode localProxyMode,
965 const std::string &endpointHost,
966 const std::string &rootCa,
980 const std::string &accessToken,
981 aws_secure_tunneling_local_proxy_mode localProxyMode,
982 const std::string &endpointHost,
983 const std::string &rootCa,
1142 Crt::Allocator *allocator,
1143 Crt::
Io::ClientBootstrap *clientBootstrap,
1144 const
Crt::
Io::SocketOptions &socketOptions,
1145 const
std::
string &accessToken,
1146 const
std::
string &clientToken,
1147 aws_secure_tunneling_local_proxy_mode localProxyMode,
1148 const
std::
string &endpointHost,
1150 Crt::
Io::TlsConnectionOptions *tslOptions,
1151 const
std::
string &rootCa,
1152 Crt::Http::HttpClientConnectionProxyOptions *httpClientConnectionProxyOptions,
1172 static
void s_OnMessageReceived(const struct aws_secure_tunnel_message_view *message,
void *user_data);
1173 static
void s_OnConnectionComplete(
1174 const struct aws_secure_tunnel_connection_view *connection,
1177 static
void s_OnConnectionFailure(
int error_code,
void *user_data);
1178 static
void s_OnConnectionShutdown(
int error_code,
void *user_data);
1179 static
void s_OnSendDataComplete(
int error_code,
void *user_data);
1180 static
void s_OnSendMessageComplete(
1181 enum aws_secure_tunnel_message_type type,
1184 static
void s_OnStreamStopped(
1185 const struct aws_secure_tunnel_message_view *message,
1188 static
void s_OnSessionReset(
void *user_data);
1189 static
void s_OnStopped(
void *user_data);
1190 static
void s_OnTerminationComplete(
void *user_data);
1191 static
void s_OnStreamStarted(
1192 const struct aws_secure_tunnel_message_view *message,
1195 static
void s_OnConnectionStarted(
1196 const struct aws_secure_tunnel_message_view *message,
1199 static
void s_OnConnectionReset(
1200 const struct aws_secure_tunnel_message_view *message,
1204 void OnTerminationComplete();
1264 aws_secure_tunnel *m_secure_tunnel;
1265 Crt::Allocator *m_allocator;
Definition HttpConnection.h:299
Definition Bootstrap.h:35
Definition SocketOptions.h:48
Definition TlsOptions.h:293
ConnectionData(const ConnectionData &)=delete
const Crt::Optional< Crt::ByteCursor > & getServiceId2() const noexcept
Definition SecureTunnel.cpp:237
const Crt::Optional< Crt::ByteCursor > & getServiceId3() const noexcept
Definition SecureTunnel.cpp:241
ConnectionData(const aws_secure_tunnel_connection_view &raw_options, Crt::Allocator *allocator=Crt::ApiAllocator()) noexcept
Definition SecureTunnel.cpp:219
const Crt::Optional< Crt::ByteCursor > & getServiceId1() const noexcept
Definition SecureTunnel.cpp:233
ConnectionData(ConnectionData &&) noexcept=delete
const uint32_t & getConnectionId() const noexcept
Definition SecureTunnel.cpp:357
ConnectionResetData(const ConnectionResetData &)=delete
ConnectionResetData(const aws_secure_tunnel_message_view &raw_options, Crt::Allocator *allocator=Crt::ApiAllocator()) noexcept
Definition SecureTunnel.cpp:341
const Crt::Optional< Crt::ByteCursor > & getServiceId() const noexcept
Definition SecureTunnel.cpp:352
ConnectionResetData(ConnectionResetData &&) noexcept=delete
ConnectionStartedData(const aws_secure_tunnel_message_view &raw_options, Crt::Allocator *allocator=Crt::ApiAllocator()) noexcept
Definition SecureTunnel.cpp:311
ConnectionStartedData(ConnectionStartedData &&) noexcept=delete
const Crt::Optional< Crt::ByteCursor > & getServiceId() const noexcept
Definition SecureTunnel.cpp:322
const uint32_t & getConnectionId() const noexcept
Definition SecureTunnel.cpp:327
ConnectionStartedData(const ConnectionStartedData &)=delete
Definition SecureTunnel.h:23
Message & WithPayload(Crt::ByteCursor payload) noexcept
Definition SecureTunnel.cpp:129
Message(const aws_secure_tunnel_message_view &raw_options, Crt::Allocator *allocator=Crt::ApiAllocator()) noexcept
Definition SecureTunnel.cpp:51
const uint32_t & getConnectionId() const noexcept
Definition SecureTunnel.cpp:177
Message(Message &&) noexcept=delete
Message & WithServiceId(Crt::ByteCursor serviceId) noexcept
Definition SecureTunnel.cpp:137
const Crt::Optional< Crt::ByteCursor > & getPayload() const noexcept
Definition SecureTunnel.cpp:167
bool initializeRawOptions(aws_secure_tunnel_message_view &raw_options) noexcept
Definition SecureTunnel.cpp:151
Message & WithConnectionId(uint32_t connectionId) noexcept
Definition SecureTunnel.cpp:145
const Crt::Optional< Crt::ByteCursor > & getServiceId() const noexcept
Definition SecureTunnel.cpp:172
Message(const Message &)=delete
SecureTunnelBuilder & WithClientToken(const std::string &clientToken)
Definition SecureTunnel.cpp:491
SecureTunnelBuilder & WithOnConnectionReset(OnConnectionReset onConnectionReset)
Definition SecureTunnel.cpp:473
SecureTunnelBuilder & WithOnSessionReset(OnSessionReset onSessionReset)
Definition SecureTunnel.cpp:479
SecureTunnelBuilder & WithOnStopped(OnStopped onStopped)
Definition SecureTunnel.cpp:485
SecureTunnelBuilder & WithOnConnectionSuccess(OnConnectionSuccess onConnectionSuccess)
Definition SecureTunnel.cpp:425
SecureTunnelBuilder & WithHttpClientConnectionProxyOptions(const Crt::Http::HttpClientConnectionProxyOptions &httpClientConnectionProxyOptions)
Definition SecureTunnel.cpp:418
SecureTunnelBuilder & WithOnStreamStopped(OnStreamStopped onStreamStopped)
Definition SecureTunnel.cpp:461
SecureTunnelBuilder & WithOnSendDataComplete(OnSendDataComplete onSendDataComplete)
Definition SecureTunnel.cpp:522
SecureTunnelBuilder & WithOnMessageReceived(OnMessageReceived onMessageReceived)
Definition SecureTunnel.cpp:449
SecureTunnelBuilder & WithOnConnectionShutdown(OnConnectionShutdown onConnectionShutdown)
Definition SecureTunnel.cpp:437
SecureTunnelBuilder & WithOnConnectionStarted(OnConnectionStarted onConnectionStarted)
Definition SecureTunnel.cpp:467
friend class SecureTunnel
Definition SecureTunnel.h:952
SecureTunnelBuilder(Crt::Allocator *allocator, Crt::Io::ClientBootstrap &clientBootstrap, const Crt::Io::SocketOptions &socketOptions, const std::string &accessToken, aws_secure_tunneling_local_proxy_mode localProxyMode, const std::string &endpointHost)
Definition SecureTunnel.cpp:370
SecureTunnelBuilder & WithOnConnectionComplete(OnConnectionComplete onConnectionComplete)
Definition SecureTunnel.cpp:498
SecureTunnelBuilder & WithRootCa(const std::string &rootCa)
Definition SecureTunnel.cpp:412
SecureTunnelBuilder & WithOnDataReceive(OnDataReceive onDataReceive)
Definition SecureTunnel.cpp:516
SecureTunnelBuilder & WithOnSendMessageComplete(OnSendMessageComplete onSendMessageComplete)
Definition SecureTunnel.cpp:443
std::shared_ptr< SecureTunnel > Build() noexcept
Definition SecureTunnel.cpp:528
SecureTunnelBuilder & WithTlsConnectionOptions(const Crt::Io::TlsConnectionOptions &tslOptions)
Definition SecureTunnel.cpp:405
SecureTunnelBuilder & WithOnStreamReset(OnStreamReset onStreamReset)
Definition SecureTunnel.cpp:510
SecureTunnelBuilder & WithOnConnectionFailure(OnConnectionFailure onConnectionFailure)
Definition SecureTunnel.cpp:431
SecureTunnelBuilder & WithOnStreamStarted(OnStreamStarted onStreamStarted)
Definition SecureTunnel.cpp:455
SecureTunnelBuilder & WithOnStreamStart(OnStreamStart onStreamStart)
Definition SecureTunnel.cpp:504
Definition SecureTunnel.h:956
bool IsValid()
Definition SecureTunnel.cpp:843
friend class SecureTunnelBuilder
Definition SecureTunnel.h:1290
int Close()
Definition SecureTunnel.cpp:869
SecureTunnel & operator=(const SecureTunnel &)=delete
SecureTunnel(const SecureTunnel &)=delete
int Stop()
Definition SecureTunnel.cpp:857
int SendStreamStart()
Definition SecureTunnel.cpp:894
int Start()
Definition SecureTunnel.cpp:848
int SendStreamReset()
Definition SecureTunnel.cpp:954
int SendData(const Crt::ByteCursor &data)
Definition SecureTunnel.cpp:875
int Connect()
Definition SecureTunnel.cpp:863
int SendConnectionStart(uint32_t connectionId)
Definition SecureTunnel.cpp:929
SecureTunnel(Crt::Allocator *allocator, Crt::Io::ClientBootstrap *clientBootstrap, const Crt::Io::SocketOptions &socketOptions, const std::string &accessToken, aws_secure_tunneling_local_proxy_mode localProxyMode, const std::string &endpointHost, const std::string &rootCa, OnConnectionComplete onConnectionComplete, OnConnectionShutdown onConnectionShutdown, OnSendDataComplete onSendDataComplete, OnDataReceive onDataReceive, OnStreamStart onStreamStart, OnStreamReset onStreamReset, OnSessionReset onSessionReset)
Definition SecureTunnel.cpp:675
int SendMessage(std::shared_ptr< Message > messageOptions) noexcept
Definition SecureTunnel.cpp:882
aws_secure_tunnel * GetUnderlyingHandle()
Definition SecureTunnel.cpp:959
void Shutdown()
Definition SecureTunnel.cpp:1184
const Crt::ByteCursor & getMessageType() const noexcept
Definition SecureTunnel.cpp:205
SendMessageCompleteData(const SendMessageCompleteData &)=delete
SendMessageCompleteData(SendMessageCompleteData &&) noexcept=delete
SendMessageCompleteData(enum aws_secure_tunnel_message_type type, Crt::Allocator *allocator=Crt::ApiAllocator()) noexcept
Definition SecureTunnel.cpp:192
const Crt::Optional< Crt::ByteCursor > & getServiceId() const noexcept
Definition SecureTunnel.cpp:268
const uint32_t & getConnectionId() const noexcept
Definition SecureTunnel.cpp:273
StreamStartedData(StreamStartedData &&) noexcept=delete
StreamStartedData(const aws_secure_tunnel_message_view &raw_options, Crt::Allocator *allocator=Crt::ApiAllocator()) noexcept
Definition SecureTunnel.cpp:257
StreamStartedData(const StreamStartedData &)=delete
const Crt::Optional< Crt::ByteCursor > & getServiceId() const noexcept
Definition SecureTunnel.cpp:297
StreamStoppedData(const StreamStoppedData &)=delete
StreamStoppedData(StreamStoppedData &&) noexcept=delete
StreamStoppedData(const aws_secure_tunnel_message_view &raw_options, Crt::Allocator *allocator=Crt::ApiAllocator()) noexcept
Definition SecureTunnel.cpp:287
Definition Allocator.h:13
aws_byte_cursor ByteCursor
Definition Types.h:31
AWS_CRT_CPP_API Allocator * ApiAllocator() noexcept
Definition Allocator.cpp:24
aws_allocator Allocator
Definition Allocator.h:14
aws_byte_buf ByteBuf
Definition Types.h:30
Definition Mqtt5Client.h:19
Definition IotSecureTunnelingClient.h:27
std::function< void(void)> OnSessionReset
Definition SecureTunnel.h:555
std::function< void(int errorCode)> OnSendDataComplete
Definition SecureTunnel.h:581
std::function< void(SecureTunnel *secureTunnel, int errorCode, const ConnectionStartedEventData &)> OnConnectionStarted
Definition SecureTunnel.h:543
std::function< void(const Crt::ByteBuf &data)> OnDataReceive
Definition SecureTunnel.h:569
std::function< void(SecureTunnel *secureTunnel)> OnStopped
Definition SecureTunnel.h:560
std::function< void(void)> OnConnectionComplete
Definition SecureTunnel.h:565
std::function< void(SecureTunnel *secureTunnel, const ConnectionSuccessEventData &)> OnConnectionSuccess
Definition SecureTunnel.h:503
std::function< void(SecureTunnel *secureTunnel, const StreamStoppedEventData &)> OnStreamStopped
Definition SecureTunnel.h:537
std::function< void(SecureTunnel *secureTunnel, int errorCode)> OnConnectionFailure
Definition SecureTunnel.h:509
std::function< void(void)> OnConnectionShutdown
Definition SecureTunnel.h:514
std::function< void(SecureTunnel *secureTunnel, int errorCode, const StreamStartedEventData &)> OnStreamStarted
Definition SecureTunnel.h:531
std::function< void(void)> OnStreamReset
Definition SecureTunnel.h:577
std::function< void(SecureTunnel *secureTunnel, int errorCode, const SendMessageCompleteEventData &)> OnSendMessageComplete
Definition SecureTunnel.h:519
std::function< void()> OnStreamStart
Definition SecureTunnel.h:573
std::function< void(SecureTunnel *secureTunnel, const MessageReceivedEventData &)> OnMessageReceived
Definition SecureTunnel.h:525
std::function< void(SecureTunnel *secureTunnel, int errorCode, const ConnectionResetEventData &)> OnConnectionReset
Definition SecureTunnel.h:549
Definition Allocator.h:11
Definition StringView.h:862
#define AWS_IOTSECURETUNNELING_API
Definition Exports.h:30
Definition SecureTunnel.h:490
ConnectionResetEventData()
Definition SecureTunnel.h:491
std::shared_ptr< ConnectionResetData > connectionResetData
Definition SecureTunnel.h:492
Definition SecureTunnel.h:428
ConnectionStartedEventData()
Definition SecureTunnel.h:429
std::shared_ptr< ConnectionStartedData > connectionStartedData
Definition SecureTunnel.h:430
Definition SecureTunnel.h:254
std::shared_ptr< ConnectionData > connectionData
Definition SecureTunnel.h:256
ConnectionSuccessEventData()
Definition SecureTunnel.h:255
Definition SecureTunnel.h:131
std::shared_ptr< Message > message
Definition SecureTunnel.h:133
MessageReceivedEventData()
Definition SecureTunnel.h:132
Definition SecureTunnel.h:179
std::shared_ptr< SendMessageCompleteData > sendMessageCompleteData
Definition SecureTunnel.h:181
SendMessageCompleteEventData()
Definition SecureTunnel.h:180
Definition SecureTunnel.h:317
StreamStartedEventData()
Definition SecureTunnel.h:318
std::shared_ptr< StreamStartedData > streamStartedData
Definition SecureTunnel.h:319
Definition SecureTunnel.h:366
std::shared_ptr< StreamStoppedData > streamStoppedData
Definition SecureTunnel.h:368
StreamStoppedEventData()
Definition SecureTunnel.h:367