summaryrefslogtreecommitdiff
path: root/xmake/modules/private/service/remote_cache/server_session.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2022-05-21 09:39:31 +0800
committerruki <[email protected]>2022-05-21 09:39:31 +0800
commita391526b3c1ffdcad34c2095980ee046e161016e (patch)
tree3f33404a0267b9a5edb7835adde842f080552f9b /xmake/modules/private/service/remote_cache/server_session.lua
parent9b07378b1e3bea7d02c3d9d556a09f71ae53d610 (diff)
pull and push file
Diffstat (limited to 'xmake/modules/private/service/remote_cache/server_session.lua')
-rw-r--r--xmake/modules/private/service/remote_cache/server_session.lua24
1 files changed, 24 insertions, 0 deletions
diff --git a/xmake/modules/private/service/remote_cache/server_session.lua b/xmake/modules/private/service/remote_cache/server_session.lua
index a90589d39..53845a189 100644
--- a/xmake/modules/private/service/remote_cache/server_session.lua
+++ b/xmake/modules/private/service/remote_cache/server_session.lua
@@ -76,10 +76,34 @@ end
-- pull file
function server_session:pull(respmsg)
+ local body = respmsg:body()
+ local stream = self:stream()
+ local cachekey = body.filename
+ local cachefile = path.join(self:cachedir(), cachekey:sub(1, 2), cachekey)
+
+ -- send cache file
+ if os.isfile(cachefile) then
+ body.exists = true
+ if not stream:send_file(cachefile, {compress = os.filesize(cachefile) > 4096}) then
+ raise("send %s failed!", cachefile)
+ end
+ else
+ body.exists = false
+ if not stream:send_emptydata() then
+ raise("send empty data failed!")
+ end
+ end
end
-- push file
function server_session:push(respmsg)
+ local body = respmsg:body()
+ local stream = self:stream()
+ local cachekey = body.filename
+ local cachefile = path.join(self:cachedir(), cachekey:sub(1, 2), cachekey)
+ if not stream:recv_file(cachefile) then
+ raise("recv %s failed!", cachefile)
+ end
end
-- clean files