summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-04-10 21:15:25 +0800
committerruki <[email protected]>2022-04-10 21:15:25 +0800
commit2bf71798ce8355a66868628cfe5b85c52c592366 (patch)
tree29e643ae6dd0b08083a32abf29caa7848ed16e6c
parent5a67db08a505b68118d3eeeb89d32f04724261ef (diff)
move server and client files
-rw-r--r--xmake/modules/private/service/client.lua (renamed from xmake/modules/private/service/client/client.lua)0
-rw-r--r--xmake/modules/private/service/connect_service.lua2
-rw-r--r--xmake/modules/private/service/disconnect_service.lua2
-rw-r--r--xmake/modules/private/service/remote_build/client.lua (renamed from xmake/modules/private/service/client/remote_build_client.lua)2
-rw-r--r--xmake/modules/private/service/remote_build/server.lua (renamed from xmake/modules/private/service/server/remote_build_server.lua)48
-rw-r--r--xmake/modules/private/service/server.lua (renamed from xmake/modules/private/service/server/server.lua)0
-rw-r--r--xmake/modules/private/service/service.lua2
-rw-r--r--xmake/modules/private/service/show_status.lua2
-rw-r--r--xmake/modules/private/service/stop_service.lua2
9 files changed, 44 insertions, 16 deletions
diff --git a/xmake/modules/private/service/client/client.lua b/xmake/modules/private/service/client.lua
index 4b0168981..4b0168981 100644
--- a/xmake/modules/private/service/client/client.lua
+++ b/xmake/modules/private/service/client.lua
diff --git a/xmake/modules/private/service/connect_service.lua b/xmake/modules/private/service/connect_service.lua
index fdb657999..2f130a158 100644
--- a/xmake/modules/private/service/connect_service.lua
+++ b/xmake/modules/private/service/connect_service.lua
@@ -21,7 +21,7 @@
-- imports
import("core.base.option")
import("core.base.scheduler")
-import("private.service.client.remote_build_client")
+import("private.service.remote_build.client", {alias = "remote_build_client"})
function main()
scheduler.co_start(function ()
diff --git a/xmake/modules/private/service/disconnect_service.lua b/xmake/modules/private/service/disconnect_service.lua
index d793c8633..84739bcee 100644
--- a/xmake/modules/private/service/disconnect_service.lua
+++ b/xmake/modules/private/service/disconnect_service.lua
@@ -23,7 +23,7 @@ import("core.base.option")
import("core.base.socket")
import("core.base.scheduler")
import("private.service.config")
-import("private.service.client.remote_build_client")
+import("private.service.remote_build.client", {alias = "remote_build_client"})
function main()
remote_build_client():disconnect()
diff --git a/xmake/modules/private/service/client/remote_build_client.lua b/xmake/modules/private/service/remote_build/client.lua
index 9b16862b0..ad5764b31 100644
--- a/xmake/modules/private/service/client/remote_build_client.lua
+++ b/xmake/modules/private/service/remote_build/client.lua
@@ -23,7 +23,7 @@ import("core.base.socket")
import("core.project.config", {alias = "project_config"})
import("private.service.config")
import("private.service.message")
-import("private.service.client.client")
+import("private.service.client")
import("private.service.socket_stream")
-- define module
diff --git a/xmake/modules/private/service/server/remote_build_server.lua b/xmake/modules/private/service/remote_build/server.lua
index 09dee6ba8..37fb9b5f5 100644
--- a/xmake/modules/private/service/server/remote_build_server.lua
+++ b/xmake/modules/private/service/remote_build/server.lua
@@ -22,7 +22,7 @@
import("private.service.config")
import("private.service.socket_stream")
import("private.service.message")
-import("private.service.server.server")
+import("private.service.server")
-- define module
local remote_build_server = remote_build_server or server()
@@ -34,42 +34,70 @@ function remote_build_server:init(daemon)
if self:daemon() then
config.load()
end
+
+ -- init address
local address = assert(config.get("remote_build.server.listen"), "config(remote_build.server.listen): not found!")
super.address_set(self, address)
- super.handler_set(self, self.on_handle)
+
+ -- init handler
+ super.handler_set(self, self._on_handle)
+
+ -- init sessions
+ self._SESSIONS = {}
+end
+
+-- get class
+function remote_build_server:class()
+ return remote_build_server
end
-- handle connect message
-function remote_build_server:handle_connect(stream, msg)
+function remote_build_server:_handle_connect(stream, msg)
local session_id = msg:session_id()
local respmsg = msg:clone()
respmsg:body().xmakever = xmake.version():shortstr()
local ok = stream:send_msg(respmsg) and stream:flush()
+ if ok then
+ self:_session_open(session_id)
+ end
vprint("%s: %s: <session %s>: send %s", self, stream:sock(), session_id, ok and "ok" or "failed")
end
-- handle disconnect message
-function remote_build_server:handle_disconnect(stream, msg)
+function remote_build_server:_handle_disconnect(stream, msg)
local session_id = msg:session_id()
local respmsg = msg:clone()
local ok = stream:send_msg(respmsg) and stream:flush()
+ if ok then
+ self:_session_close(session_id)
+ end
vprint("%s: %s: <session %s>: send %s", self, stream:sock(), session_id, ok and "ok" or "failed")
end
-- on handle message
-function remote_build_server:on_handle(stream, msg)
+function remote_build_server:_on_handle(stream, msg)
vprint("%s: %s: <session %s>: on handle message(%d)", self, stream:sock(), msg:session_id(), msg:code())
vprint(msg:body())
if msg:is_connect() then
- self:handle_connect(stream, msg)
+ self:_handle_connect(stream, msg)
elseif msg:is_disconnect() then
- self:handle_disconnect(stream, msg)
+ self:_handle_disconnect(stream, msg)
end
end
--- get class
-function remote_build_server:class()
- return remote_build_server
+-- get session
+function remote_build_server:_session(session_id)
+ return self._SESSIONS[session_id]
+end
+
+-- open session
+function remote_build_server:_session_open(session_id)
+ self._SESSIONS[session_id] = {}
+end
+
+-- close session
+function remote_build_server:_session_close(session_id)
+ self._SESSIONS[session_id] = nil
end
function remote_build_server:__tostring()
diff --git a/xmake/modules/private/service/server/server.lua b/xmake/modules/private/service/server.lua
index 2acc230f6..2acc230f6 100644
--- a/xmake/modules/private/service/server/server.lua
+++ b/xmake/modules/private/service/server.lua
diff --git a/xmake/modules/private/service/service.lua b/xmake/modules/private/service/service.lua
index c928ce6ee..b2d9260fd 100644
--- a/xmake/modules/private/service/service.lua
+++ b/xmake/modules/private/service/service.lua
@@ -21,7 +21,7 @@
-- imports
import("core.base.option")
import("core.base.scheduler")
-import("private.service.server.remote_build_server")
+import("private.service.remote_build.server", {alias = "remote_build_server"})
function _start_remote_build_server(...)
remote_build_server(...):runloop()
diff --git a/xmake/modules/private/service/show_status.lua b/xmake/modules/private/service/show_status.lua
index bb64a3cec..672022e9c 100644
--- a/xmake/modules/private/service/show_status.lua
+++ b/xmake/modules/private/service/show_status.lua
@@ -19,7 +19,7 @@
--
-- imports
-import("private.service.client.remote_build_client")
+import("private.service.remote_build.client", {alias = "remote_build_client"})
function main()
local client = remote_build_client()
diff --git a/xmake/modules/private/service/stop_service.lua b/xmake/modules/private/service/stop_service.lua
index 2553ddbac..9d1d001f6 100644
--- a/xmake/modules/private/service/stop_service.lua
+++ b/xmake/modules/private/service/stop_service.lua
@@ -20,7 +20,7 @@
-- imports
import("core.base.option")
-import("private.service.server.remote_build_server")
+import("private.service.remote_build.server", {alias = "remote_build_server"})
function _stop_remote_build_server(...)
local pidfile = remote_build_server(...):pidfile()