aboutsummaryrefslogtreecommitdiff
path: root/zenserver/upstream/upstreamcache.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2021-09-20 08:54:09 +0200
committerPer Larsson <[email protected]>2021-09-20 08:54:09 +0200
commitd3c8d678d395c9ce091d93e629d77d698f714dcd (patch)
tree647fcf3d57bf1667989daf94f52a49471141159d /zenserver/upstream/upstreamcache.cpp
parentAdded upstream cache policy command line option (read|write,readonly,writeonl... (diff)
downloadzen-d3c8d678d395c9ce091d93e629d77d698f714dcd.tar.xz
zen-d3c8d678d395c9ce091d93e629d77d698f714dcd.zip
Probe upstream Zen server when initializing upstream cache.
Diffstat (limited to 'zenserver/upstream/upstreamcache.cpp')
-rw-r--r--zenserver/upstream/upstreamcache.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/zenserver/upstream/upstreamcache.cpp b/zenserver/upstream/upstreamcache.cpp
index c015ef3e9..e235db516 100644
--- a/zenserver/upstream/upstreamcache.cpp
+++ b/zenserver/upstream/upstreamcache.cpp
@@ -292,8 +292,20 @@ namespace detail {
virtual bool Initialize() override
{
- // TODO: Test and authenticate Zen client connection
- return !m_Client->ServiceUrl().empty();
+ try
+ {
+ ZenStructuredCacheSession Session(*m_Client);
+ ZenCacheResult Result;
+ for (int32_t Attempt = 0, MaxAttempts = 3; Attempt < MaxAttempts && !Result.Success; ++Attempt)
+ {
+ Result = Session.SayHello();
+ }
+ return Result.Success;
+ }
+ catch (std::exception&)
+ {
+ return false;
+ }
}
virtual std::string_view DisplayName() const override { return m_DisplayName; }