diff options
| author | ruki <[email protected]> | 2022-04-10 23:29:41 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-04-10 23:29:41 +0800 |
| commit | 951470293adc0906dc7c23710ec70c9b727b2542 (patch) | |
| tree | 60c900c0529cacc5bc94ccba0fa23dd2bb0b4472 | |
| parent | 275486b26f621e448e70fedcaa1cbbd515c4b931 (diff) | |
add sync msg
| -rw-r--r-- | xmake/modules/private/service/message.lua | 26 | ||||
| -rw-r--r-- | xmake/modules/private/service/remote_build/server.lua | 10 | ||||
| -rw-r--r-- | xmake/modules/private/service/remote_build/session.lua | 5 |
3 files changed, 35 insertions, 6 deletions
diff --git a/xmake/modules/private/service/message.lua b/xmake/modules/private/service/message.lua index 103d0e949..20b38e8bb 100644 --- a/xmake/modules/private/service/message.lua +++ b/xmake/modules/private/service/message.lua @@ -25,8 +25,9 @@ import("core.base.object") local message = message or object() -- the message code -message.CODE_CONN = 1 -- connect -message.CODE_DISCONN = 2 -- disconnect +message.CODE_CONNECT = 1 +message.CODE_DISCONNECT = 2 +message.CODE_SYNC = 3 -- init message function message:init(body) @@ -45,12 +46,17 @@ end -- is connect message? function message:is_connect() - return self:code() == message.CODE_CONN + return self:code() == message.CODE_CONNECT end -- is disconnect message? function message:is_disconnect() - return self:code() == message.CODE_DISCONN + return self:code() == message.CODE_DISCONNECT +end + +-- is sync message? +function message:is_sync() + return self:code() == message.CODE_SYNC end -- get message body @@ -79,7 +85,7 @@ end -- new connect message function new_connect(session_id) return _new({ - code = message.CODE_CONN, + code = message.CODE_CONNECT, session_id = session_id, xmakever = xmake.version():shortstr() }) @@ -88,7 +94,15 @@ end -- new disconnect message function new_disconnect(session_id) return _new({ - code = message.CODE_DISCONN, + code = message.CODE_DISCONNECT, + session_id = session_id + }) +end + +-- new sync message +function new_sync(session_id) + return _new({ + code = message.CODE_SYNC, session_id = session_id }) end diff --git a/xmake/modules/private/service/remote_build/server.lua b/xmake/modules/private/service/remote_build/server.lua index 5ad0c2b19..6502901c7 100644 --- a/xmake/modules/private/service/remote_build/server.lua +++ b/xmake/modules/private/service/remote_build/server.lua @@ -75,6 +75,14 @@ function remote_build_server:_handle_disconnect(stream, msg) vprint("%s: %s: <session %s>: send %s", self, stream:sock(), session_id, ok and "ok" or "failed") end +-- handle sync message +function remote_build_server:_handle_sync(stream, msg) + local session_id = msg:session_id() + local respmsg = msg:clone() + local ok = stream:send_msg(respmsg) and stream:flush() + 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) vprint("%s: %s: <session %s>: on handle message(%d)", self, stream:sock(), msg:session_id(), msg:code()) @@ -83,6 +91,8 @@ function remote_build_server:_on_handle(stream, msg) self:_handle_connect(stream, msg) elseif msg:is_disconnect() then self:_handle_disconnect(stream, msg) + elseif msg:is_sync() then + self:_handle_sync(stream, msg) end end diff --git a/xmake/modules/private/service/remote_build/session.lua b/xmake/modules/private/service/remote_build/session.lua index 0c28e2406..d90f1162b 100644 --- a/xmake/modules/private/service/remote_build/session.lua +++ b/xmake/modules/private/service/remote_build/session.lua @@ -45,6 +45,11 @@ function session:workdir() return path.join(workdir, "sessons", self:id()) end +-- get project directory +function session:projectdir() + return path.join(self:workdir(), "source") +end + function main(session_id) local instance = session() instance:init(session_id) |
