66
77#pragma once
88
9- #include < aws/core/endpoint/AWSPartitions.h>
10- #include < aws/core/endpoint/EndpointProviderBase.h>
11- #include < aws/core/endpoint/EndpointParameter.h>
12- #include < aws/core/endpoint/ClientContextParameters.h>
13- #include < aws/core/endpoint/BuiltInParameters.h>
14- #include < aws/core/utils/memory/stl/AWSArray.h>
9+ #include < aws/core/endpoint/internal/CrtEndpointProvider.h>
1510
1611#include < aws/crt/endpoints/RuleEngine.h>
1712
18- #include < aws/core/utils/Outcome.h>
19- #include < aws/core/client/AWSError.h>
20- #include < aws/core/client/CoreErrors.h>
21- #include " aws/core/utils/logging/LogMacros.h"
22-
2313namespace Aws
2414{
2515 namespace Endpoint
@@ -33,6 +23,7 @@ namespace Aws
3323 * @param clientContextParameters
3424 * @param endpointParameters
3525 * @return
26+ * Resolves an endpoint using the JSON-ruleset CRT rule engine.
3627 */
3728 AWS_CORE_API ResolveEndpointOutcome
3829 ResolveEndpointDefaultImpl (const Aws::Crt::Endpoints::RuleEngine& ruleEngine,
@@ -41,78 +32,19 @@ namespace Aws
4132 const EndpointParameters& endpointParameters);
4233
4334 /* *
44- * Default endpoint provider template used in this SDK .
35+ * Resolves endpoints from a JSON ruleset blob via the CRT Aws::Crt::Endpoints::RuleEngine .
4536 */
4637 template <typename ClientConfigurationT = Aws::Client::GenericClientConfiguration,
4738 typename BuiltInParametersT = Aws::Endpoint::BuiltInParameters,
4839 typename ClientContextParametersT = Aws::Endpoint::ClientContextParameters>
49- class AWS_CORE_API DefaultEndpointProvider : public EndpointProviderBase<ClientConfigurationT, BuiltInParametersT, ClientContextParametersT>
40+ class AWS_CORE_API DefaultEndpointProvider : public CrtEndpointProvider<Aws::Crt::Endpoints::RuleEngine,
41+ ResolveEndpointDefaultImpl, ClientConfigurationT, BuiltInParametersT, ClientContextParametersT>
5042 {
5143 public:
52- DefaultEndpointProvider (const char * endpointRulesBlob, const size_t endpointRulesBlobSz)
53- : m_crtRuleEngine(Aws::Crt::ByteCursorFromArray((const uint8_t *) endpointRulesBlob, endpointRulesBlobSz),
54- Aws::Crt::ByteCursorFromArray ((const uint8_t *) AWSPartitions::GetPartitionsBlob(), AWSPartitions::PartitionsBlobSize))
55- {
56- if (!m_crtRuleEngine) {
57- AWS_LOGSTREAM_FATAL (DEFAULT_ENDPOINT_PROVIDER_TAG , " Invalid CRT Rule Engine state" );
58- }
59- }
60-
61- virtual ~DefaultEndpointProvider ()
62- {
63- }
64-
65- void InitBuiltInParameters (const ClientConfigurationT& config) override
66- {
67- m_builtInParameters.SetFromClientConfiguration (config);
68- }
69-
70- void InitBuiltInParameters (const ClientConfigurationT& config, const Aws::String& serviceName) override
71- {
72- m_builtInParameters.SetFromClientConfiguration (config, serviceName);
73- }
74-
75- /* *
76- * Default implementation of the ResolveEndpoint
77- */
78- ResolveEndpointOutcome ResolveEndpoint (const EndpointParameters& endpointParameters) const override
79- {
80- auto ResolveEndpointDefaultImpl = Aws::Endpoint::ResolveEndpointDefaultImpl;
81- return ResolveEndpointDefaultImpl (m_crtRuleEngine, m_builtInParameters.GetAllParameters (), m_clientContextParameters.GetAllParameters (), endpointParameters);
82- };
83-
84- const ClientContextParametersT& GetClientContextParameters () const override
85- {
86- return m_clientContextParameters;
87- }
88- ClientContextParametersT& AccessClientContextParameters () override
89- {
90- return m_clientContextParameters;
91- }
92-
93- const BuiltInParametersT& GetBuiltInParameters () const
94- {
95- return m_builtInParameters;
96- }
97- BuiltInParametersT& AccessBuiltInParameters ()
98- {
99- return m_builtInParameters;
100- }
101-
102- void OverrideEndpoint (const Aws::String& endpoint) override
103- {
104- m_builtInParameters.OverrideEndpoint (endpoint);
105- }
106-
107- protected:
108- /* Crt RuleEngine evaluator built using the service's Rule engine */
109- Aws::Crt::Endpoints::RuleEngine m_crtRuleEngine;
110-
111- /* Also known as a configurable parameters defined by the AWS Service in their c2j/smithy model definition */
112- ClientContextParametersT m_clientContextParameters;
44+ using CrtEndpointProvider<Aws::Crt::Endpoints::RuleEngine, ResolveEndpointDefaultImpl,
45+ ClientConfigurationT, BuiltInParametersT, ClientContextParametersT>::CrtEndpointProvider;
11346
114- /* Also known as parameters on the ClientConfiguration in this SDK */
115- BuiltInParametersT m_builtInParameters;
47+ virtual ~DefaultEndpointProvider () = default ;
11648 };
11749
11850 /* *
0 commit comments