From f0bf3fa4117359b0509e5a31602f33994169fafe Mon Sep 17 00:00:00 2001 From: SergeyRyabinin Date: Mon, 18 Nov 2024 18:52:40 +0000 Subject: [PATCH] Add mapping for S3 CRT num_network_interface_names config --- .../include/aws/s3-crt/S3CrtClientConfiguration.h | 7 +++++++ .../src/aws-cpp-sdk-s3-crt/source/S3CrtClient.cpp | 12 ++++++++++++ .../cpp/s3/s3-crt/S3CrtClientConfigHeader.vm | 7 +++++++ .../cpp/s3/s3-crt/S3CrtServiceClientSourceInit.vm | 12 ++++++++++++ 4 files changed, 38 insertions(+) diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/S3CrtClientConfiguration.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/S3CrtClientConfiguration.h index 341415d2391..0557391c3f9 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/S3CrtClientConfiguration.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/S3CrtClientConfiguration.h @@ -153,6 +153,13 @@ namespace Aws * If not set, the max of `partSize` and 5 MiB will be used. */ size_t multipartUploadThreshold{0}; + + /** + * Optional. + * THIS IS AN EXPERIMENTAL AND UNSTABLE API + * This setting maps to CRT's network_interface_names_array config. + */ + Aws::Vector networkInterfaceNames; /* End of S3 CRT specifics */ private: void LoadS3CrtSpecificConfig(const Aws::String& profileName); diff --git a/generated/src/aws-cpp-sdk-s3-crt/source/S3CrtClient.cpp b/generated/src/aws-cpp-sdk-s3-crt/source/S3CrtClient.cpp index cf01eaec2d1..d910764d923 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/source/S3CrtClient.cpp +++ b/generated/src/aws-cpp-sdk-s3-crt/source/S3CrtClient.cpp @@ -488,6 +488,18 @@ void S3CrtClient::init(const S3Crt::ClientConfiguration& config, s3CrtConfig.factory_user_data = static_cast(&m_identityProviderUserData); s3CrtConfig.s3express_provider_override_factory = S3CrtIdentityProviderAdapter::ProviderFactory; + UniqueArrayPtr interfacesNameCRTArr; + if (!config.networkInterfaceNames.empty()) + { + interfacesNameCRTArr = Aws::MakeUniqueArray(config.networkInterfaceNames.size(), ALLOCATION_TAG); + for(size_t i = 0; i < config.networkInterfaceNames.size(); ++i) + { + interfacesNameCRTArr.get()[i] = Crt::ByteCursorFromCString(config.networkInterfaceNames[i].c_str()); + } + s3CrtConfig.network_interface_names_array = interfacesNameCRTArr.get(); + s3CrtConfig.num_network_interface_names = config.networkInterfaceNames.size(); + } + m_s3CrtClient = aws_s3_client_new(Aws::get_aws_allocator(), &s3CrtConfig); if (!m_s3CrtClient) { diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/s3/s3-crt/S3CrtClientConfigHeader.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/s3/s3-crt/S3CrtClientConfigHeader.vm index 01da461eb4c..0934839a0d6 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/s3/s3-crt/S3CrtClientConfigHeader.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/s3/s3-crt/S3CrtClientConfigHeader.vm @@ -86,4 +86,11 @@ * If not set, the max of `partSize` and 5 MiB will be used. */ size_t multipartUploadThreshold{0}; + + /** + * Optional. + * THIS IS AN EXPERIMENTAL AND UNSTABLE API + * This setting maps to CRT's network_interface_names_array config. + */ + Aws::Vector networkInterfaceNames; /* End of S3 CRT specifics */ diff --git a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/s3/s3-crt/S3CrtServiceClientSourceInit.vm b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/s3/s3-crt/S3CrtServiceClientSourceInit.vm index 7fb26dfcccc..567fe593828 100644 --- a/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/s3/s3-crt/S3CrtServiceClientSourceInit.vm +++ b/tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/s3/s3-crt/S3CrtServiceClientSourceInit.vm @@ -429,6 +429,18 @@ void ${className}::init(const ${clientConfigurationNamespace}::ClientConfigurati s3CrtConfig.factory_user_data = static_cast(&m_identityProviderUserData); s3CrtConfig.s3express_provider_override_factory = S3CrtIdentityProviderAdapter::ProviderFactory; + UniqueArrayPtr interfacesNameCRTArr; + if (!config.networkInterfaceNames.empty()) + { + interfacesNameCRTArr = Aws::MakeUniqueArray(config.networkInterfaceNames.size(), ALLOCATION_TAG); + for(size_t i = 0; i < config.networkInterfaceNames.size(); ++i) + { + interfacesNameCRTArr.get()[i] = Crt::ByteCursorFromCString(config.networkInterfaceNames[i].c_str()); + } + s3CrtConfig.network_interface_names_array = interfacesNameCRTArr.get(); + s3CrtConfig.num_network_interface_names = config.networkInterfaceNames.size(); + } + m_s3CrtClient = aws_s3_client_new(Aws::get_aws_allocator(), &s3CrtConfig); if (!m_s3CrtClient) {