#pragma once // Single-instance guard, keyed by the resolved runtime directory (see rpc/runtime_dir.hpp) // so isolated instances pointed at different runtime dirs never contend (docs/01 §2). The // mechanism is Linux's abstract-namespace Unix socket; macOS has no abstract namespace and // uses a real socket file plus flock() instead, which must unlink a stale socket left by a // crashed process (docs/08-porting.md "API mapping" — the abstract version got that for // free from the kernel). #include #include namespace velox::daemon::rpc::platform { // Returns the held fd (kept open for the process lifetime; closing it releases the lock) // or -1 if another process already holds the lock for this exact `runtime_dir`, or on any // other error acquiring it. int acquire_instance_lock(const std::string& runtime_dir); } // namespace velox::daemon::rpc::platform