diff --git a/.github/workflows/time-blocker.yml b/.github/workflows/time-blocker.yml
deleted file mode 100644
index 337795520b8..00000000000
--- a/.github/workflows/time-blocker.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-name: Block Merge During Daily Release
-on:
- pull_request:
- branches: [ main ]
- merge_group:
- branches: [ main ]
-jobs:
- block:
- runs-on: ubuntu-latest
- steps:
- - uses: yykamei/block-merge-based-on-time@v2.1.37
- with:
- timezone: "UTC"
- after: 18:00
- before: 20:00
- base-branches: "main"
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e7ae9fa86c9..610bed7e403 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -67,6 +67,7 @@ if (LEGACY_BUILD)
option(USE_TLS_V1_2 "Set http client to enforce TLS 1.2" ON)
option(USE_TLS_V1_3 "Set http client to enforce TLS 1.3" OFF)
option(ENABLE_SMOKE_TESTS "Enable smoke tests" OFF)
+ option(ENABLE_PROTOCOL_TESTS "Enable protocol tests" OFF)
option(DISABLE_DNS_REQUIRED_TESTS "Disable unit tests that require DNS lookup to succeed, useful when using a http client that does not perform DNS lookup" OFF)
@@ -267,7 +268,6 @@ if (LEGACY_BUILD)
set_msvc_warnings()
include(sdks)
-
include(utilities)
if (ENABLE_OPENSSL_ENCRYPTION)
@@ -338,6 +338,7 @@ if (LEGACY_BUILD)
add_definitions("-DAWS_TEST_REGION=${AWS_TEST_REGION}")
add_sdks()
+ include(tests)
# for user friendly cmake usage
include(setup_cmake_find_module)
diff --git a/VERSION b/VERSION
index 03b7e37e5ad..d3fe88ad81b 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.11.491
\ No newline at end of file
+1.11.496
\ No newline at end of file
diff --git a/cmake/tests.cmake b/cmake/tests.cmake
new file mode 100644
index 00000000000..d66f5f6316a
--- /dev/null
+++ b/cmake/tests.cmake
@@ -0,0 +1,35 @@
+# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+# SPDX-License-Identifier: Apache-2.0.
+#
+
+function(add_protocol_tests)
+ set(PROTOCOL_TESTS_LOG "")
+ # Add test clients, which are just like a regular SDK client, but must not be installed.
+ file(GLOB subdirs LIST_DIRECTORIES true "${CMAKE_SOURCE_DIR}/generated/protocol-tests/test-clients/*")
+ foreach(subdir ${subdirs})
+ if(EXISTS "${subdir}/CMakeLists.txt")
+ add_subdirectory(${subdir} EXCLUDE_FROM_ALL)
+ endif()
+ endforeach()
+
+ # Add tests
+ file(GLOB protoTestTypes LIST_DIRECTORIES true "${CMAKE_SOURCE_DIR}/generated/protocol-tests/tests/*")
+ foreach(protoTestType ${protoTestTypes})
+ file(GLOB subdirs LIST_DIRECTORIES true ${protoTestType}/*)
+ foreach(subdir ${subdirs})
+ if(EXISTS "${subdir}/CMakeLists.txt")
+ add_subdirectory(${subdir})
+
+ get_filename_component(testGroup ${protoTestType} NAME)
+ get_filename_component(testName ${subdir} NAME)
+ list(APPEND PROTOCOL_TESTS_LOG "${testGroup}/${testName}")
+ endif()
+ endforeach()
+ endforeach()
+
+ message(STATUS "Protocol tests: ${PROTOCOL_TESTS_LOG}")
+endfunction()
+
+if (ENABLE_PROTOCOL_TESTS)
+ add_protocol_tests()
+endif ()
\ No newline at end of file
diff --git a/docs/MD5ChecksumFallback.md b/docs/MD5ChecksumFallback.md
new file mode 100644
index 00000000000..c732c7c8598
--- /dev/null
+++ b/docs/MD5ChecksumFallback.md
@@ -0,0 +1,198 @@
+# MD5 Checksum Fallback for the AWS C++ SDK
+
+Recently the SDKs shipped a feature in the SDK that [changed default object integrity](https://github.com/aws/aws-sdk-cpp/discussions/3252) in S3. What this more or less boils down to is that [S3 supports several different wire checksums](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html) and we now default to use `CRC64-NVME` to ensure object integrity. Previously we used `MD5 `checksums to ensure object integrity. Some 3rd party S3 compatible services currently do not support this and need time to catch up, or alternatively will not support this. If you wish to fallback to the old behavior of sending MD5 checksums there are three different scenarios that will have have to cover
+
+## An API that has checksum when supported and you wish to send no checksum at all with the request
+
+Some APIs like [Put Object](https://github.com/aws/aws-sdk-cpp/blob/main/tools/code-generation/api-descriptions/s3-2006-03-01.normal.json#L1286) are marked as `"requestChecksumRequired":false` which means that a checksum is not required for this endpoint but the SDK will send a CRC64-NVME checksum by default as it is supported. On operations like this you can completely disable checksums.
+
+```c++
+#include
+#include
+#include
+
+using namespace Aws;
+using namespace Aws::S3;
+using namespace Aws::S3::Model;
+
+namespace {
+ constexpr const char* LOG_TAG = "TestApplication";
+ constexpr const char* BUCKET_NAME = "BUCKET_NAME";
+ constexpr const char* KEY = "OBJECT_KEY";
+}
+
+auto main() -> int {
+ SDKOptions options;
+ options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Debug;
+ InitAPI(options);
+ {
+ S3ClientConfiguration configuration;
+ configuration.checksumConfig.requestChecksumCalculation =
+ Client::RequestChecksumCalculation::WHEN_REQUIRED;
+ S3Client client{configuration};
+ auto request = PutObjectRequest().WithBucket(BUCKET_NAME).WithKey(KEY);
+ request.SetBody(body);
+ std::shared_ptr body = Aws::MakeShared(LOG_TAG,
+ "sample text stream");
+ const auto response = client.PutObject(request);
+ assert(response.IsSuccess());
+ }
+ ShutdownAPI(options);
+ return 0;
+}
+```
+
+the resulting wire log will look something like
+
+```log
+[DEBUG] 2025-01-29 16:11:11.280 CURL [0x2067ccf80] (HeaderOut) PUT /YOUR_KEY HTTP/1.1
+Host: YOUR_BUCKET.s3.us-east-1.amazonaws.com
+Accept: */*
+amz-sdk-invocation-id: invocation_uuid
+amz-sdk-request: attempt=1
+authorization: your_signature
+content-length: 18
+content-type: binary/octet-stream
+user-agent:your user agent
+x-amz-content-sha256: content_sha
+x-amz-date: data
+x-amz-security-token: security_token
+```
+
+Which will have no headers associated with checksums or any checksumming related information. This is not recommended because there is no object integrity checks, and data could be corrupted on the wire.
+
+## An API that has checksum when supported and you wish to send a MD5 but NOT a CRC64 checksum
+
+This is same scenario as the first case but instead of sending no checksum, we will be sending a content MD5 header alongside the request for object validation. This is the default behavior before the object integrity change.
+
+```c++
+#include
+#include
+#include
+#include
+
+using namespace Aws;
+using namespace Aws::Utils;
+using namespace Aws::S3;
+using namespace Aws::S3::Model;
+
+namespace {
+ constexpr const char* LOG_TAG = "TestApplication";
+ constexpr const char* BUCKET_NAME = "BUCKET_NAME";
+ constexpr const char* KEY = "OBJECT_KEY";
+ constexpr const char* CONTENT_MD5_HEADER = "content-md5";
+}
+
+auto main() -> int {
+ SDKOptions options;
+ options.loggingOptions.logLevel = Logging::LogLevel::Debug;
+ InitAPI(options);
+ {
+ S3ClientConfiguration configuration;
+ configuration.checksumConfig.requestChecksumCalculation =
+ Client::RequestChecksumCalculation::WHEN_REQUIRED;
+ S3Client client{configuration};
+ auto request = PutObjectRequest().WithBucket(BUCKET_NAME).WithKey(KEY);
+ std::shared_ptr body = Aws::MakeShared(LOG_TAG,
+ "sample text stream");
+ request.SetAdditionalCustomHeaderValue(CONTENT_MD5_HEADER,
+ HashingUtils::Base64Encode(HashingUtils::CalculateMD5(*body)));
+ request.SetBody(body);
+ const auto response = client.PutObject(request);
+ assert(response.IsSuccess());
+ }
+ ShutdownAPI(options);
+ return 0;
+}
+```
+
+this will result in a log that looks like
+
+```log
+DEBUG] 2025-01-29 16:31:01.666 CURL [0x2067ccf80] (HeaderOut) PUT /YOUR_KEY HTTP/1.1
+Host: YOUR_BUCKET.s3.us-east-1.amazonaws.com
+Accept: */*
+amz-sdk-invocation-id: invocation_uuid
+amz-sdk-request: attempt=1
+authorization: your_signature
+content-length: 18
+content-md5: rXaQ1aPgNd9/GVs6Fl3zuA==
+content-type: binary/octet-stream
+user-agent:your_user_agent
+x-amz-content-sha256: content_sha
+x-amz-date: data
+x-amz-security-token: security_token
+```
+
+Which will include a MD5 header alongside your request for object integrity. This preserves backwards compatibility.
+
+## An API that has checksum when required and you wish to send a MD5 but NOT a CRC64 checksum
+
+Some APIs require checksums on requests, like [DeleteObjects](https://github.com/aws/aws-sdk-cpp/blob/main/tools/code-generation/api-descriptions/s3-2006-03-01.normal.json#L350). These APIs require a checksum to be sent alongside the api request. By default the SDK will send CRC64-NVME by default. To revert to the old behavior of only sending the MD5 header this will require overriding the method on the parent request to opt out of this.
+
+```c++
+#include
+#include
+#include
+#include
+
+using namespace Aws;
+using namespace Aws::Utils;
+using namespace Aws::S3;
+using namespace Aws::S3::Model;
+
+namespace {
+ constexpr const char* BUCKET_NAME = "BUCKET_NAME";
+ constexpr const char* KEY = "OBJECT_KEY";
+ constexpr const char* CONTENT_MD5_HEADER = "content-md5";
+}
+
+struct ChecksumOptOutDeleteObjects : public DeleteObjectsRequest {
+ inline bool RequestChecksumRequired() const override {
+ return false;
+ };
+};
+
+auto main() -> int {
+ SDKOptions options;
+ options.loggingOptions.logLevel = Logging::LogLevel::Debug;
+ InitAPI(options);
+ {
+ S3ClientConfiguration configuration;
+ configuration.checksumConfig.requestChecksumCalculation =
+ Client::RequestChecksumCalculation::WHEN_REQUIRED;
+ S3Client client{configuration};
+ auto request = ChecksumOptOutDeleteObjects();
+ request.SetBucket(BUCKET_NAME);
+ request.SetDelete(S3::Model::Delete().WithObjects({ObjectIdentifier()
+ .WithKey(KEY)}));
+ auto payload = request.SerializePayload();
+ request.SetAdditionalCustomHeaderValue(CONTENT_MD5_HEADER,
+ HashingUtils::Base64Encode(HashingUtils::CalculateMD5(payload)));
+ const auto response = client.DeleteObjects(request);
+ assert(response.IsSuccess());
+ }
+ ShutdownAPI(options);
+ return 0;
+}
+```
+
+This will override the need for the SDK to calculate a required checksum, allowing to skip the required checksum, and you can manually add a MD5 header for the serialized payload.
+
+The log should look something like
+
+```log
+[DEBUG] 2025-01-29 18:07:08.164 CURL [0x2067ccf80] (HeaderOut) POST /?delete HTTP/1.1
+Host: YOUR_BUCKET.s3.us-east-1.amazonaws.com
+Accept: */*
+amz-sdk-invocation-id: invocation_uuid
+amz-sdk-request: attempt=1
+authorization: your_signature
+content-length: 144
+content-md5: kJL3pJJmVThrDq352SNTrw==
+content-type: application/xml
+user-agent: aws-sdk-cpp/1.11.493 ua/2.1 api/S3 os/Darwin#23.6.0 lang/c++#C++11 md/aws-crt#0.19.7 md/arch#arm64 md/Clang#15.0.0 m/Duser-agent:your user agent
+x-amz-content-sha256: content_sha
+x-amz-date: date
+x-amz-security-token: security_token
+```
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/CMakeLists.txt b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/CMakeLists.txt
new file mode 100644
index 00000000000..438df2f333f
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/CMakeLists.txt
@@ -0,0 +1,76 @@
+add_project(aws-cpp-sdk-ec2-protocol "C++ SDK for the AWS ec2-protocol service" aws-cpp-sdk-core)
+
+file(GLOB AWS_EC2-PROTOCOL_HEADERS
+ "include/aws/ec2-protocol/*.h"
+)
+
+file(GLOB AWS_EC2-PROTOCOL_MODEL_HEADERS
+ "include/aws/ec2-protocol/model/*.h"
+)
+
+file(GLOB AWS_EC2-PROTOCOL_SOURCE
+ "source/*.cpp"
+)
+
+file(GLOB AWS_EC2-PROTOCOL_MODEL_SOURCE
+ "source/model/*.cpp"
+)
+
+file(GLOB EC2-PROTOCOL_UNIFIED_HEADERS
+ ${AWS_EC2-PROTOCOL_HEADERS}
+ ${AWS_EC2-PROTOCOL_MODEL_HEADERS}
+)
+
+file(GLOB EC2-PROTOCOL_UNITY_SRC
+ ${AWS_EC2-PROTOCOL_SOURCE}
+ ${AWS_EC2-PROTOCOL_MODEL_SOURCE}
+)
+
+if(ENABLE_UNITY_BUILD)
+ enable_unity_build("EC2-PROTOCOL" EC2-PROTOCOL_UNITY_SRC)
+endif()
+
+file(GLOB EC2-PROTOCOL_SRC
+ ${EC2-PROTOCOL_UNIFIED_HEADERS}
+ ${EC2-PROTOCOL_UNITY_SRC}
+)
+
+if(WIN32)
+ #if we are compiling for visual studio, create a sane directory tree.
+ if(MSVC)
+ source_group("Header Files\\aws\\ec2-protocol" FILES ${AWS_EC2-PROTOCOL_HEADERS})
+ source_group("Header Files\\aws\\ec2-protocol\\model" FILES ${AWS_EC2-PROTOCOL_MODEL_HEADERS})
+ source_group("Source Files" FILES ${AWS_EC2-PROTOCOL_SOURCE})
+ source_group("Source Files\\model" FILES ${AWS_EC2-PROTOCOL_MODEL_SOURCE})
+ endif(MSVC)
+endif()
+
+set(EC2-PROTOCOL_INCLUDES
+ "${CMAKE_CURRENT_SOURCE_DIR}/include/"
+)
+
+add_library(${PROJECT_NAME} ${EC2-PROTOCOL_SRC})
+add_library(AWS::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
+
+set_compiler_flags(${PROJECT_NAME})
+set_compiler_warnings(${PROJECT_NAME})
+
+if(USE_WINDOWS_DLL_SEMANTICS AND BUILD_SHARED_LIBS)
+ target_compile_definitions(${PROJECT_NAME} PRIVATE "AWS_EC2PROTOCOL_EXPORTS")
+endif()
+
+target_include_directories(${PROJECT_NAME} PUBLIC
+ $
+ $)
+
+target_link_libraries(${PROJECT_NAME} PRIVATE ${PLATFORM_DEP_LIBS} ${PROJECT_LIBS})
+
+
+setup_install()
+
+install (FILES ${AWS_EC2-PROTOCOL_HEADERS} DESTINATION ${INCLUDE_DIRECTORY}/aws/ec2-protocol)
+install (FILES ${AWS_EC2-PROTOCOL_MODEL_HEADERS} DESTINATION ${INCLUDE_DIRECTORY}/aws/ec2-protocol/model)
+
+do_packaging()
+
+
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolClient.h b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolClient.h
new file mode 100644
index 00000000000..5efc946a51b
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolClient.h
@@ -0,0 +1,720 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace Aws
+{
+namespace EC2Protocol
+{
+ /**
+ * An EC2 query service that sends query requests and XML responses.
+ */
+ class AWS_EC2PROTOCOL_API EC2ProtocolClient : public Aws::Client::AWSXMLClient, public Aws::Client::ClientWithAsyncTemplateMethods
+ {
+ public:
+ typedef Aws::Client::AWSXMLClient BASECLASS;
+ static const char* GetServiceName();
+ static const char* GetAllocationTag();
+
+ typedef EC2ProtocolClientConfiguration ClientConfigurationType;
+ typedef EC2ProtocolEndpointProvider EndpointProviderType;
+
+ /**
+ * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
+ * is not specified, it will be initialized to default values.
+ */
+ EC2ProtocolClient(const Aws::EC2Protocol::EC2ProtocolClientConfiguration& clientConfiguration = Aws::EC2Protocol::EC2ProtocolClientConfiguration(),
+ std::shared_ptr endpointProvider = nullptr);
+
+ /**
+ * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
+ * is not specified, it will be initialized to default values.
+ */
+ EC2ProtocolClient(const Aws::Auth::AWSCredentials& credentials,
+ std::shared_ptr endpointProvider = nullptr,
+ const Aws::EC2Protocol::EC2ProtocolClientConfiguration& clientConfiguration = Aws::EC2Protocol::EC2ProtocolClientConfiguration());
+
+ /**
+ * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
+ * the default http client factory will be used
+ */
+ EC2ProtocolClient(const std::shared_ptr& credentialsProvider,
+ std::shared_ptr endpointProvider = nullptr,
+ const Aws::EC2Protocol::EC2ProtocolClientConfiguration& clientConfiguration = Aws::EC2Protocol::EC2ProtocolClientConfiguration());
+
+
+ /* Legacy constructors due deprecation */
+ /**
+ * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
+ * is not specified, it will be initialized to default values.
+ */
+ EC2ProtocolClient(const Aws::Client::ClientConfiguration& clientConfiguration);
+
+ /**
+ * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
+ * is not specified, it will be initialized to default values.
+ */
+ EC2ProtocolClient(const Aws::Auth::AWSCredentials& credentials,
+ const Aws::Client::ClientConfiguration& clientConfiguration);
+
+ /**
+ * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
+ * the default http client factory will be used
+ */
+ EC2ProtocolClient(const std::shared_ptr& credentialsProvider,
+ const Aws::Client::ClientConfiguration& clientConfiguration);
+
+ /* End of legacy constructors due deprecation */
+ virtual ~EC2ProtocolClient();
+
+
+ /**
+ *
+ */
+ virtual Model::DatetimeOffsetsOutcome DatetimeOffsets(const Model::DatetimeOffsetsRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for DatetimeOffsets that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::DatetimeOffsetsOutcomeCallable DatetimeOffsetsCallable(const DatetimeOffsetsRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::DatetimeOffsets, request);
+ }
+
+ /**
+ * An Async wrapper for DatetimeOffsets that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void DatetimeOffsetsAsync(const DatetimeOffsetsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const DatetimeOffsetsRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::DatetimeOffsets, request, handler, context);
+ }
+
+ /**
+ * The example tests how requests and responses are serialized when there's no
+ * request or response members.
While this should be rare, code generators
+ * must support this.
See Also:
AWS
+ * API Reference
+ */
+ virtual Model::EmptyInputAndEmptyOutputOutcome EmptyInputAndEmptyOutput(const Model::EmptyInputAndEmptyOutputRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for EmptyInputAndEmptyOutput that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::EmptyInputAndEmptyOutputOutcomeCallable EmptyInputAndEmptyOutputCallable(const EmptyInputAndEmptyOutputRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::EmptyInputAndEmptyOutput, request);
+ }
+
+ /**
+ * An Async wrapper for EmptyInputAndEmptyOutput that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void EmptyInputAndEmptyOutputAsync(const EmptyInputAndEmptyOutputResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const EmptyInputAndEmptyOutputRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::EmptyInputAndEmptyOutput, request, handler, context);
+ }
+
+ /**
+ *
+ */
+ virtual Model::EndpointOperationOutcome EndpointOperation(const Model::EndpointOperationRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for EndpointOperation that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::EndpointOperationOutcomeCallable EndpointOperationCallable(const EndpointOperationRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::EndpointOperation, request);
+ }
+
+ /**
+ * An Async wrapper for EndpointOperation that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void EndpointOperationAsync(const EndpointOperationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const EndpointOperationRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::EndpointOperation, request, handler, context);
+ }
+
+ /**
+ *
+ */
+ virtual Model::EndpointWithHostLabelOperationOutcome EndpointWithHostLabelOperation(const Model::EndpointWithHostLabelOperationRequest& request) const;
+
+ /**
+ * A Callable wrapper for EndpointWithHostLabelOperation that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::EndpointWithHostLabelOperationOutcomeCallable EndpointWithHostLabelOperationCallable(const EndpointWithHostLabelOperationRequestT& request) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::EndpointWithHostLabelOperation, request);
+ }
+
+ /**
+ * An Async wrapper for EndpointWithHostLabelOperation that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void EndpointWithHostLabelOperationAsync(const EndpointWithHostLabelOperationRequestT& request, const EndpointWithHostLabelOperationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::EndpointWithHostLabelOperation, request, handler, context);
+ }
+
+ /**
+ *
+ */
+ virtual Model::FractionalSecondsOutcome FractionalSeconds(const Model::FractionalSecondsRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for FractionalSeconds that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::FractionalSecondsOutcomeCallable FractionalSecondsCallable(const FractionalSecondsRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::FractionalSeconds, request);
+ }
+
+ /**
+ * An Async wrapper for FractionalSeconds that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void FractionalSecondsAsync(const FractionalSecondsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const FractionalSecondsRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::FractionalSeconds, request, handler, context);
+ }
+
+ /**
+ * This operation has three possible return values:
- A successful
+ * response in the form of GreetingWithErrorsOutput
- An InvalidGreeting
+ * error.
- A BadRequest error.
See Also:
AWS
+ * API Reference
+ */
+ virtual Model::GreetingWithErrorsOutcome GreetingWithErrors(const Model::GreetingWithErrorsRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for GreetingWithErrors that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::GreetingWithErrorsOutcomeCallable GreetingWithErrorsCallable(const GreetingWithErrorsRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::GreetingWithErrors, request);
+ }
+
+ /**
+ * An Async wrapper for GreetingWithErrors that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void GreetingWithErrorsAsync(const GreetingWithErrorsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const GreetingWithErrorsRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::GreetingWithErrors, request, handler, context);
+ }
+
+ /**
+ *
+ */
+ virtual Model::HostWithPathOperationOutcome HostWithPathOperation(const Model::HostWithPathOperationRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for HostWithPathOperation that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::HostWithPathOperationOutcomeCallable HostWithPathOperationCallable(const HostWithPathOperationRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::HostWithPathOperation, request);
+ }
+
+ /**
+ * An Async wrapper for HostWithPathOperation that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void HostWithPathOperationAsync(const HostWithPathOperationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const HostWithPathOperationRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::HostWithPathOperation, request, handler, context);
+ }
+
+ /**
+ * The xmlName trait on the output structure is ignored in AWS Query.
The
+ * wrapping element is always operation name + "Response".
See
+ * Also:
AWS
+ * API Reference
+ */
+ virtual Model::IgnoresWrappingXmlNameOutcome IgnoresWrappingXmlName(const Model::IgnoresWrappingXmlNameRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for IgnoresWrappingXmlName that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::IgnoresWrappingXmlNameOutcomeCallable IgnoresWrappingXmlNameCallable(const IgnoresWrappingXmlNameRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::IgnoresWrappingXmlName, request);
+ }
+
+ /**
+ * An Async wrapper for IgnoresWrappingXmlName that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void IgnoresWrappingXmlNameAsync(const IgnoresWrappingXmlNameResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const IgnoresWrappingXmlNameRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::IgnoresWrappingXmlName, request, handler, context);
+ }
+
+ /**
+ * This test serializes nested and recursive structure members.
See
+ * Also:
AWS
+ * API Reference
+ */
+ virtual Model::NestedStructuresOutcome NestedStructures(const Model::NestedStructuresRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for NestedStructures that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::NestedStructuresOutcomeCallable NestedStructuresCallable(const NestedStructuresRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::NestedStructures, request);
+ }
+
+ /**
+ * An Async wrapper for NestedStructures that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void NestedStructuresAsync(const NestedStructuresResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const NestedStructuresRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::NestedStructures, request, handler, context);
+ }
+
+ /**
+ * The example tests how requests and responses are serialized when there's no
+ * request payload or response members.
While this should be rare, code
+ * generators must support this.
See Also:
AWS
+ * API Reference
+ */
+ virtual Model::NoInputAndOutputOutcome NoInputAndOutput(const Model::NoInputAndOutputRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for NoInputAndOutput that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::NoInputAndOutputOutcomeCallable NoInputAndOutputCallable(const NoInputAndOutputRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::NoInputAndOutput, request);
+ }
+
+ /**
+ * An Async wrapper for NoInputAndOutput that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void NoInputAndOutputAsync(const NoInputAndOutputResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const NoInputAndOutputRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::NoInputAndOutput, request, handler, context);
+ }
+
+ /**
+ *
+ */
+ virtual Model::PutWithContentEncodingOutcome PutWithContentEncoding(const Model::PutWithContentEncodingRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for PutWithContentEncoding that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::PutWithContentEncodingOutcomeCallable PutWithContentEncodingCallable(const PutWithContentEncodingRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::PutWithContentEncoding, request);
+ }
+
+ /**
+ * An Async wrapper for PutWithContentEncoding that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void PutWithContentEncodingAsync(const PutWithContentEncodingResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const PutWithContentEncodingRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::PutWithContentEncoding, request, handler, context);
+ }
+
+ /**
+ * Automatically adds idempotency tokens.
See Also:
AWS
+ * API Reference
+ */
+ virtual Model::QueryIdempotencyTokenAutoFillOutcome QueryIdempotencyTokenAutoFill(const Model::QueryIdempotencyTokenAutoFillRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for QueryIdempotencyTokenAutoFill that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::QueryIdempotencyTokenAutoFillOutcomeCallable QueryIdempotencyTokenAutoFillCallable(const QueryIdempotencyTokenAutoFillRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::QueryIdempotencyTokenAutoFill, request);
+ }
+
+ /**
+ * An Async wrapper for QueryIdempotencyTokenAutoFill that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void QueryIdempotencyTokenAutoFillAsync(const QueryIdempotencyTokenAutoFillResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const QueryIdempotencyTokenAutoFillRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::QueryIdempotencyTokenAutoFill, request, handler, context);
+ }
+
+ /**
+ * This test serializes simple and complex lists.
See Also:
AWS
+ * API Reference
+ */
+ virtual Model::QueryListsOutcome QueryLists(const Model::QueryListsRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for QueryLists that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::QueryListsOutcomeCallable QueryListsCallable(const QueryListsRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::QueryLists, request);
+ }
+
+ /**
+ * An Async wrapper for QueryLists that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void QueryListsAsync(const QueryListsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const QueryListsRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::QueryLists, request, handler, context);
+ }
+
+ /**
+ * This test serializes timestamps.
- Timestamps are serialized as
+ * RFC 3339 date-time values by default.
- A timestampFormat trait on a
+ * member changes the format.
- A timestampFormat trait on the shape
+ * targeted by the member changes the format.
See Also:
AWS
+ * API Reference
+ */
+ virtual Model::QueryTimestampsOutcome QueryTimestamps(const Model::QueryTimestampsRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for QueryTimestamps that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::QueryTimestampsOutcomeCallable QueryTimestampsCallable(const QueryTimestampsRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::QueryTimestamps, request);
+ }
+
+ /**
+ * An Async wrapper for QueryTimestamps that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void QueryTimestampsAsync(const QueryTimestampsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const QueryTimestampsRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::QueryTimestamps, request, handler, context);
+ }
+
+ /**
+ * Recursive shapes
See Also:
AWS
+ * API Reference
+ */
+ virtual Model::RecursiveXmlShapesOutcome RecursiveXmlShapes(const Model::RecursiveXmlShapesRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for RecursiveXmlShapes that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::RecursiveXmlShapesOutcomeCallable RecursiveXmlShapesCallable(const RecursiveXmlShapesRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::RecursiveXmlShapes, request);
+ }
+
+ /**
+ * An Async wrapper for RecursiveXmlShapes that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void RecursiveXmlShapesAsync(const RecursiveXmlShapesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const RecursiveXmlShapesRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::RecursiveXmlShapes, request, handler, context);
+ }
+
+ /**
+ * This test serializes strings, numbers, and boolean values.
See
+ * Also:
AWS
+ * API Reference
+ */
+ virtual Model::SimpleInputParamsOutcome SimpleInputParams(const Model::SimpleInputParamsRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for SimpleInputParams that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::SimpleInputParamsOutcomeCallable SimpleInputParamsCallable(const SimpleInputParamsRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::SimpleInputParams, request);
+ }
+
+ /**
+ * An Async wrapper for SimpleInputParams that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void SimpleInputParamsAsync(const SimpleInputParamsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const SimpleInputParamsRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::SimpleInputParams, request, handler, context);
+ }
+
+ /**
+ *
+ */
+ virtual Model::SimpleScalarXmlPropertiesOutcome SimpleScalarXmlProperties(const Model::SimpleScalarXmlPropertiesRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for SimpleScalarXmlProperties that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::SimpleScalarXmlPropertiesOutcomeCallable SimpleScalarXmlPropertiesCallable(const SimpleScalarXmlPropertiesRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::SimpleScalarXmlProperties, request);
+ }
+
+ /**
+ * An Async wrapper for SimpleScalarXmlProperties that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void SimpleScalarXmlPropertiesAsync(const SimpleScalarXmlPropertiesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const SimpleScalarXmlPropertiesRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::SimpleScalarXmlProperties, request, handler, context);
+ }
+
+ /**
+ * Blobs are base64 encoded
See Also:
AWS
+ * API Reference
+ */
+ virtual Model::XmlBlobsOutcome XmlBlobs(const Model::XmlBlobsRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for XmlBlobs that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::XmlBlobsOutcomeCallable XmlBlobsCallable(const XmlBlobsRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::XmlBlobs, request);
+ }
+
+ /**
+ * An Async wrapper for XmlBlobs that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void XmlBlobsAsync(const XmlBlobsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const XmlBlobsRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::XmlBlobs, request, handler, context);
+ }
+
+ /**
+ *
+ */
+ virtual Model::XmlEmptyBlobsOutcome XmlEmptyBlobs(const Model::XmlEmptyBlobsRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for XmlEmptyBlobs that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::XmlEmptyBlobsOutcomeCallable XmlEmptyBlobsCallable(const XmlEmptyBlobsRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::XmlEmptyBlobs, request);
+ }
+
+ /**
+ * An Async wrapper for XmlEmptyBlobs that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void XmlEmptyBlobsAsync(const XmlEmptyBlobsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const XmlEmptyBlobsRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::XmlEmptyBlobs, request, handler, context);
+ }
+
+ /**
+ *
+ */
+ virtual Model::XmlEmptyListsOutcome XmlEmptyLists(const Model::XmlEmptyListsRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for XmlEmptyLists that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::XmlEmptyListsOutcomeCallable XmlEmptyListsCallable(const XmlEmptyListsRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::XmlEmptyLists, request);
+ }
+
+ /**
+ * An Async wrapper for XmlEmptyLists that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void XmlEmptyListsAsync(const XmlEmptyListsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const XmlEmptyListsRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::XmlEmptyLists, request, handler, context);
+ }
+
+ /**
+ * This example serializes enums as top level properties, in lists, sets, and
+ * maps.
See Also:
AWS
+ * API Reference
+ */
+ virtual Model::XmlEnumsOutcome XmlEnums(const Model::XmlEnumsRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for XmlEnums that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::XmlEnumsOutcomeCallable XmlEnumsCallable(const XmlEnumsRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::XmlEnums, request);
+ }
+
+ /**
+ * An Async wrapper for XmlEnums that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void XmlEnumsAsync(const XmlEnumsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const XmlEnumsRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::XmlEnums, request, handler, context);
+ }
+
+ /**
+ * This example serializes intEnums as top level properties, in lists, sets, and
+ * maps.
See Also:
AWS
+ * API Reference
+ */
+ virtual Model::XmlIntEnumsOutcome XmlIntEnums(const Model::XmlIntEnumsRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for XmlIntEnums that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::XmlIntEnumsOutcomeCallable XmlIntEnumsCallable(const XmlIntEnumsRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::XmlIntEnums, request);
+ }
+
+ /**
+ * An Async wrapper for XmlIntEnums that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void XmlIntEnumsAsync(const XmlIntEnumsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const XmlIntEnumsRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::XmlIntEnums, request, handler, context);
+ }
+
+ /**
+ * This test case serializes XML lists for the following cases for both input
+ * and output:
- Normal XML lists.
- Normal XML sets.
+ * - XML lists of lists.
- XML lists with @xmlName on its members
+ * - Flattened XML lists.
- Flattened XML lists with @xmlName.
+ * - Flattened XML lists with @xmlNamespace.
- Lists of structures.
+ *
See Also:
AWS
+ * API Reference
+ */
+ virtual Model::XmlListsOutcome XmlLists(const Model::XmlListsRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for XmlLists that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::XmlListsOutcomeCallable XmlListsCallable(const XmlListsRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::XmlLists, request);
+ }
+
+ /**
+ * An Async wrapper for XmlLists that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void XmlListsAsync(const XmlListsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const XmlListsRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::XmlLists, request, handler, context);
+ }
+
+ /**
+ *
+ */
+ virtual Model::XmlNamespacesOutcome XmlNamespaces(const Model::XmlNamespacesRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for XmlNamespaces that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::XmlNamespacesOutcomeCallable XmlNamespacesCallable(const XmlNamespacesRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::XmlNamespaces, request);
+ }
+
+ /**
+ * An Async wrapper for XmlNamespaces that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void XmlNamespacesAsync(const XmlNamespacesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const XmlNamespacesRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::XmlNamespaces, request, handler, context);
+ }
+
+ /**
+ * This tests how timestamps are serialized, including using the default format
+ * of date-time and various @timestampFormat trait values.
See Also:
+ * AWS
+ * API Reference
+ */
+ virtual Model::XmlTimestampsOutcome XmlTimestamps(const Model::XmlTimestampsRequest& request = {}) const;
+
+ /**
+ * A Callable wrapper for XmlTimestamps that returns a future to the operation so that it can be executed in parallel to other requests.
+ */
+ template
+ Model::XmlTimestampsOutcomeCallable XmlTimestampsCallable(const XmlTimestampsRequestT& request = {}) const
+ {
+ return SubmitCallable(&EC2ProtocolClient::XmlTimestamps, request);
+ }
+
+ /**
+ * An Async wrapper for XmlTimestamps that queues the request into a thread executor and triggers associated callback when operation has finished.
+ */
+ template
+ void XmlTimestampsAsync(const XmlTimestampsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr, const XmlTimestampsRequestT& request = {}) const
+ {
+ return SubmitAsync(&EC2ProtocolClient::XmlTimestamps, request, handler, context);
+ }
+
+
+ void OverrideEndpoint(const Aws::String& endpoint);
+ std::shared_ptr& accessEndpointProvider();
+ private:
+ friend class Aws::Client::ClientWithAsyncTemplateMethods;
+ void init(const EC2ProtocolClientConfiguration& clientConfiguration);
+
+ EC2ProtocolClientConfiguration m_clientConfiguration;
+ std::shared_ptr m_endpointProvider;
+ };
+
+} // namespace EC2Protocol
+} // namespace Aws
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolEndpointProvider.h b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolEndpointProvider.h
new file mode 100644
index 00000000000..e9ca7b77fa2
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolEndpointProvider.h
@@ -0,0 +1,61 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+
+namespace Aws
+{
+namespace EC2Protocol
+{
+namespace Endpoint
+{
+using EndpointParameters = Aws::Endpoint::EndpointParameters;
+using Aws::Endpoint::EndpointProviderBase;
+using Aws::Endpoint::DefaultEndpointProvider;
+
+using EC2ProtocolClientContextParameters = Aws::Endpoint::ClientContextParameters;
+
+using EC2ProtocolClientConfiguration = Aws::Client::GenericClientConfiguration;
+using EC2ProtocolBuiltInParameters = Aws::Endpoint::BuiltInParameters;
+
+/**
+ * The type for the EC2Protocol Client Endpoint Provider.
+ * Inherit from this Base class / "Interface" should you want to provide a custom endpoint provider.
+ * The SDK must use service-specific type for each service per specification.
+ */
+using EC2ProtocolEndpointProviderBase =
+ EndpointProviderBase;
+
+using EC2ProtocolDefaultEpProviderBase =
+ DefaultEndpointProvider;
+
+/**
+ * Default endpoint provider used for this service
+ */
+class AWS_EC2PROTOCOL_API EC2ProtocolEndpointProvider : public EC2ProtocolDefaultEpProviderBase
+{
+public:
+ using EC2ProtocolResolveEndpointOutcome = Aws::Endpoint::ResolveEndpointOutcome;
+
+ EC2ProtocolEndpointProvider()
+ : EC2ProtocolDefaultEpProviderBase(Aws::EC2Protocol::EC2ProtocolEndpointRules::GetRulesBlob(), Aws::EC2Protocol::EC2ProtocolEndpointRules::RulesBlobSize)
+ {}
+
+ ~EC2ProtocolEndpointProvider()
+ {
+ }
+};
+} // namespace Endpoint
+} // namespace EC2Protocol
+} // namespace Aws
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolEndpointRules.h b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolEndpointRules.h
new file mode 100644
index 00000000000..456344577aa
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolEndpointRules.h
@@ -0,0 +1,23 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include
+#include
+
+namespace Aws
+{
+namespace EC2Protocol
+{
+class EC2ProtocolEndpointRules
+{
+public:
+ static const size_t RulesBlobStrLen;
+ static const size_t RulesBlobSize;
+
+ static const char* GetRulesBlob();
+};
+} // namespace EC2Protocol
+} // namespace Aws
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolErrorMarshaller.h b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolErrorMarshaller.h
new file mode 100644
index 00000000000..621dd57107e
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolErrorMarshaller.h
@@ -0,0 +1,23 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+
+#include
+#include
+
+namespace Aws
+{
+namespace Client
+{
+
+class AWS_EC2PROTOCOL_API EC2ProtocolErrorMarshaller : public Aws::Client::XmlErrorMarshaller
+{
+public:
+ Aws::Client::AWSError FindErrorByName(const char* exceptionName) const override;
+};
+
+} // namespace Client
+} // namespace Aws
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolErrors.h b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolErrors.h
new file mode 100644
index 00000000000..30b7a4c340d
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolErrors.h
@@ -0,0 +1,246 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+
+#include
+#include
+#include
+
+namespace Aws
+{
+namespace EC2Protocol
+{
+enum class EC2ProtocolErrors
+{
+ //From Core//
+ //////////////////////////////////////////////////////////////////////////////////////////
+ INCOMPLETE_SIGNATURE = 0,
+ INTERNAL_FAILURE = 1,
+ INVALID_ACTION = 2,
+ INVALID_CLIENT_TOKEN_ID = 3,
+ INVALID_PARAMETER_COMBINATION = 4,
+ INVALID_QUERY_PARAMETER = 5,
+ INVALID_PARAMETER_VALUE = 6,
+ MISSING_ACTION = 7, // SDK should never allow
+ MISSING_AUTHENTICATION_TOKEN = 8, // SDK should never allow
+ MISSING_PARAMETER = 9, // SDK should never allow
+ OPT_IN_REQUIRED = 10,
+ REQUEST_EXPIRED = 11,
+ SERVICE_UNAVAILABLE = 12,
+ THROTTLING = 13,
+ VALIDATION = 14,
+ ACCESS_DENIED = 15,
+ RESOURCE_NOT_FOUND = 16,
+ UNRECOGNIZED_CLIENT = 17,
+ MALFORMED_QUERY_STRING = 18,
+ SLOW_DOWN = 19,
+ REQUEST_TIME_TOO_SKEWED = 20,
+ INVALID_SIGNATURE = 21,
+ SIGNATURE_DOES_NOT_MATCH = 22,
+ INVALID_ACCESS_KEY_ID = 23,
+ REQUEST_TIMEOUT = 24,
+ NETWORK_CONNECTION = 99,
+
+ UNKNOWN = 100,
+ ///////////////////////////////////////////////////////////////////////////////////////////
+
+ ACTIVE_VPC_PEERING_CONNECTION_PER_VPC_LIMIT_EXCEEDED= static_cast(Aws::Client::CoreErrors::SERVICE_EXTENSION_START_RANGE) + 1,
+ ADDRESS_LIMIT_EXCEEDED,
+ ATTACHMENT_LIMIT_EXCEEDED,
+ BUNDLING_IN_PROGRESS,
+ CANNOT_DELETE,
+ COMPLEX,
+ CONCURRENT_SNAPSHOT_LIMIT_EXCEEDED,
+ CONCURRENT_TAG_ACCESS,
+ CUSTOMER_GATEWAY_LIMIT_EXCEEDED,
+ DEPENDENCY_VIOLATION,
+ DISK_IMAGE_SIZE_TOO_LARGE,
+ DRY_RUN_OPERATION,
+ ENCRYPTED_VOLUMES_NOT_SUPPORTED,
+ FILTER_LIMIT_EXCEEDED,
+ FLOW_LOGS_LIMIT_EXCEEDED,
+ FLOW_LOG_ALREADY_EXISTS,
+ GATEWAY__NOT_ATTACHED,
+ INCORRECT_INSTANCE_STATE,
+ INCORRECT_STATE,
+ INSTANCE_ALREADY_LINKED,
+ INSTANCE_LIMIT_EXCEEDED,
+ INSUFFICIENT_FREE_ADDRESSES_IN_SUBNET,
+ INSUFFICIENT_RESERVED_INSTANCES_CAPACITY,
+ INTERNET_GATEWAY_LIMIT_EXCEEDED,
+ INVALID_ADDRESS_I_D__NOT_FOUND,
+ INVALID_ADDRESS__MALFORMED,
+ INVALID_ADDRESS__NOT_FOUND,
+ INVALID_ALLOCATION_I_D__NOT_FOUND,
+ INVALID_ASSOCIATION_I_D__NOT_FOUND,
+ INVALID_ATTACHMENT_I_D__NOT_FOUND,
+ INVALID_ATTACHMENT__NOT_FOUND,
+ INVALID_A_M_I_ATTRIBUTE_ITEM_VALUE,
+ INVALID_A_M_I_I_D__MALFORMED,
+ INVALID_A_M_I_I_D__NOT_FOUND,
+ INVALID_A_M_I_I_D__UNAVAILABLE,
+ INVALID_A_M_I_NAME__DUPLICATE,
+ INVALID_A_M_I_NAME__MALFORMED,
+ INVALID_BLOCK_DEVICE_MAPPING,
+ INVALID_BUNDLE_I_D__NOT_FOUND,
+ INVALID_CONVERSION_TASK_ID,
+ INVALID_CUSTOMER_GATEWAY_ID__MALFORMED,
+ INVALID_CUSTOMER_GATEWAY_I_D__NOT_FOUND,
+ INVALID_CUSTOMER_GATEWAY__DUPLICATE_IP_ADDRESS,
+ INVALID_DEVICE__IN_USE,
+ INVALID_DHCP_OPTIONS_ID__MALFORMED,
+ INVALID_DHCP_OPTIONS_I_D__NOT_FOUND,
+ INVALID_DHCP_OPTION_I_D__NOT_FOUND,
+ INVALID_EXPORT_TASK_I_D__NOT_FOUND,
+ INVALID_FILTER,
+ INVALID_FLOW_LOG_ID__NOT_FOUND,
+ INVALID_FORMAT,
+ INVALID_GATEWAY_I_D__NOT_FOUND,
+ INVALID_GREETING,
+ INVALID_GROUP_ID__MALFORMED,
+ INVALID_GROUP__DUPLICATE,
+ INVALID_GROUP__IN_USE,
+ INVALID_GROUP__NOT_FOUND,
+ INVALID_GROUP__RESERVED,
+ INVALID_INPUT,
+ INVALID_INSTANCE_ATTRIBUTE_VALUE,
+ INVALID_INSTANCE_I_D,
+ INVALID_INSTANCE_I_D__MALFORMED,
+ INVALID_INSTANCE_I_D__NOT_FOUND,
+ INVALID_INSTANCE_I_D__NOT_LINKABLE,
+ INVALID_INSTANCE_TYPE,
+ INVALID_INTERFACE__IP_ADDRESS_LIMIT_EXCEEDED,
+ INVALID_INTERNET_GATEWAY_I_D__NOT_FOUND,
+ INVALID_I_D,
+ INVALID_I_P_ADDRESS__IN_USE,
+ INVALID_KEY_PAIR__DUPLICATE,
+ INVALID_KEY_PAIR__FORMAT,
+ INVALID_KEY_PAIR__NOT_FOUND,
+ INVALID_KEY__FORMAT,
+ INVALID_MANIFEST,
+ INVALID_NETWORK_ACL_ENTRY__NOT_FOUND,
+ INVALID_NETWORK_ACL_I_D__NOT_FOUND,
+ INVALID_NETWORK_INTERFACE_ATTACHMENT_I_D__MALFORMED,
+ INVALID_NETWORK_INTERFACE_ID__MALFORMED,
+ INVALID_NETWORK_INTERFACE_I_D__NOT_FOUND,
+ INVALID_OPTION__CONFLICT,
+ INVALID_PERMISSION__DUPLICATE,
+ INVALID_PERMISSION__MALFORMED,
+ INVALID_PERMISSION__NOT_FOUND,
+ INVALID_PLACEMENT_GROUP__DUPLICATE,
+ INVALID_PLACEMENT_GROUP__IN_USE,
+ INVALID_PLACEMENT_GROUP__UNKNOWN,
+ INVALID_POLICY_DOCUMENT,
+ INVALID_PREFIX_LIST_ID__MALFORMED,
+ INVALID_PREFIX_LIST_ID__NOT_FOUND,
+ INVALID_REQUEST,
+ INVALID_RESERVATION_I_D__MALFORMED,
+ INVALID_RESERVATION_I_D__NOT_FOUND,
+ INVALID_RESERVED_INSTANCES_ID,
+ INVALID_RESERVED_INSTANCES_OFFERING_ID,
+ INVALID_ROUTE_TABLE_ID__MALFORMED,
+ INVALID_ROUTE_TABLE_I_D__NOT_FOUND,
+ INVALID_ROUTE__MALFORMED,
+ INVALID_ROUTE__NOT_FOUND,
+ INVALID_SECURITY_GROUP_I_D__NOT_FOUND,
+ INVALID_SECURITY__REQUEST_HAS_EXPIRED,
+ INVALID_SERVICE_NAME,
+ INVALID_SNAPSHOT_I_D__MALFORMED,
+ INVALID_SNAPSHOT__IN_USE,
+ INVALID_SNAPSHOT__NOT_FOUND,
+ INVALID_SPOT_DATAFEED__NOT_FOUND,
+ INVALID_SPOT_FLEET_REQUEST_CONFIG,
+ INVALID_SPOT_FLEET_REQUEST_ID__MALFORMED,
+ INVALID_SPOT_FLEET_REQUEST_ID__NOT_FOUND,
+ INVALID_SPOT_INSTANCE_REQUEST_I_D__MALFORMED,
+ INVALID_SPOT_INSTANCE_REQUEST_I_D__NOT_FOUND,
+ INVALID_STATE,
+ INVALID_STATE_TRANSITION,
+ INVALID_SUBNET_I_D__NOT_FOUND,
+ INVALID_SUBNET__CONFLICT,
+ INVALID_USER_I_D__MALFORMED,
+ INVALID_VOLUME_I_D__DUPLICATE,
+ INVALID_VOLUME_I_D__MALFORMED,
+ INVALID_VOLUME_I_D__ZONE_MISMATCH,
+ INVALID_VOLUME__NOT_FOUND,
+ INVALID_VOLUME__ZONE_MISMATCH,
+ INVALID_VPC_ENDPOINT_ID__MALFORMED,
+ INVALID_VPC_ENDPOINT_ID__NOT_FOUND,
+ INVALID_VPC_I_D__NOT_FOUND,
+ INVALID_VPC_PEERING_CONNECTION_ID__MALFORMED,
+ INVALID_VPC_PEERING_CONNECTION_I_D__NOT_FOUND,
+ INVALID_VPC_STATE,
+ INVALID_VPC__RANGE,
+ INVALID_VPN_CONNECTION_I_D,
+ INVALID_VPN_CONNECTION_I_D__NOT_FOUND,
+ INVALID_VPN_GATEWAY_ATTACHMENT__NOT_FOUND,
+ INVALID_VPN_GATEWAY_I_D__NOT_FOUND,
+ INVALID_ZONE__NOT_FOUND,
+ LEGACY_SECURITY_GROUP,
+ MAX_I_O_P_S_LIMIT_EXCEEDED,
+ MAX_SPOT_FLEET_REQUEST_COUNT_EXCEEDED,
+ MAX_SPOT_INSTANCE_COUNT_EXCEEDED,
+ NETWORK_ACL_ENTRY_ALREADY_EXISTS,
+ NETWORK_ACL_ENTRY_LIMIT_EXCEEDED,
+ NETWORK_ACL_LIMIT_EXCEEDED,
+ NON_E_B_S_INSTANCE,
+ NOT_EXPORTABLE,
+ OPERATION_NOT_PERMITTED,
+ OUTSTANDING_VPC_PEERING_CONNECTION_LIMIT_EXCEEDED,
+ PENDING_SNAPSHOT_LIMIT_EXCEEDED,
+ PRIVATE_IP_ADDRESS_LIMIT_EXCEEDED,
+ REQUEST_RESOURCE_COUNT_EXCEEDED,
+ RESERVED_INSTANCES_LIMIT_EXCEEDED,
+ RESOURCE_COUNT_EXCEEDED,
+ RESOURCE_LIMIT_EXCEEDED,
+ RESOURCE__ALREADY_ASSOCIATED,
+ ROUTE_ALREADY_EXISTS,
+ ROUTE_LIMIT_EXCEEDED,
+ ROUTE_TABLE_LIMIT_EXCEEDED,
+ RULES_PER_SECURITY_GROUP_LIMIT_EXCEEDED,
+ SECURITY_GROUPS_PER_INSTANCE_LIMIT_EXCEEDED,
+ SECURITY_GROUPS_PER_INTERFACE_LIMIT_EXCEEDED,
+ SECURITY_GROUP_LIMIT_EXCEEDED,
+ SNAPSHOT_LIMIT_EXCEEDED,
+ SUBNET_LIMIT_EXCEEDED,
+ TAG_LIMIT_EXCEEDED,
+ UNKNOWN_VOLUME_TYPE,
+ UNSUPPORTED,
+ UNSUPPORTED_OPERATION,
+ VOLUME_IN_USE,
+ VOLUME_LIMIT_EXCEEDED,
+ VOLUME_TYPE_NOT_AVAILABLE_IN_ZONE,
+ VPC_CIDR_CONFLICT,
+ VPC_ENDPOINT_LIMIT_EXCEEDED,
+ VPC_LIMIT_EXCEEDED,
+ VPC_PEERING_CONNECTION_ALREADY_EXISTS,
+ VPN_CONNECTION_LIMIT_EXCEEDED,
+ VPN_GATEWAY_ATTACHMENT_LIMIT_EXCEEDED,
+ VPN_GATEWAY_LIMIT_EXCEEDED,
+ V_P_C_ID_NOT_SPECIFIED,
+ V_P_C_RESOURCE_NOT_SPECIFIED
+};
+
+class AWS_EC2PROTOCOL_API EC2ProtocolError : public Aws::Client::AWSError
+{
+public:
+ EC2ProtocolError() {}
+ EC2ProtocolError(const Aws::Client::AWSError& rhs) : Aws::Client::AWSError(rhs) {}
+ EC2ProtocolError(Aws::Client::AWSError&& rhs) : Aws::Client::AWSError(rhs) {}
+ EC2ProtocolError(const Aws::Client::AWSError& rhs) : Aws::Client::AWSError(rhs) {}
+ EC2ProtocolError(Aws::Client::AWSError&& rhs) : Aws::Client::AWSError(rhs) {}
+
+ template
+ T GetModeledError();
+};
+
+namespace EC2ProtocolErrorMapper
+{
+ AWS_EC2PROTOCOL_API Aws::Client::AWSError GetErrorForName(const char* errorName);
+}
+
+} // namespace EC2Protocol
+} // namespace Aws
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolRequest.h b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolRequest.h
new file mode 100644
index 00000000000..1d45e7c23aa
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolRequest.h
@@ -0,0 +1,46 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include
+#include
+#include
+#include
+#include
+
+namespace Aws
+{
+namespace EC2Protocol
+{
+ class AWS_EC2PROTOCOL_API EC2ProtocolRequest : public Aws::AmazonSerializableWebServiceRequest
+ {
+ public:
+ using EndpointParameter = Aws::Endpoint::EndpointParameter;
+ using EndpointParameters = Aws::Endpoint::EndpointParameters;
+
+ virtual ~EC2ProtocolRequest () {}
+
+ void AddParametersToRequest(Aws::Http::HttpRequest& httpRequest) const { AWS_UNREFERENCED_PARAM(httpRequest); }
+
+ inline Aws::Http::HeaderValueCollection GetHeaders() const override
+ {
+ auto headers = GetRequestSpecificHeaders();
+
+ if(headers.size() == 0 || (headers.size() > 0 && headers.count(Aws::Http::CONTENT_TYPE_HEADER) == 0))
+ {
+ headers.emplace(Aws::Http::HeaderValuePair(Aws::Http::CONTENT_TYPE_HEADER, Aws::FORM_CONTENT_TYPE ));
+ }
+ headers.emplace(Aws::Http::HeaderValuePair(Aws::Http::API_VERSION_HEADER, "2020-01-08"));
+ return headers;
+ }
+
+ protected:
+ virtual Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const { return Aws::Http::HeaderValueCollection(); }
+
+ };
+
+
+} // namespace EC2Protocol
+} // namespace Aws
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolServiceClientModel.h b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolServiceClientModel.h
new file mode 100644
index 00000000000..50239e19992
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2ProtocolServiceClientModel.h
@@ -0,0 +1,216 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+
+/* Generic header includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+/* End of generic header includes */
+
+/* Service model headers required in EC2ProtocolClient header */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+/* End of service model headers required in EC2ProtocolClient header */
+
+namespace Aws
+{
+ namespace Http
+ {
+ class HttpClient;
+ class HttpClientFactory;
+ } // namespace Http
+
+ namespace Utils
+ {
+ template< typename R, typename E> class Outcome;
+
+ namespace Threading
+ {
+ class Executor;
+ } // namespace Threading
+ } // namespace Utils
+
+ namespace Auth
+ {
+ class AWSCredentials;
+ class AWSCredentialsProvider;
+ } // namespace Auth
+
+ namespace Client
+ {
+ class RetryStrategy;
+ } // namespace Client
+
+ namespace EC2Protocol
+ {
+ using EC2ProtocolClientConfiguration = Aws::Client::GenericClientConfiguration;
+ using EC2ProtocolEndpointProviderBase = Aws::EC2Protocol::Endpoint::EC2ProtocolEndpointProviderBase;
+ using EC2ProtocolEndpointProvider = Aws::EC2Protocol::Endpoint::EC2ProtocolEndpointProvider;
+
+ namespace Model
+ {
+ /* Service model forward declarations required in EC2ProtocolClient header */
+ class DatetimeOffsetsRequest;
+ class EmptyInputAndEmptyOutputRequest;
+ class EndpointOperationRequest;
+ class EndpointWithHostLabelOperationRequest;
+ class FractionalSecondsRequest;
+ class GreetingWithErrorsRequest;
+ class HostWithPathOperationRequest;
+ class IgnoresWrappingXmlNameRequest;
+ class NestedStructuresRequest;
+ class NoInputAndOutputRequest;
+ class PutWithContentEncodingRequest;
+ class QueryIdempotencyTokenAutoFillRequest;
+ class QueryListsRequest;
+ class QueryTimestampsRequest;
+ class RecursiveXmlShapesRequest;
+ class SimpleInputParamsRequest;
+ class SimpleScalarXmlPropertiesRequest;
+ class XmlBlobsRequest;
+ class XmlEmptyBlobsRequest;
+ class XmlEmptyListsRequest;
+ class XmlEnumsRequest;
+ class XmlIntEnumsRequest;
+ class XmlListsRequest;
+ class XmlNamespacesRequest;
+ class XmlTimestampsRequest;
+ /* End of service model forward declarations required in EC2ProtocolClient header */
+
+ /* Service model Outcome class definitions */
+ typedef Aws::Utils::Outcome DatetimeOffsetsOutcome;
+ typedef Aws::Utils::Outcome EmptyInputAndEmptyOutputOutcome;
+ typedef Aws::Utils::Outcome EndpointOperationOutcome;
+ typedef Aws::Utils::Outcome EndpointWithHostLabelOperationOutcome;
+ typedef Aws::Utils::Outcome FractionalSecondsOutcome;
+ typedef Aws::Utils::Outcome GreetingWithErrorsOutcome;
+ typedef Aws::Utils::Outcome HostWithPathOperationOutcome;
+ typedef Aws::Utils::Outcome IgnoresWrappingXmlNameOutcome;
+ typedef Aws::Utils::Outcome NestedStructuresOutcome;
+ typedef Aws::Utils::Outcome NoInputAndOutputOutcome;
+ typedef Aws::Utils::Outcome PutWithContentEncodingOutcome;
+ typedef Aws::Utils::Outcome QueryIdempotencyTokenAutoFillOutcome;
+ typedef Aws::Utils::Outcome QueryListsOutcome;
+ typedef Aws::Utils::Outcome QueryTimestampsOutcome;
+ typedef Aws::Utils::Outcome RecursiveXmlShapesOutcome;
+ typedef Aws::Utils::Outcome SimpleInputParamsOutcome;
+ typedef Aws::Utils::Outcome SimpleScalarXmlPropertiesOutcome;
+ typedef Aws::Utils::Outcome XmlBlobsOutcome;
+ typedef Aws::Utils::Outcome XmlEmptyBlobsOutcome;
+ typedef Aws::Utils::Outcome XmlEmptyListsOutcome;
+ typedef Aws::Utils::Outcome XmlEnumsOutcome;
+ typedef Aws::Utils::Outcome XmlIntEnumsOutcome;
+ typedef Aws::Utils::Outcome XmlListsOutcome;
+ typedef Aws::Utils::Outcome XmlNamespacesOutcome;
+ typedef Aws::Utils::Outcome XmlTimestampsOutcome;
+ /* End of service model Outcome class definitions */
+
+ /* Service model Outcome callable definitions */
+ typedef std::future DatetimeOffsetsOutcomeCallable;
+ typedef std::future EmptyInputAndEmptyOutputOutcomeCallable;
+ typedef std::future EndpointOperationOutcomeCallable;
+ typedef std::future EndpointWithHostLabelOperationOutcomeCallable;
+ typedef std::future FractionalSecondsOutcomeCallable;
+ typedef std::future GreetingWithErrorsOutcomeCallable;
+ typedef std::future HostWithPathOperationOutcomeCallable;
+ typedef std::future IgnoresWrappingXmlNameOutcomeCallable;
+ typedef std::future NestedStructuresOutcomeCallable;
+ typedef std::future NoInputAndOutputOutcomeCallable;
+ typedef std::future PutWithContentEncodingOutcomeCallable;
+ typedef std::future QueryIdempotencyTokenAutoFillOutcomeCallable;
+ typedef std::future QueryListsOutcomeCallable;
+ typedef std::future QueryTimestampsOutcomeCallable;
+ typedef std::future RecursiveXmlShapesOutcomeCallable;
+ typedef std::future SimpleInputParamsOutcomeCallable;
+ typedef std::future SimpleScalarXmlPropertiesOutcomeCallable;
+ typedef std::future XmlBlobsOutcomeCallable;
+ typedef std::future XmlEmptyBlobsOutcomeCallable;
+ typedef std::future XmlEmptyListsOutcomeCallable;
+ typedef std::future XmlEnumsOutcomeCallable;
+ typedef std::future XmlIntEnumsOutcomeCallable;
+ typedef std::future XmlListsOutcomeCallable;
+ typedef std::future XmlNamespacesOutcomeCallable;
+ typedef std::future XmlTimestampsOutcomeCallable;
+ /* End of service model Outcome callable definitions */
+ } // namespace Model
+
+ class EC2ProtocolClient;
+
+ /* Service model async handlers definitions */
+ typedef std::function&) > DatetimeOffsetsResponseReceivedHandler;
+ typedef std::function&) > EmptyInputAndEmptyOutputResponseReceivedHandler;
+ typedef std::function&) > EndpointOperationResponseReceivedHandler;
+ typedef std::function&) > EndpointWithHostLabelOperationResponseReceivedHandler;
+ typedef std::function&) > FractionalSecondsResponseReceivedHandler;
+ typedef std::function&) > GreetingWithErrorsResponseReceivedHandler;
+ typedef std::function&) > HostWithPathOperationResponseReceivedHandler;
+ typedef std::function&) > IgnoresWrappingXmlNameResponseReceivedHandler;
+ typedef std::function&) > NestedStructuresResponseReceivedHandler;
+ typedef std::function&) > NoInputAndOutputResponseReceivedHandler;
+ typedef std::function&) > PutWithContentEncodingResponseReceivedHandler;
+ typedef std::function&) > QueryIdempotencyTokenAutoFillResponseReceivedHandler;
+ typedef std::function&) > QueryListsResponseReceivedHandler;
+ typedef std::function&) > QueryTimestampsResponseReceivedHandler;
+ typedef std::function&) > RecursiveXmlShapesResponseReceivedHandler;
+ typedef std::function&) > SimpleInputParamsResponseReceivedHandler;
+ typedef std::function&) > SimpleScalarXmlPropertiesResponseReceivedHandler;
+ typedef std::function&) > XmlBlobsResponseReceivedHandler;
+ typedef std::function&) > XmlEmptyBlobsResponseReceivedHandler;
+ typedef std::function&) > XmlEmptyListsResponseReceivedHandler;
+ typedef std::function&) > XmlEnumsResponseReceivedHandler;
+ typedef std::function&) > XmlIntEnumsResponseReceivedHandler;
+ typedef std::function&) > XmlListsResponseReceivedHandler;
+ typedef std::function&) > XmlNamespacesResponseReceivedHandler;
+ typedef std::function&) > XmlTimestampsResponseReceivedHandler;
+ /* End of service model async handlers definitions */
+ } // namespace EC2Protocol
+} // namespace Aws
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2Protocol_EXPORTS.h b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2Protocol_EXPORTS.h
new file mode 100644
index 00000000000..92fcdf6c51f
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/EC2Protocol_EXPORTS.h
@@ -0,0 +1,32 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+
+#ifdef _MSC_VER
+ //disable windows complaining about max template size.
+ #pragma warning (disable : 4503)
+#endif // _MSC_VER
+
+#if defined (USE_WINDOWS_DLL_SEMANTICS) || defined (_WIN32)
+ #ifdef _MSC_VER
+ #pragma warning(disable : 4251)
+ #endif // _MSC_VER
+
+ #ifdef USE_IMPORT_EXPORT
+ #ifdef AWS_EC2PROTOCOL_EXPORTS
+ #define AWS_EC2PROTOCOL_API __declspec(dllexport)
+ #else
+ #define AWS_EC2PROTOCOL_API __declspec(dllimport)
+ #endif /* AWS_EC2PROTOCOL_EXPORTS */
+ #define AWS_EC2PROTOCOL_EXTERN
+ #else
+ #define AWS_EC2PROTOCOL_API
+ #define AWS_EC2PROTOCOL_EXTERN extern
+ #endif // USE_IMPORT_EXPORT
+#else // defined (USE_WINDOWS_DLL_SEMANTICS) || defined (WIN32)
+ #define AWS_EC2PROTOCOL_API
+ #define AWS_EC2PROTOCOL_EXTERN extern
+#endif // defined (USE_WINDOWS_DLL_SEMANTICS) || defined (WIN32)
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/ComplexError.h b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/ComplexError.h
new file mode 100644
index 00000000000..671f79496ef
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/ComplexError.h
@@ -0,0 +1,75 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include
+#include
+#include
+#include
+#include
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace EC2Protocol
+{
+namespace Model
+{
+
+ /**
+ * This error is thrown when a request is invalid.
See Also:
AWS
+ * API Reference
+ */
+ class ComplexError
+ {
+ public:
+ AWS_EC2PROTOCOL_API ComplexError();
+ AWS_EC2PROTOCOL_API ComplexError(const Aws::Utils::Xml::XmlNode& xmlNode);
+ AWS_EC2PROTOCOL_API ComplexError& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ AWS_EC2PROTOCOL_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
+ AWS_EC2PROTOCOL_API void OutputToStream(Aws::OStream& oStream, const char* location) const;
+
+
+ ///@{
+
+ inline const Aws::String& GetTopLevel() const{ return m_topLevel; }
+ inline bool TopLevelHasBeenSet() const { return m_topLevelHasBeenSet; }
+ inline void SetTopLevel(const Aws::String& value) { m_topLevelHasBeenSet = true; m_topLevel = value; }
+ inline void SetTopLevel(Aws::String&& value) { m_topLevelHasBeenSet = true; m_topLevel = std::move(value); }
+ inline void SetTopLevel(const char* value) { m_topLevelHasBeenSet = true; m_topLevel.assign(value); }
+ inline ComplexError& WithTopLevel(const Aws::String& value) { SetTopLevel(value); return *this;}
+ inline ComplexError& WithTopLevel(Aws::String&& value) { SetTopLevel(std::move(value)); return *this;}
+ inline ComplexError& WithTopLevel(const char* value) { SetTopLevel(value); return *this;}
+ ///@}
+
+ ///@{
+
+ inline const ComplexNestedErrorData& GetNested() const{ return m_nested; }
+ inline bool NestedHasBeenSet() const { return m_nestedHasBeenSet; }
+ inline void SetNested(const ComplexNestedErrorData& value) { m_nestedHasBeenSet = true; m_nested = value; }
+ inline void SetNested(ComplexNestedErrorData&& value) { m_nestedHasBeenSet = true; m_nested = std::move(value); }
+ inline ComplexError& WithNested(const ComplexNestedErrorData& value) { SetNested(value); return *this;}
+ inline ComplexError& WithNested(ComplexNestedErrorData&& value) { SetNested(std::move(value)); return *this;}
+ ///@}
+ private:
+
+ Aws::String m_topLevel;
+ bool m_topLevelHasBeenSet = false;
+
+ ComplexNestedErrorData m_nested;
+ bool m_nestedHasBeenSet = false;
+ };
+
+} // namespace Model
+} // namespace EC2Protocol
+} // namespace Aws
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/ComplexNestedErrorData.h b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/ComplexNestedErrorData.h
new file mode 100644
index 00000000000..d3615a0e94e
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/ComplexNestedErrorData.h
@@ -0,0 +1,56 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include
+#include
+#include
+#include
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace EC2Protocol
+{
+namespace Model
+{
+
+ class ComplexNestedErrorData
+ {
+ public:
+ AWS_EC2PROTOCOL_API ComplexNestedErrorData();
+ AWS_EC2PROTOCOL_API ComplexNestedErrorData(const Aws::Utils::Xml::XmlNode& xmlNode);
+ AWS_EC2PROTOCOL_API ComplexNestedErrorData& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ AWS_EC2PROTOCOL_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
+ AWS_EC2PROTOCOL_API void OutputToStream(Aws::OStream& oStream, const char* location) const;
+
+
+ ///@{
+
+ inline const Aws::String& GetFoo() const{ return m_foo; }
+ inline bool FooHasBeenSet() const { return m_fooHasBeenSet; }
+ inline void SetFoo(const Aws::String& value) { m_fooHasBeenSet = true; m_foo = value; }
+ inline void SetFoo(Aws::String&& value) { m_fooHasBeenSet = true; m_foo = std::move(value); }
+ inline void SetFoo(const char* value) { m_fooHasBeenSet = true; m_foo.assign(value); }
+ inline ComplexNestedErrorData& WithFoo(const Aws::String& value) { SetFoo(value); return *this;}
+ inline ComplexNestedErrorData& WithFoo(Aws::String&& value) { SetFoo(std::move(value)); return *this;}
+ inline ComplexNestedErrorData& WithFoo(const char* value) { SetFoo(value); return *this;}
+ ///@}
+ private:
+
+ Aws::String m_foo;
+ bool m_fooHasBeenSet = false;
+ };
+
+} // namespace Model
+} // namespace EC2Protocol
+} // namespace Aws
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/DatetimeOffsetsRequest.h b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/DatetimeOffsetsRequest.h
new file mode 100644
index 00000000000..94725df231a
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/DatetimeOffsetsRequest.h
@@ -0,0 +1,40 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include
+#include
+
+namespace Aws
+{
+namespace EC2Protocol
+{
+namespace Model
+{
+
+ /**
+ */
+ class DatetimeOffsetsRequest : public EC2ProtocolRequest
+ {
+ public:
+ AWS_EC2PROTOCOL_API DatetimeOffsetsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DatetimeOffsets"; }
+
+ AWS_EC2PROTOCOL_API Aws::String SerializePayload() const override;
+
+ protected:
+ AWS_EC2PROTOCOL_API void DumpBodyToUrl(Aws::Http::URI& uri ) const override;
+
+ public:
+ };
+
+} // namespace Model
+} // namespace EC2Protocol
+} // namespace Aws
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/DatetimeOffsetsResponse.h b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/DatetimeOffsetsResponse.h
new file mode 100644
index 00000000000..c228b9bfd45
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/DatetimeOffsetsResponse.h
@@ -0,0 +1,62 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include
+#include
+#include
+#include
+
+namespace Aws
+{
+template
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace EC2Protocol
+{
+namespace Model
+{
+ class DatetimeOffsetsResponse
+ {
+ public:
+ AWS_EC2PROTOCOL_API DatetimeOffsetsResponse();
+ AWS_EC2PROTOCOL_API DatetimeOffsetsResponse(const Aws::AmazonWebServiceResult& result);
+ AWS_EC2PROTOCOL_API DatetimeOffsetsResponse& operator=(const Aws::AmazonWebServiceResult& result);
+
+
+ ///@{
+
+ inline const Aws::Utils::DateTime& GetDatetime() const{ return m_datetime; }
+ inline void SetDatetime(const Aws::Utils::DateTime& value) { m_datetime = value; }
+ inline void SetDatetime(Aws::Utils::DateTime&& value) { m_datetime = std::move(value); }
+ inline DatetimeOffsetsResponse& WithDatetime(const Aws::Utils::DateTime& value) { SetDatetime(value); return *this;}
+ inline DatetimeOffsetsResponse& WithDatetime(Aws::Utils::DateTime&& value) { SetDatetime(std::move(value)); return *this;}
+ ///@}
+
+ ///@{
+
+ inline const ResponseMetadata& GetResponseMetadata() const{ return m_responseMetadata; }
+ inline void SetResponseMetadata(const ResponseMetadata& value) { m_responseMetadata = value; }
+ inline void SetResponseMetadata(ResponseMetadata&& value) { m_responseMetadata = std::move(value); }
+ inline DatetimeOffsetsResponse& WithResponseMetadata(const ResponseMetadata& value) { SetResponseMetadata(value); return *this;}
+ inline DatetimeOffsetsResponse& WithResponseMetadata(ResponseMetadata&& value) { SetResponseMetadata(std::move(value)); return *this;}
+ ///@}
+ private:
+
+ Aws::Utils::DateTime m_datetime;
+
+ ResponseMetadata m_responseMetadata;
+ };
+
+} // namespace Model
+} // namespace EC2Protocol
+} // namespace Aws
diff --git a/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/EmptyInputAndEmptyOutputRequest.h b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/EmptyInputAndEmptyOutputRequest.h
new file mode 100644
index 00000000000..d70a12fd616
--- /dev/null
+++ b/generated/protocol-tests/test-clients/aws-cpp-sdk-ec2-protocol/include/aws/ec2-protocol/model/EmptyInputAndEmptyOutputRequest.h
@@ -0,0 +1,40 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include
+#include