aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-09-17 23:04:11 +0200
committerStefan Boberg <[email protected]>2021-09-17 23:04:11 +0200
commitde65c608c2cefc4be771c11b5bb7132a84fa46eb (patch)
tree1877cca3fde74f7bc34ffbc03ea692b16165c996
parentMerge branch 'main' of https://github.com/EpicGames/zen (diff)
downloadzen-de65c608c2cefc4be771c11b5bb7132a84fa46eb.tar.xz
zen-de65c608c2cefc4be771c11b5bb7132a84fa46eb.zip
Added better handling for read-only mode
-rw-r--r--zenutil/include/zenutil/zenserverprocess.h2
-rw-r--r--zenutil/zenserverprocess.cpp5
2 files changed, 6 insertions, 1 deletions
diff --git a/zenutil/include/zenutil/zenserverprocess.h b/zenutil/include/zenutil/zenserverprocess.h
index 005f7adff..979db349a 100644
--- a/zenutil/include/zenutil/zenserverprocess.h
+++ b/zenutil/include/zenutil/zenserverprocess.h
@@ -123,12 +123,14 @@ public:
ZenServerEntry* Register(int ListenPort);
void Sweep();
void Snapshot(std::function<void(const ZenServerEntry&)>&& Callback);
+ inline bool IsReadOnly() const { return m_IsReadOnly; }
private:
void* m_hMapFile = nullptr;
ZenServerEntry* m_Data = nullptr;
int m_MaxEntryCount = 131072 / sizeof(ZenServerEntry);
ZenServerEntry* m_OurEntry = nullptr;
+ bool m_IsReadOnly = true;
};
} // namespace zen
diff --git a/zenutil/zenserverprocess.cpp b/zenutil/zenserverprocess.cpp
index c504ce7da..c6bee1ed7 100644
--- a/zenutil/zenserverprocess.cpp
+++ b/zenutil/zenserverprocess.cpp
@@ -129,7 +129,8 @@ ZenServerState::Initialize()
zen::ThrowLastError("Could not map view of Zen server state");
}
- m_Data = reinterpret_cast<ZenServerEntry*>(pBuf);
+ m_Data = reinterpret_cast<ZenServerEntry*>(pBuf);
+ m_IsReadOnly = false;
}
bool
@@ -221,6 +222,8 @@ ZenServerState::Sweep()
return;
}
+ ZEN_ASSERT(m_IsReadOnly == false);
+
for (int i = 0; i < m_MaxEntryCount; ++i)
{
ZenServerEntry& Entry = m_Data[i];