summaryrefslogtreecommitdiff
path: root/xmake/modules
diff options
context:
space:
mode:
authorruki <[email protected]>2022-04-05 23:17:51 +0800
committerruki <[email protected]>2022-04-05 23:17:51 +0800
commit7b11db21f6dac2ddb5fa74c510cfa8e45eb99c49 (patch)
tree5ee944bac525ce4d9a8260350f85614213b82479 /xmake/modules
parentec42771f6a3e99dae11e06859b57699dbe2a6ae7 (diff)
connect server
Diffstat (limited to 'xmake/modules')
-rw-r--r--xmake/modules/private/service/connect_service.lua31
-rw-r--r--xmake/modules/private/service/remote_build_server.lua3
-rw-r--r--xmake/modules/private/service/server.lua1
-rw-r--r--xmake/modules/private/service/start_service.lua10
4 files changed, 41 insertions, 4 deletions
diff --git a/xmake/modules/private/service/connect_service.lua b/xmake/modules/private/service/connect_service.lua
index fc427d445..fef2231f4 100644
--- a/xmake/modules/private/service/connect_service.lua
+++ b/xmake/modules/private/service/connect_service.lua
@@ -20,9 +20,36 @@
-- imports
import("core.base.option")
-import("private.service.service")
+import("core.base.socket")
+import("core.base.scheduler")
+import("private.service.config")
+
+function _get_address()
+ local addr, port
+ local address = assert(config.get("remote_build.client.connect"), "config(remote_build.client.connect): not found!")
+ local splitinfo = address:split(':', {plain = true})
+ if #splitinfo == 2 then
+ addr = splitinfo[1]
+ port = splitinfo[2]
+ else
+ addr = "127.0.0.1"
+ port = splitinfo[1]
+ end
+ assert(addr and port, "invalid connect address!")
+ return addr, port
+end
+
+function _session(addr, port)
+ print("connect %s:%d ..", addr, port)
+ local sock = socket.connect(addr, port)
+ if sock then
+ print("%s: connected!", sock)
+ else
+ print("connect %s:%d failed", addr, port)
+ end
+end
function main()
- -- TODO
+ scheduler.co_start(_session, _get_address())
end
diff --git a/xmake/modules/private/service/remote_build_server.lua b/xmake/modules/private/service/remote_build_server.lua
index 9e2183413..c6c7d1d2c 100644
--- a/xmake/modules/private/service/remote_build_server.lua
+++ b/xmake/modules/private/service/remote_build_server.lua
@@ -29,7 +29,8 @@ local super = remote_build_server:class()
-- init server
function remote_build_server:init()
super.init(self)
- super.listen_set(self, config.get("remote_build.server.listen"))
+ local listen = assert(config.get("remote_build.server.listen"), "config(remote_build.server.listen): not found!")
+ super.listen_set(self, listen)
super.handler_set(self, self.handler)
end
diff --git a/xmake/modules/private/service/server.lua b/xmake/modules/private/service/server.lua
index 65c61cb2f..5c313baa8 100644
--- a/xmake/modules/private/service/server.lua
+++ b/xmake/modules/private/service/server.lua
@@ -21,6 +21,7 @@
-- imports
import("core.base.object")
import("core.base.socket")
+import("core.base.scheduler")
-- define module
local server = server or object()
diff --git a/xmake/modules/private/service/start_service.lua b/xmake/modules/private/service/start_service.lua
index 5ab440e9e..fca698bf0 100644
--- a/xmake/modules/private/service/start_service.lua
+++ b/xmake/modules/private/service/start_service.lua
@@ -25,7 +25,15 @@ import("private.service.service")
function main(opt)
opt = opt or {}
if opt.daemon then
- os.execv(os.programfile(), {"lua", "private.service.service"}, {detach = true})
+ local argv = {"lua"}
+ if option.get("verbose") then
+ table.insert(argv, "-v")
+ end
+ if option.get("diagnosis") then
+ table.insert(argv, "-D")
+ end
+ table.insert(argv, "private.service.service")
+ os.execv(os.programfile(), argv, {detach = true})
else
service()
end