diff options
| author | ruki <[email protected]> | 2022-04-05 23:28:26 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-04-05 23:28:26 +0800 |
| commit | 934d15f424106a6426641f4fa067382b51978b45 (patch) | |
| tree | 3303314ba74eb623f53d1580406692b6740b3e9c /xmake/modules | |
| parent | 94dfcf46a3393392b83727cba39cf8639e9c3470 (diff) | |
lock server
Diffstat (limited to 'xmake/modules')
| -rw-r--r-- | xmake/modules/private/service/server.lua | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/xmake/modules/private/service/server.lua b/xmake/modules/private/service/server.lua index 56441ef30..d627076d7 100644 --- a/xmake/modules/private/service/server.lua +++ b/xmake/modules/private/service/server.lua @@ -67,6 +67,15 @@ end -- run main loop function server:runloop() assert(self._HANDLER, "no handler found!") + + -- ensure only one server process + local lockfile = os.tmpfile(tostring(self)) .. ".lock" + local lock = io.openlock(lockfile) + if not lock:trylock() then + raise("%s: has been started!", self) + end + + -- run loop local sock = socket.bind(self:addr(), self:port()) sock:listen(100) print("%s: listening %s:%d ..", self, self:addr(), self:port()) |
