aboutsummaryrefslogtreecommitdiff
path: root/zenserver/upstream/zen.h
diff options
context:
space:
mode:
authorMartin Ridgers <[email protected]>2021-11-17 08:30:40 +0100
committerMartin Ridgers <[email protected]>2021-11-17 08:30:40 +0100
commit5e6b243d7fee946cc8126e54ffaee050fce7433d (patch)
tree4a953b941e794c9fe978987696a1acf50fed5858 /zenserver/upstream/zen.h
parentHooked up zenserver:main() to ZenEntryPoint::Run() on POSIX (diff)
parentFormat fix. (diff)
downloadzen-5e6b243d7fee946cc8126e54ffaee050fce7433d.tar.xz
zen-5e6b243d7fee946cc8126e54ffaee050fce7433d.zip
Merged main
Diffstat (limited to 'zenserver/upstream/zen.h')
-rw-r--r--zenserver/upstream/zen.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/zenserver/upstream/zen.h b/zenserver/upstream/zen.h
index 1fbfed7dd..ac3abc931 100644
--- a/zenserver/upstream/zen.h
+++ b/zenserver/upstream/zen.h
@@ -101,6 +101,14 @@ struct ZenCacheResult
bool Success = false;
};
+struct ZenClientOptions
+{
+ std::string_view Url;
+ std::span<std::string const> Urls;
+ std::chrono::milliseconds ConnectTimeout{};
+ std::chrono::milliseconds Timeout{};
+};
+
/** Zen Structured Cache session
*
* This provides a context in which cache queries can be performed
@@ -136,7 +144,7 @@ private:
class ZenStructuredCacheClient : public RefCounted
{
public:
- ZenStructuredCacheClient(std::string_view ServiceUrl);
+ ZenStructuredCacheClient(const ZenClientOptions& Options);
~ZenStructuredCacheClient();
std::string_view ServiceUrl() const { return m_ServiceUrl; }
@@ -144,16 +152,20 @@ public:
inline spdlog::logger& Log() { return m_Log; }
private:
- spdlog::logger& m_Log;
- std::string m_ServiceUrl;
+ spdlog::logger& m_Log;
+ std::string m_ServiceUrl;
+ std::chrono::milliseconds m_ConnectTimeout;
+ std::chrono::milliseconds m_Timeout;
RwLock m_SessionStateLock;
std::list<detail::ZenCacheSessionState*> m_SessionStateCache;
detail::ZenCacheSessionState* AllocSessionState();
void FreeSessionState(detail::ZenCacheSessionState*);
+ void InitializeSessionState(detail::ZenCacheSessionState& State);
friend class ZenStructuredCacheSession;
+ friend struct detail::ZenCacheSessionState;
};
} // namespace zen