diff options
| author | Stefan Boberg <[email protected]> | 2021-09-19 18:38:31 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-09-19 18:38:31 +0200 |
| commit | ed9d27f5e7b2e8eda835e67af302f097e5932366 (patch) | |
| tree | 6bcdffd7829290a6c6bbc03b466457fc7b37064a | |
| parent | Removed unnecessary ATL includes (diff) | |
| download | zen-ed9d27f5e7b2e8eda835e67af302f097e5932366.tar.xz zen-ed9d27f5e7b2e8eda835e67af302f097e5932366.zip | |
Added GetSessionIdString() which returns a text representation of the session id
| -rw-r--r-- | zencore/include/zencore/session.h | 3 | ||||
| -rw-r--r-- | zencore/include/zencore/uid.h | 1 | ||||
| -rw-r--r-- | zencore/session.cpp | 15 | ||||
| -rw-r--r-- | zencore/uid.cpp | 8 |
4 files changed, 24 insertions, 3 deletions
diff --git a/zencore/include/zencore/session.h b/zencore/include/zencore/session.h index 2da41b2c8..dd90197bf 100644 --- a/zencore/include/zencore/session.h +++ b/zencore/include/zencore/session.h @@ -8,6 +8,7 @@ namespace zen { struct Oid; -ZENCORE_API Oid GetSessionId(); +ZENCORE_API [[nodiscard]] Oid GetSessionId(); +ZENCORE_API [[nodiscard]] std::string_view GetSessionIdString(); } // namespace zen diff --git a/zencore/include/zencore/uid.h b/zencore/include/zencore/uid.h index f095c49ef..f4e9ab65a 100644 --- a/zencore/include/zencore/uid.h +++ b/zencore/include/zencore/uid.h @@ -60,6 +60,7 @@ struct Oid const Oid& Generate(); [[nodiscard]] static Oid FromHexString(const std::string_view String); StringBuilderBase& ToString(StringBuilderBase& OutString) const; + void ToString(char OutString[StringLength]); [[nodiscard]] static Oid FromMemory(const void* Ptr); auto operator<=>(const Oid& rhs) const = default; diff --git a/zencore/session.cpp b/zencore/session.cpp index d57d3685b..ce4bfae1b 100644 --- a/zencore/session.cpp +++ b/zencore/session.cpp @@ -9,14 +9,27 @@ namespace zen { static Oid GlobalSessionId; +static char GlobalSessionString[Oid::StringLength]; static std::once_flag SessionInitFlag; Oid GetSessionId() { - std::call_once(SessionInitFlag, [&] { GlobalSessionId.Generate(); }); + std::call_once(SessionInitFlag, [&] { + GlobalSessionId.Generate(); + GlobalSessionId.ToString(GlobalSessionString); + }); return GlobalSessionId; } +std::string_view +GetSessionIdString() +{ + // Ensure we actually have a generated session identifier + std::ignore = GetSessionId(); + + return std::string_view(GlobalSessionString, Oid::StringLength); +} + } // namespace zen
\ No newline at end of file diff --git a/zencore/uid.cpp b/zencore/uid.cpp index d946638ec..ed00b1814 100644 --- a/zencore/uid.cpp +++ b/zencore/uid.cpp @@ -91,10 +91,16 @@ Oid::FromMemory(const void* Ptr) return Id; } +void +Oid::ToString(char OutString[StringLength]) +{ + ToHexBytes(reinterpret_cast<const uint8_t*>(OidBits), sizeof(Oid::OidBits), OutString); +} + StringBuilderBase& Oid::ToString(StringBuilderBase& OutString) const { - char str[25]; + char str[StringLength + 1]; ToHexBytes(reinterpret_cast<const uint8_t*>(OidBits), sizeof(Oid::OidBits), str); str[2 * sizeof(Oid)] = '\0'; |