aboutsummaryrefslogtreecommitdiff
path: root/zenserver/upstream
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2022-02-01 13:54:59 +0100
committerPer Larsson <[email protected]>2022-02-01 13:54:59 +0100
commitf8e0ac440e5ee2b08b91e77be1d2212f26af61df (patch)
tree4700f0abed9f7e47e65ee0b11f4a3041cb05a97d /zenserver/upstream
parentRefactored cloud cache access token provider. (diff)
downloadzen-f8e0ac440e5ee2b08b91e77be1d2212f26af61df.tar.xz
zen-f8e0ac440e5ee2b08b91e77be1d2212f26af61df.zip
Moved cloud cache token provider out from options.
Diffstat (limited to 'zenserver/upstream')
-rw-r--r--zenserver/upstream/jupiter.cpp5
-rw-r--r--zenserver/upstream/jupiter.h17
-rw-r--r--zenserver/upstream/upstreamapply.cpp14
-rw-r--r--zenserver/upstream/upstreamapply.h6
-rw-r--r--zenserver/upstream/upstreamcache.cpp10
-rw-r--r--zenserver/upstream/upstreamcache.h5
6 files changed, 36 insertions, 21 deletions
diff --git a/zenserver/upstream/jupiter.cpp b/zenserver/upstream/jupiter.cpp
index f141856c1..b377ac629 100644
--- a/zenserver/upstream/jupiter.cpp
+++ b/zenserver/upstream/jupiter.cpp
@@ -854,15 +854,16 @@ CloudCacheTokenProvider::MakeFromOAuthClientCredentials(const OAuthClientCredent
return std::make_unique<OAuthClientCredentialsTokenProvider>(Params);
}
-CloudCacheClient::CloudCacheClient(CloudCacheClientOptions&& Options)
+CloudCacheClient::CloudCacheClient(const CloudCacheClientOptions& Options, std::unique_ptr<CloudCacheTokenProvider> TokenProvider)
: m_Log(zen::logging::Get("jupiter"))
, m_ServiceUrl(Options.ServiceUrl)
, m_DdcNamespace(Options.DdcNamespace)
, m_BlobStoreNamespace(Options.BlobStoreNamespace)
, m_ConnectTimeout(Options.ConnectTimeout)
, m_Timeout(Options.Timeout)
-, m_TokenProvider(std::move(Options.TokenProvider))
+, m_TokenProvider(std::move(TokenProvider))
{
+ ZEN_ASSERT(m_TokenProvider.get() != nullptr);
}
CloudCacheClient::~CloudCacheClient()
diff --git a/zenserver/upstream/jupiter.h b/zenserver/upstream/jupiter.h
index 82b67b8e1..31224500a 100644
--- a/zenserver/upstream/jupiter.h
+++ b/zenserver/upstream/jupiter.h
@@ -161,14 +161,13 @@ public:
struct CloudCacheClientOptions
{
- std::string_view Name;
- std::string_view ServiceUrl;
- std::string_view DdcNamespace;
- std::string_view BlobStoreNamespace;
- std::chrono::milliseconds ConnectTimeout{5000};
- std::chrono::milliseconds Timeout{};
- std::unique_ptr<CloudCacheTokenProvider> TokenProvider;
- bool UseLegacyDdc = false;
+ std::string_view Name;
+ std::string_view ServiceUrl;
+ std::string_view DdcNamespace;
+ std::string_view BlobStoreNamespace;
+ std::chrono::milliseconds ConnectTimeout{5000};
+ std::chrono::milliseconds Timeout{};
+ bool UseLegacyDdc = false;
};
/**
@@ -177,7 +176,7 @@ struct CloudCacheClientOptions
class CloudCacheClient : public RefCounted
{
public:
- CloudCacheClient(CloudCacheClientOptions&& Options);
+ CloudCacheClient(const CloudCacheClientOptions& Options, std::unique_ptr<CloudCacheTokenProvider> TokenProvider);
~CloudCacheClient();
CloudCacheAccessToken AcquireAccessToken();
diff --git a/zenserver/upstream/upstreamapply.cpp b/zenserver/upstream/upstreamapply.cpp
index 220daab27..63c334265 100644
--- a/zenserver/upstream/upstreamapply.cpp
+++ b/zenserver/upstream/upstreamapply.cpp
@@ -48,13 +48,16 @@ namespace detail {
class HordeUpstreamApplyEndpoint final : public UpstreamApplyEndpoint
{
public:
- HordeUpstreamApplyEndpoint(CloudCacheClientOptions&& Options, CasStore& CasStore, CidStore& CidStore)
+ HordeUpstreamApplyEndpoint(const CloudCacheClientOptions& Options,
+ std::unique_ptr<zen::CloudCacheTokenProvider> TokenProvider,
+ CasStore& CasStore,
+ CidStore& CidStore)
: m_Log(logging::Get("upstream-apply"))
, m_CasStore(CasStore)
, m_CidStore(CidStore)
{
m_DisplayName = fmt::format("Horde - '{}'", Options.ServiceUrl);
- m_Client = new CloudCacheClient(std::move(Options));
+ m_Client = new CloudCacheClient(Options, std::move(TokenProvider));
m_ChannelId = fmt::format("zen-{}", zen::GetSessionIdString());
}
@@ -1561,9 +1564,12 @@ MakeUpstreamApply(const UpstreamApplyOptions& Options, CasStore& CasStore, CidSt
}
std::unique_ptr<UpstreamApplyEndpoint>
-MakeHordeUpstreamEndpoint(CloudCacheClientOptions&& Options, CasStore& CasStore, CidStore& CidStore)
+MakeHordeUpstreamEndpoint(const CloudCacheClientOptions& Options,
+ std::unique_ptr<CloudCacheTokenProvider> TokenProvider,
+ CasStore& CasStore,
+ CidStore& CidStore)
{
- return std::make_unique<detail::HordeUpstreamApplyEndpoint>(std::move(Options), CasStore, CidStore);
+ return std::make_unique<detail::HordeUpstreamApplyEndpoint>(Options, std::move(TokenProvider), CasStore, CidStore);
}
} // namespace zen
diff --git a/zenserver/upstream/upstreamapply.h b/zenserver/upstream/upstreamapply.h
index 114364581..e48b67c61 100644
--- a/zenserver/upstream/upstreamapply.h
+++ b/zenserver/upstream/upstreamapply.h
@@ -24,6 +24,7 @@ class CasStore;
class CidStore;
class ZenCacheStore;
struct CloudCacheClientOptions;
+class CloudCacheTokenProvider;
enum class UpstreamApplyState : int32_t
{
@@ -169,7 +170,10 @@ public:
std::unique_ptr<UpstreamApply> MakeUpstreamApply(const UpstreamApplyOptions& Options, CasStore& CasStore, CidStore& CidStore);
-std::unique_ptr<UpstreamApplyEndpoint> MakeHordeUpstreamEndpoint(CloudCacheClientOptions&& Options, CasStore& CasStore, CidStore& CidStore);
+std::unique_ptr<UpstreamApplyEndpoint> MakeHordeUpstreamEndpoint(const CloudCacheClientOptions& Options,
+ std::unique_ptr<CloudCacheTokenProvider> TokenProvider,
+ CasStore& CasStore,
+ CidStore& CidStore);
} // namespace zen
diff --git a/zenserver/upstream/upstreamcache.cpp b/zenserver/upstream/upstreamcache.cpp
index f432d322c..232ed3031 100644
--- a/zenserver/upstream/upstreamcache.cpp
+++ b/zenserver/upstream/upstreamcache.cpp
@@ -85,7 +85,9 @@ namespace detail {
class JupiterUpstreamEndpoint final : public UpstreamEndpoint
{
public:
- JupiterUpstreamEndpoint(CloudCacheClientOptions&& Options, AuthMgr& Mgr)
+ JupiterUpstreamEndpoint(const CloudCacheClientOptions& Options,
+ std::unique_ptr<CloudCacheTokenProvider> TokenProvider,
+ AuthMgr& Mgr)
: m_AuthMgr(Mgr)
, m_Log(zen::logging::Get("upstream"))
, m_UseLegacyDdc(Options.UseLegacyDdc)
@@ -93,7 +95,7 @@ namespace detail {
ZEN_ASSERT(!Options.Name.empty());
m_Info.Name = Options.Name;
m_Info.Url = Options.ServiceUrl;
- m_Client = new CloudCacheClient(std::move(Options));
+ m_Client = new CloudCacheClient(Options, std::move(TokenProvider));
}
virtual ~JupiterUpstreamEndpoint() = default;
@@ -1490,9 +1492,9 @@ MakeUpstreamCache(const UpstreamCacheOptions& Options, ZenCacheStore& CacheStore
}
std::unique_ptr<UpstreamEndpoint>
-MakeJupiterUpstreamEndpoint(CloudCacheClientOptions&& Options, AuthMgr& Mgr)
+MakeJupiterUpstreamEndpoint(const CloudCacheClientOptions& Options, std::unique_ptr<CloudCacheTokenProvider> TokenProvider, AuthMgr& Mgr)
{
- return std::make_unique<detail::JupiterUpstreamEndpoint>(std::move(Options), Mgr);
+ return std::make_unique<detail::JupiterUpstreamEndpoint>(Options, std::move(TokenProvider), Mgr);
}
std::unique_ptr<UpstreamEndpoint>
diff --git a/zenserver/upstream/upstreamcache.h b/zenserver/upstream/upstreamcache.h
index 8eb852c53..c82af28c6 100644
--- a/zenserver/upstream/upstreamcache.h
+++ b/zenserver/upstream/upstreamcache.h
@@ -22,6 +22,7 @@ class CbObjectWriter;
class CidStore;
class ZenCacheStore;
struct CloudCacheClientOptions;
+class CloudCacheTokenProvider;
struct ZenStructuredCacheClientOptions;
struct UpstreamCacheRecord
@@ -204,7 +205,9 @@ public:
std::unique_ptr<UpstreamCache> MakeUpstreamCache(const UpstreamCacheOptions& Options, ZenCacheStore& CacheStore, CidStore& CidStore);
-std::unique_ptr<UpstreamEndpoint> MakeJupiterUpstreamEndpoint(CloudCacheClientOptions&& Options, AuthMgr& Mgr);
+std::unique_ptr<UpstreamEndpoint> MakeJupiterUpstreamEndpoint(const CloudCacheClientOptions& Options,
+ std::unique_ptr<CloudCacheTokenProvider> TokenProvider,
+ AuthMgr& Mgr);
std::unique_ptr<UpstreamEndpoint> MakeZenUpstreamEndpoint(const ZenStructuredCacheClientOptions& Options);