summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-04-10 23:29:41 +0800
committerruki <[email protected]>2022-04-10 23:29:41 +0800
commit951470293adc0906dc7c23710ec70c9b727b2542 (patch)
tree60c900c0529cacc5bc94ccba0fa23dd2bb0b4472
parent275486b26f621e448e70fedcaa1cbbd515c4b931 (diff)
add sync msg
-rw-r--r--xmake/modules/private/service/message.lua26
-rw-r--r--xmake/modules/private/service/remote_build/server.lua10
-rw-r--r--xmake/modules/private/service/remote_build/session.lua5
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)