8#include <aws/core/Core_EXPORTS.h>
10#include <aws/core/utils/logging/LogLevel.h>
11#include <aws/core/utils/logging/AWSLogging.h>
12#include <aws/core/utils/logging/LogMacros.h>
14#include <aws/core/utils/RAIICounter.h>
16#define AWS_OPERATION_CHECK_PTR(PTR, OPERATION, ERROR_TYPE, ERROR) \
20 AWS_LOGSTREAM_FATAL(#OPERATION, "Unexpected nullptr: " #PTR); \
21 return OPERATION##Outcome(Aws::Client::AWSError<ERROR_TYPE>(ERROR, #ERROR, "Unexpected nullptr: " #PTR, false)); \
25#define AWS_CHECK(LOG_TAG, CONDITION, ERROR_MESSAGE, RETURN) \
29 AWS_LOGSTREAM_ERROR(LOG_TAG, ERROR_MESSAGE); \
34#define AWS_CHECK_PTR(LOG_TAG, PTR) \
38 AWS_LOGSTREAM_FATAL(LOG_TAG, "Unexpected nullptr: " #PTR); \
43#define AWS_OPERATION_CHECK_SUCCESS(OUTCOME, OPERATION, ERROR_TYPE, ERROR, ERROR_MESSAGE) \
45 if (!OUTCOME.IsSuccess()) \
47 AWS_LOGSTREAM_ERROR(#OPERATION, ERROR_MESSAGE); \
48 return OPERATION##Outcome(Aws::Client::AWSError<ERROR_TYPE>(ERROR, #ERROR, ERROR_MESSAGE, false)); \
52#define AWS_OPERATION_CHECK_PARAMETER_PRESENT(REQUEST, FIELD, OPERATION, CLIENT_NAMESPACE) \
54 if (!REQUEST##.##FIELD##HasBeenSet()) \
56 AWS_LOGSTREAM_ERROR(#OPERATION, "Required field: "#FIELD" is not set"); \
57 return OPERATION##Outcome(Aws::Client::AWSError<CLIENT_NAMESPACE##Errors>(CLIENT_NAMESPACE##Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field ["#FIELD"]", false)); \
61#define AWS_OPERATION_GUARD(OPERATION) \
64 AWS_LOGSTREAM_ERROR(#OPERATION, "Unable to call " #OPERATION ": client is not initialized (or already terminated)"); \
65 return Aws::Client::AWSError<CoreErrors>(CoreErrors::NOT_INITIALIZED, "NOT_INITIALIZED", "Client is not initialized or already terminated", false); \
67Aws::Utils::RAIICounter raiiGuard(this->m_operationsProcessed, &this->m_shutdownSignal)
69#define AWS_ASYNC_OPERATION_GUARD(OPERATION) \
72 AWS_LOGSTREAM_ERROR(#OPERATION, "Unable to call " #OPERATION ": client is not initialized (or already terminated)"); \
73 return handler(this, request, Aws::Client::AWSError<CoreErrors>(CoreErrors::NOT_INITIALIZED, "NOT_INITIALIZED", "Client is not initialized or already terminated", false), handlerContext); \
75Aws::Utils::RAIICounter raiiGuard(this->m_operationsProcessed, &this->m_shutdownSignal)