Skip to content

Commit 710e6c5

Browse files
Add mapping for S3 CRT num_network_interface_names config (#3199)
1 parent b23a09d commit 710e6c5

File tree

4 files changed

+38
-0
lines changed

4 files changed

+38
-0
lines changed

generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/S3CrtClientConfiguration.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,13 @@ namespace Aws
153153
* If not set, the max of `partSize` and 5 MiB will be used.
154154
*/
155155
size_t multipartUploadThreshold{0};
156+
157+
/**
158+
* Optional.
159+
* THIS IS AN EXPERIMENTAL AND UNSTABLE API
160+
* This setting maps to CRT's network_interface_names_array config.
161+
*/
162+
Aws::Vector<Aws::String> networkInterfaceNames;
156163
/* End of S3 CRT specifics */
157164
private:
158165
void LoadS3CrtSpecificConfig(const Aws::String& profileName);

generated/src/aws-cpp-sdk-s3-crt/source/S3CrtClient.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,18 @@ void S3CrtClient::init(const S3Crt::ClientConfiguration& config,
488488
s3CrtConfig.factory_user_data = static_cast<void *>(&m_identityProviderUserData);
489489
s3CrtConfig.s3express_provider_override_factory = S3CrtIdentityProviderAdapter::ProviderFactory;
490490

491+
UniqueArrayPtr<aws_byte_cursor> interfacesNameCRTArr;
492+
if (!config.networkInterfaceNames.empty())
493+
{
494+
interfacesNameCRTArr = Aws::MakeUniqueArray<aws_byte_cursor>(config.networkInterfaceNames.size(), ALLOCATION_TAG);
495+
for(size_t i = 0; i < config.networkInterfaceNames.size(); ++i)
496+
{
497+
interfacesNameCRTArr.get()[i] = Crt::ByteCursorFromCString(config.networkInterfaceNames[i].c_str());
498+
}
499+
s3CrtConfig.network_interface_names_array = interfacesNameCRTArr.get();
500+
s3CrtConfig.num_network_interface_names = config.networkInterfaceNames.size();
501+
}
502+
491503
m_s3CrtClient = aws_s3_client_new(Aws::get_aws_allocator(), &s3CrtConfig);
492504
if (!m_s3CrtClient)
493505
{

tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/s3/s3-crt/S3CrtClientConfigHeader.vm

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,11 @@
8686
* If not set, the max of `partSize` and 5 MiB will be used.
8787
*/
8888
size_t multipartUploadThreshold{0};
89+
90+
/**
91+
* Optional.
92+
* THIS IS AN EXPERIMENTAL AND UNSTABLE API
93+
* This setting maps to CRT's network_interface_names_array config.
94+
*/
95+
Aws::Vector<Aws::String> networkInterfaceNames;
8996
/* End of S3 CRT specifics */

tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/s3/s3-crt/S3CrtServiceClientSourceInit.vm

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,18 @@ void ${className}::init(const ${clientConfigurationNamespace}::ClientConfigurati
429429
s3CrtConfig.factory_user_data = static_cast<void *>(&m_identityProviderUserData);
430430
s3CrtConfig.s3express_provider_override_factory = S3CrtIdentityProviderAdapter::ProviderFactory;
431431

432+
UniqueArrayPtr<aws_byte_cursor> interfacesNameCRTArr;
433+
if (!config.networkInterfaceNames.empty())
434+
{
435+
interfacesNameCRTArr = Aws::MakeUniqueArray<aws_byte_cursor>(config.networkInterfaceNames.size(), ALLOCATION_TAG);
436+
for(size_t i = 0; i < config.networkInterfaceNames.size(); ++i)
437+
{
438+
interfacesNameCRTArr.get()[i] = Crt::ByteCursorFromCString(config.networkInterfaceNames[i].c_str());
439+
}
440+
s3CrtConfig.network_interface_names_array = interfacesNameCRTArr.get();
441+
s3CrtConfig.num_network_interface_names = config.networkInterfaceNames.size();
442+
}
443+
432444
m_s3CrtClient = aws_s3_client_new(Aws::get_aws_allocator(), &s3CrtConfig);
433445
if (!m_s3CrtClient)
434446
{

0 commit comments

Comments
 (0)