/** * 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 S3Crt { struct AWS_S3CRT_API ClientConfiguration : Aws::S3Crt::S3CrtClientConfiguration { ClientConfiguration() : Aws::S3Crt::S3CrtClientConfiguration(), partSize(5 * 1024 * 1024), throughputTargetGbps(2.0) {} /** Client bootstrap used for common staples such as event loop group, host resolver, etc.. * If this is nullptr, SDK will create a default one for you. */ std::shared_ptr clientBootstrap; /** Size of parts the files will be downloaded or uploaded in. Useful for Put/GetObject APIs * defaults to 5MB, if user set it to be less than 5MB, SDK will set it to 5MB. */ size_t partSize = 5 * 1024 * 1024; /** TLS Options to be used for each connection. * If scheme is Https and tlsConnectionOptions is null, SDK will create a default one for you. */ std::shared_ptr tlsConnectionOptions; /* Throughput target in Gbps that we are trying to reach. Normally it's the NIC's throughput */ double throughputTargetGbps = 2.0; /** Control the maximum memory used by downloads. * When set to a value > 0, the SDK uses flow control to bring the memory usage very close * to the specified window. Without this cap, memory usage grows proportional to file size. */ size_t downloadMemoryUsageWindow = 0; /* Callback and associated user data for when the client has completed its shutdown process. */ std::function clientShutdownCallback; void *shutdownCallbackUserData = nullptr; }; } }