AWS SDK for C++

AWS SDK for C++ Version 1.11.717

Loading...
Searching...
No Matches
S3ExpressIdentityProvider.h
1
6#pragma once
7
8#include <aws/core/auth/signer/AWSAuthSignerBase.h>
9#include <aws/core/utils/ConcurrentCache.h>
10#include <aws/core/utils/memory/stl/AWSSet.h>
11#include <aws/core/utils/memory/stl/AWSString.h>
12#include <aws/s3-crt/S3ExpressIdentity.h>
13#include <smithy/identity/resolver/AwsIdentityResolverBase.h>
14
15#include <condition_variable>
16#include <thread>
17
18namespace Aws {
19namespace Http {
20struct ServiceSpecificParameters;
21}
22
23namespace S3Crt {
24class S3CrtClient;
26 public:
27 explicit S3ExpressIdentityProvider(const S3CrtClient& s3Client) : m_s3Client(s3Client) {}
28
30 const std::shared_ptr<Aws::Http::ServiceSpecificParameters>& serviceSpecificParameters) = 0;
31
33 const AdditionalParameters& additionalParameters) override;
35
37
38 protected:
39 std::shared_ptr<std::mutex> GetMutexForBucketName(const Aws::String& bucketName);
40
41 private:
42 const S3CrtClient& m_s3Client;
43 mutable std::mutex m_bucketNameMapMutex;
45};
46
48 public:
49 explicit DefaultS3ExpressIdentityProvider(const S3CrtClient& m_s3Client);
50
52 std::shared_ptr<Utils::ConcurrentCache<Aws::String, S3ExpressIdentity>> credentialsCache);
53
58
59 virtual ~DefaultS3ExpressIdentityProvider() override = default;
60
61 S3ExpressIdentity GetS3ExpressIdentity(const std::shared_ptr<Aws::Http::ServiceSpecificParameters>& serviceSpecificParameters) override;
62
63 private:
64 mutable std::shared_ptr<Aws::Utils::ConcurrentCache<Aws::String, S3ExpressIdentity>> m_credentialsCache;
65};
66
68 public:
70 std::chrono::minutes refreshPeriod = std::chrono::minutes(1));
71
73 std::shared_ptr<Utils::ConcurrentCache<Aws::String, S3ExpressIdentity>> credentialsCache,
74 std::chrono::minutes refreshPeriod = std::chrono::minutes(1));
75
80
82
83 S3ExpressIdentity GetS3ExpressIdentity(const std::shared_ptr<Aws::Http::ServiceSpecificParameters>& serviceSpecificParameters) override;
84
85 private:
86 void refreshIdentities(std::chrono::minutes refreshPeriod);
87 void threadSafeKeyInsert(const Aws::String& key);
88 bool threadSafeKeyHas(const Aws::String& key);
89 void threadSafeKeyEmpty();
90
91 mutable std::shared_ptr<Aws::Utils::ConcurrentCache<Aws::String, S3ExpressIdentity>> m_credentialsCache;
92 Aws::Set<Aws::String> m_keysUsed;
93 mutable std::mutex m_keysUsedMutex;
94 mutable bool m_shouldStopBackgroundRefresh;
95 Aws::UniquePtr<std::thread> m_backgroundRefreshThread;
96 mutable std::mutex m_shutDownMutex;
97 mutable std::condition_variable m_shutdownCondition;
98};
99} // namespace S3Crt
100} // namespace Aws
DefaultAsyncS3ExpressIdentityProvider(const S3CrtClient &m_s3Client, std::chrono::minutes refreshPeriod=std::chrono::minutes(1))
DefaultAsyncS3ExpressIdentityProvider & operator=(DefaultAsyncS3ExpressIdentityProvider &&other) noexcept=delete
DefaultAsyncS3ExpressIdentityProvider(const S3CrtClient &s3Client, std::shared_ptr< Utils::ConcurrentCache< Aws::String, S3ExpressIdentity > > credentialsCache, std::chrono::minutes refreshPeriod=std::chrono::minutes(1))
S3ExpressIdentity GetS3ExpressIdentity(const std::shared_ptr< Aws::Http::ServiceSpecificParameters > &serviceSpecificParameters) override
DefaultAsyncS3ExpressIdentityProvider(const DefaultAsyncS3ExpressIdentityProvider &other)=delete
DefaultAsyncS3ExpressIdentityProvider & operator=(const DefaultAsyncS3ExpressIdentityProvider &other)=delete
DefaultAsyncS3ExpressIdentityProvider(DefaultAsyncS3ExpressIdentityProvider &&other) noexcept=delete
DefaultS3ExpressIdentityProvider(const S3CrtClient &s3Client, std::shared_ptr< Utils::ConcurrentCache< Aws::String, S3ExpressIdentity > > credentialsCache)
DefaultS3ExpressIdentityProvider(const DefaultS3ExpressIdentityProvider &other)=delete
DefaultS3ExpressIdentityProvider & operator=(const DefaultS3ExpressIdentityProvider &other)=delete
DefaultS3ExpressIdentityProvider(const S3CrtClient &m_s3Client)
virtual ~DefaultS3ExpressIdentityProvider() override=default
DefaultS3ExpressIdentityProvider & operator=(DefaultS3ExpressIdentityProvider &&other) noexcept=delete
S3ExpressIdentity GetS3ExpressIdentity(const std::shared_ptr< Aws::Http::ServiceSpecificParameters > &serviceSpecificParameters) override
DefaultS3ExpressIdentityProvider(DefaultS3ExpressIdentityProvider &&other) noexcept=delete
virtual S3ExpressIdentity GetS3ExpressIdentity(const std::shared_ptr< Aws::Http::ServiceSpecificParameters > &serviceSpecificParameters)=0
S3ExpressIdentityProvider(const S3CrtClient &s3Client)
S3ExpressIdentity getIdentity(const Aws::String &bucketName)
ResolveIdentityFutureOutcome getIdentity(const IdentityProperties &identityProperties, const AdditionalParameters &additionalParameters) override
std::shared_ptr< std::mutex > GetMutexForBucketName(const Aws::String &bucketName)
Aws::UnorderedMap< Aws::String, Aws::Crt::Variant< Aws::String, bool > > AdditionalParameters
Aws::UnorderedMap< Aws::String, Aws::Crt::Variant< Aws::String, bool > > IdentityProperties
std::map< K, V, std::less< K >, Aws::Allocator< std::pair< const K, V > > > Map
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String
std::set< T, std::less< T >, Aws::Allocator< T > > Set
std::unique_ptr< T, D > UniquePtr