88#include < aws/core/utils/memory/stl/AWSSet.h>
99#include < aws/core/utils/memory/stl/AWSString.h>
1010#include < aws/core/utils/ConcurrentCache.h>
11- #include < smithy/identity/resolver/AwsIdentityResolverBase.h>
12- #include < smithy/identity/identity/AwsCredentialIdentity.h>
11+ #include < aws/core/auth/signer/AWSAuthSignerBase.h>
1312#include < aws/s3-crt/S3ExpressIdentity.h>
13+ #include < smithy/identity/resolver/AwsIdentityResolverBase.h>
1414#include < thread>
1515#include < condition_variable>
16- #include < aws/s3-crt/S3Crt_EXPORTS.h>
1716
1817namespace Aws {
1918 namespace Http {
@@ -22,79 +21,80 @@ namespace Aws {
2221
2322 namespace S3Crt {
2423 class S3CrtClient ;
25- class AWS_S3CRT_API S3ExpressIdentityProvider : public smithy::IdentityResolverBase<S3ExpressIdentity> {
26- public:
27- explicit S3ExpressIdentityProvider (const S3CrtClient& s3Client);
28- ResolveIdentityFutureOutcome getIdentity (
29- const IdentityProperties& identityProperties,
30- const AdditionalParameters& additionalParameters) override ;
31-
32- virtual S3ExpressIdentity
24+ class S3ExpressIdentityProvider : public smithy ::IdentityResolverBase<S3ExpressIdentity> {
25+ public:
26+ explicit S3ExpressIdentityProvider (const S3CrtClient &s3Client) : m_s3Client(s3Client) {}
27+
28+ virtual S3ExpressIdentity
3329 GetS3ExpressIdentity (const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) = 0 ;
3430
35- protected:
36-
37- S3ExpressIdentity GetCredentialsFromBucket (const Aws::String& bucketName) const ;
31+ ResolveIdentityFutureOutcome
32+ getIdentity (const IdentityProperties& identityProperties, const AdditionalParameters& additionalParameters) override ;
33+ S3ExpressIdentity
34+ getIdentity (const Aws::String &bucketName);
35+
36+ virtual ~S3ExpressIdentityProvider () {}
3837
39- private:
40- const S3CrtClient& m_s3Client;
41- mutable std::mutex m_bucketNameMapMutex;
42- Aws::Map<Aws::String, std::shared_ptr<std::mutex>> m_bucketNameMutex;
38+ protected:
39+ std::shared_ptr<std::mutex> GetMutexForBucketName (const Aws::String& bucketName);
4340
44- protected:
45- std::shared_ptr<std::mutex> GetMutexForBucketName (const Aws::String& bucketName);
41+ private:
42+ const S3CrtClient &m_s3Client;
43+ mutable std::mutex m_bucketNameMapMutex;
44+ Aws::Map<Aws::String, std::shared_ptr<std::mutex>> m_bucketNameMutex;
4645 };
47-
48-
49- class AWS_S3CRT_API DefaultS3ExpressIdentityProvider : public S3ExpressIdentityProvider {
50- public:
51- explicit DefaultS3ExpressIdentityProvider (const S3CrtClient& s3Client);
52- explicit DefaultS3ExpressIdentityProvider (
53- const S3CrtClient& s3Client,
54- std::shared_ptr<Utils::ConcurrentCache<Aws::String, S3ExpressIdentity>> credentialsCache);
55- DefaultS3ExpressIdentityProvider (const DefaultS3ExpressIdentityProvider& other) = delete ;
56- DefaultS3ExpressIdentityProvider (DefaultS3ExpressIdentityProvider&& other) noexcept = delete ;
57- DefaultS3ExpressIdentityProvider& operator =(const DefaultS3ExpressIdentityProvider& other) = delete ;
58- DefaultS3ExpressIdentityProvider& operator =(DefaultS3ExpressIdentityProvider&& other) noexcept = delete ;
59- virtual ~DefaultS3ExpressIdentityProvider () override = default ;
60- S3ExpressIdentity GetS3ExpressIdentity (const std::shared_ptr<Aws::Http::ServiceSpecificParameters> &serviceSpecificParameters) override ;
61-
62- private:
63- mutable std::shared_ptr<Aws::Utils::ConcurrentCache<Aws::String, S3ExpressIdentity>> m_credentialsCache;
46+
47+ class DefaultS3ExpressIdentityProvider : public S3ExpressIdentityProvider {
48+ public:
49+ explicit DefaultS3ExpressIdentityProvider (const S3CrtClient &m_s3Client);
50+
51+ DefaultS3ExpressIdentityProvider (const S3CrtClient &s3Client,
52+ std::shared_ptr<Utils::ConcurrentCache<Aws::String, S3ExpressIdentity>> credentialsCache);
53+
54+ DefaultS3ExpressIdentityProvider (const DefaultS3ExpressIdentityProvider& other) = delete ;
55+ DefaultS3ExpressIdentityProvider (DefaultS3ExpressIdentityProvider&& other) noexcept = delete ;
56+ DefaultS3ExpressIdentityProvider& operator =(const DefaultS3ExpressIdentityProvider& other) = delete ;
57+ DefaultS3ExpressIdentityProvider& operator =(DefaultS3ExpressIdentityProvider&& other) noexcept = delete ;
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;
6465 };
6566
66- class AWS_S3CRT_API DefaultAsyncS3ExpressIdentityProvider : public S3ExpressIdentityProvider {
67- public:
68- explicit DefaultAsyncS3ExpressIdentityProvider (
69- const S3CrtClient& s3Client,
70- std::chrono::minutes refreshPeriod = std::chrono::minutes(1 ));
71-
72- explicit DefaultAsyncS3ExpressIdentityProvider (
73- const S3CrtClient& s3Client,
74- std::shared_ptr<Utils::ConcurrentCache<Aws::String, S3ExpressIdentity>> credentialsCache,
75- std::chrono::minutes refreshPeriod = std::chrono::minutes(1 ));
76-
77- DefaultAsyncS3ExpressIdentityProvider (const DefaultAsyncS3ExpressIdentityProvider& other) = delete ;
78- DefaultAsyncS3ExpressIdentityProvider (DefaultAsyncS3ExpressIdentityProvider&& other) noexcept = delete ;
79- DefaultAsyncS3ExpressIdentityProvider& operator =(
80- const DefaultAsyncS3ExpressIdentityProvider& other) = delete ;
81- DefaultAsyncS3ExpressIdentityProvider& operator =(DefaultAsyncS3ExpressIdentityProvider&& other) noexcept = delete ;
82- virtual ~DefaultAsyncS3ExpressIdentityProvider () override ;
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;
67+ class DefaultAsyncS3ExpressIdentityProvider : public S3ExpressIdentityProvider {
68+ public:
69+ explicit DefaultAsyncS3ExpressIdentityProvider (const S3CrtClient &m_s3Client,
70+ std::chrono::minutes refreshPeriod = std::chrono::minutes(1 ));
71+
72+ DefaultAsyncS3ExpressIdentityProvider (const S3CrtClient &s3Client,
73+ std::shared_ptr<Utils::ConcurrentCache<Aws::String, S3ExpressIdentity>> credentialsCache,
74+ std::chrono::minutes refreshPeriod = std::chrono::minutes(1 ));
75+
76+ DefaultAsyncS3ExpressIdentityProvider (const DefaultAsyncS3ExpressIdentityProvider& other) = delete ;
77+ DefaultAsyncS3ExpressIdentityProvider (DefaultAsyncS3ExpressIdentityProvider&& other) noexcept = delete ;
78+ DefaultAsyncS3ExpressIdentityProvider& operator =(const DefaultAsyncS3ExpressIdentityProvider& other) = delete ;
79+ DefaultAsyncS3ExpressIdentityProvider& operator =(DefaultAsyncS3ExpressIdentityProvider&& other) noexcept = delete ;
80+
81+ virtual ~DefaultAsyncS3ExpressIdentityProvider () override ;
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;
9898 };
9999 }
100- }
100+ }
0 commit comments