AWS SDK for C++

AWS SDK for C++ Version 1.11.754

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/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 S3 {
24class S3Client;
26 public:
27 explicit S3ExpressIdentityProvider(const S3Client& 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 S3Client& m_s3Client;
43 mutable std::mutex m_bucketNameMapMutex;
45};
46
48 public:
49 explicit DefaultS3ExpressIdentityProvider(const S3Client& 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:
69 explicit DefaultAsyncS3ExpressIdentityProvider(const S3Client& m_s3Client, std::chrono::minutes refreshPeriod = std::chrono::minutes(1));
70
72 std::shared_ptr<Utils::ConcurrentCache<Aws::String, S3ExpressIdentity>> credentialsCache,
73 std::chrono::minutes refreshPeriod = std::chrono::minutes(1));
74
79
81
82 S3ExpressIdentity GetS3ExpressIdentity(const std::shared_ptr<Aws::Http::ServiceSpecificParameters>& serviceSpecificParameters) override;
83
84 private:
85 void refreshIdentities(std::chrono::minutes refreshPeriod);
86 void threadSafeKeyInsert(const Aws::String& key);
87 bool threadSafeKeyHas(const Aws::String& key);
88 void threadSafeKeyEmpty();
89
90 mutable std::shared_ptr<Aws::Utils::ConcurrentCache<Aws::String, S3ExpressIdentity>> m_credentialsCache;
91 Aws::Set<Aws::String> m_keysUsed;
92 mutable std::mutex m_keysUsedMutex;
93 mutable bool m_shouldStopBackgroundRefresh;
94 Aws::UniquePtr<std::thread> m_backgroundRefreshThread;
95 mutable std::mutex m_shutDownMutex;
96 mutable std::condition_variable m_shutdownCondition;
97};
98} // namespace S3
99} // namespace Aws
DefaultAsyncS3ExpressIdentityProvider & operator=(const DefaultAsyncS3ExpressIdentityProvider &other)=delete
S3ExpressIdentity GetS3ExpressIdentity(const std::shared_ptr< Aws::Http::ServiceSpecificParameters > &serviceSpecificParameters) override
DefaultAsyncS3ExpressIdentityProvider(const S3Client &s3Client, std::shared_ptr< Utils::ConcurrentCache< Aws::String, S3ExpressIdentity > > credentialsCache, std::chrono::minutes refreshPeriod=std::chrono::minutes(1))
DefaultAsyncS3ExpressIdentityProvider(const S3Client &m_s3Client, std::chrono::minutes refreshPeriod=std::chrono::minutes(1))
DefaultAsyncS3ExpressIdentityProvider(DefaultAsyncS3ExpressIdentityProvider &&other) noexcept=delete
DefaultAsyncS3ExpressIdentityProvider(const DefaultAsyncS3ExpressIdentityProvider &other)=delete
DefaultAsyncS3ExpressIdentityProvider & operator=(DefaultAsyncS3ExpressIdentityProvider &&other) noexcept=delete
DefaultS3ExpressIdentityProvider(const DefaultS3ExpressIdentityProvider &other)=delete
DefaultS3ExpressIdentityProvider(const S3Client &m_s3Client)
DefaultS3ExpressIdentityProvider & operator=(DefaultS3ExpressIdentityProvider &&other) noexcept=delete
S3ExpressIdentity GetS3ExpressIdentity(const std::shared_ptr< Aws::Http::ServiceSpecificParameters > &serviceSpecificParameters) override
DefaultS3ExpressIdentityProvider(const S3Client &s3Client, std::shared_ptr< Utils::ConcurrentCache< Aws::String, S3ExpressIdentity > > credentialsCache)
virtual ~DefaultS3ExpressIdentityProvider() override=default
DefaultS3ExpressIdentityProvider(DefaultS3ExpressIdentityProvider &&other) noexcept=delete
DefaultS3ExpressIdentityProvider & operator=(const DefaultS3ExpressIdentityProvider &other)=delete
S3ExpressIdentity getIdentity(const Aws::String &bucketName)
virtual S3ExpressIdentity GetS3ExpressIdentity(const std::shared_ptr< Aws::Http::ServiceSpecificParameters > &serviceSpecificParameters)=0
std::shared_ptr< std::mutex > GetMutexForBucketName(const Aws::String &bucketName)
S3ExpressIdentityProvider(const S3Client &s3Client)
ResolveIdentityFutureOutcome getIdentity(const IdentityProperties &identityProperties, const AdditionalParameters &additionalParameters) override
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