in source/mqtt/MqttClient.cpp [351:406]
bool MqttConnection::Connect(
const char *clientId,
bool cleanSession,
uint16_t keepAliveTime,
uint32_t pingTimeoutMs,
uint32_t protocolOperationTimeoutMs) noexcept
{
aws_mqtt_connection_options options;
AWS_ZERO_STRUCT(options);
options.client_id = aws_byte_cursor_from_c_str(clientId);
options.host_name = aws_byte_cursor_from_array(
reinterpret_cast<const uint8_t *>(m_hostName.data()), m_hostName.length());
options.tls_options =
m_useTls ? const_cast<aws_tls_connection_options *>(m_tlsOptions.GetUnderlyingHandle()) : nullptr;
options.port = m_port;
options.socket_options = &m_socketOptions.GetImpl();
options.clean_session = cleanSession;
options.keep_alive_time_secs = keepAliveTime;
options.ping_timeout_ms = pingTimeoutMs;
options.protocol_operation_timeout_ms = protocolOperationTimeoutMs;
options.on_connection_complete = MqttConnection::s_onConnectionCompleted;
options.user_data = this;
if (m_useWebsocket)
{
if (WebsocketInterceptor)
{
if (aws_mqtt_client_connection_use_websockets(
m_underlyingConnection, MqttConnection::s_onWebsocketHandshake, this, nullptr, nullptr))
{
return false;
}
}
else
{
if (aws_mqtt_client_connection_use_websockets(
m_underlyingConnection, nullptr, nullptr, nullptr, nullptr))
{
return false;
}
}
}
if (m_proxyOptions)
{
struct aws_http_proxy_options proxyOptions;
m_proxyOptions->InitializeRawProxyOptions(proxyOptions);
if (aws_mqtt_client_connection_set_http_proxy_options(m_underlyingConnection, &proxyOptions))
{
return false;
}
}
return aws_mqtt_client_connection_connect(m_underlyingConnection, &options) == AWS_OP_SUCCESS;
}