diff options
| author | ruki <[email protected]> | 2022-04-10 21:15:25 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-04-10 21:15:25 +0800 |
| commit | 2bf71798ce8355a66868628cfe5b85c52c592366 (patch) | |
| tree | 29e643ae6dd0b08083a32abf29caa7848ed16e6c | |
| parent | 5a67db08a505b68118d3eeeb89d32f04724261ef (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.lua | 2 | ||||
| -rw-r--r-- | xmake/modules/private/service/disconnect_service.lua | 2 | ||||
| -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.lua | 2 | ||||
| -rw-r--r-- | xmake/modules/private/service/show_status.lua | 2 | ||||
| -rw-r--r-- | xmake/modules/private/service/stop_service.lua | 2 |
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() |
