From 5e12cf0c02b2e6687a246f7a5ae5fe2b6c62f079 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Mon, 9 Aug 2021 16:31:55 +0200 Subject: Added ZenServerInstance::AttachToRunningServer --- zenutil/zenserverprocess.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'zenutil/zenserverprocess.cpp') diff --git a/zenutil/zenserverprocess.cpp b/zenutil/zenserverprocess.cpp index 8427e612e..2a6b583de 100644 --- a/zenutil/zenserverprocess.cpp +++ b/zenutil/zenserverprocess.cpp @@ -490,6 +490,36 @@ ZenServerInstance::SpawnServer(int BasePort) m_ReadyEvent = std::move(ChildEvent); } +void +ZenServerInstance::AttachToRunningServer(int BasePort) +{ + ZenServerState State; + if (!State.InitializeReadOnly()) + { + // TODO: return success/error code instead? + throw std::exception("No zen state found"); + } + + const ZenServerState::ZenServerEntry* Entry = nullptr; + + if (BasePort) + { + Entry = State.Lookup(BasePort); + } + else + { + State.Snapshot([&](const ZenServerState::ZenServerEntry& InEntry) { Entry = &InEntry; }); + } + + if (!Entry) + { + // TODO: return success/error code instead? + throw std::exception("No server found"); + } + + m_Process.Initialize(Entry->Pid); +} + void ZenServerInstance::WaitUntilReady() { -- cgit v1.2.3