Lesson 35 - Get Compute Auth Token Working

This commit is contained in:
Norman Lansing
2026-02-28 12:32:28 -05:00
parent 1d477ee42a
commit 4fde462bce
7743 changed files with 1397833 additions and 18 deletions

View File

@@ -0,0 +1,121 @@
#pragma once
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#include <aws/crt/Exports.h>
#include <aws/crt/StlAllocator.h>
#include <aws/crt/Types.h>
#include <aws/crt/http/HttpConnection.h>
#include <aws/crt/io/SocketOptions.h>
#include <aws/crt/io/TlsOptions.h>
#include <aws/crt/mqtt/MqttConnection.h>
#include <aws/mqtt/client.h>
#include <aws/mqtt/v5/mqtt5_client.h>
#include <atomic>
#include <functional>
#include <memory>
namespace Aws
{
namespace Crt
{
namespace Io
{
class ClientBootstrap;
}
namespace Http
{
class HttpRequest;
}
namespace Mqtt5
{
class Mqtt5ClientCore;
}
namespace Mqtt
{
/**
* An MQTT client. This is a move-only type. Unless otherwise specified,
* all function arguments need only to live through the duration of the
* function call.
*/
class AWS_CRT_CPP_API MqttClient final
{
public:
/**
* Initialize an MqttClient using bootstrap and allocator
*/
MqttClient(Io::ClientBootstrap &bootstrap, Allocator *allocator = ApiAllocator()) noexcept;
/**
* Initialize an MqttClient using a allocator and the default ClientBootstrap
*
* For more information on the default ClientBootstrap see
* Aws::Crt::ApiHandle::GetOrCreateStaticDefaultClientBootstrap
*/
MqttClient(Allocator *allocator = ApiAllocator()) noexcept;
~MqttClient();
MqttClient(const MqttClient &) = delete;
MqttClient(MqttClient &&) noexcept;
MqttClient &operator=(const MqttClient &) = delete;
MqttClient &operator=(MqttClient &&) noexcept;
/**
* @return true if the instance is in a valid state, false otherwise.
*/
operator bool() const noexcept;
/**
* @return the value of the last aws error encountered by operations on this instance.
*/
int LastError() const noexcept;
/**
* Create a new connection object using TLS from the client. The client must outlive
* all of its connection instances.
*
* @param hostName endpoint to connect to
* @param port port to connect to
* @param socketOptions socket options to use when establishing the connection
* @param tlsContext tls context to use with the connection
* @param useWebsocket should the connection use websockets or should it use direct mqtt?
*
* @return a new connection object. Connect() will still need to be called after all further
* configuration is finished.
*/
std::shared_ptr<MqttConnection> NewConnection(
const char *hostName,
uint32_t port,
const Io::SocketOptions &socketOptions,
const Crt::Io::TlsContext &tlsContext,
bool useWebsocket = false) noexcept;
/**
* Create a new connection object over plain text from the client. The client must outlive
* all of its connection instances.
* @param hostName endpoint to connect to
* @param port port to connect to
* @param socketOptions socket options to use when establishing the connection
* @param useWebsocket should the connection use websockets or should it use direct mqtt?
*
* @return a new connection object. Connect() will still need to be called after all further
* configuration is finished.
*/
std::shared_ptr<MqttConnection> NewConnection(
const char *hostName,
uint32_t port,
const Io::SocketOptions &socketOptions,
bool useWebsocket = false) noexcept;
private:
aws_mqtt_client *m_client;
};
} // namespace Mqtt
} // namespace Crt
} // namespace Aws