summaryrefslogtreecommitdiff
path: root/xmake/modules/private/service/remote_cache/client.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2022-05-21 09:18:25 +0800
committerruki <[email protected]>2022-05-21 09:18:25 +0800
commit9b07378b1e3bea7d02c3d9d556a09f71ae53d610 (patch)
tree9a99c3bd50686cde98332211ae744e201ef3e516 /xmake/modules/private/service/remote_cache/client.lua
parent3387f817869fa72eaef44cae85220223cc5514f5 (diff)
clean files for remote cache
Diffstat (limited to 'xmake/modules/private/service/remote_cache/client.lua')
-rw-r--r--xmake/modules/private/service/remote_cache/client.lua29
1 files changed, 29 insertions, 0 deletions
diff --git a/xmake/modules/private/service/remote_cache/client.lua b/xmake/modules/private/service/remote_cache/client.lua
index d58bdd9b5..e3b785762 100644
--- a/xmake/modules/private/service/remote_cache/client.lua
+++ b/xmake/modules/private/service/remote_cache/client.lua
@@ -163,6 +163,35 @@ function remote_cache_client:disconnect()
self:status_save()
end
+-- clean server files
+function remote_cache_client:clean()
+ assert(self:is_connected(), "%s: has been not connected!", self)
+ local addr = self:addr()
+ local port = self:port()
+ local sock = assert(socket.connect(addr, port), "%s: server unreachable!", self)
+ local session_id = self:session_id()
+ local errors
+ local ok = false
+ print("%s: clean files in %s:%d ..", self, addr, port)
+ local stream = socket_stream(sock)
+ if stream:send_msg(message.new_clean(session_id, {token = self:token()})) and stream:flush() then
+ local msg = stream:recv_msg()
+ if msg then
+ vprint(msg:body())
+ if msg:success() then
+ ok = true
+ else
+ errors = msg:errors()
+ end
+ end
+ end
+ if ok then
+ print("%s: clean files ok!", self)
+ else
+ print("%s: clean files failed in %s:%d, %s", self, addr, port, errors or "unknown")
+ end
+end
+
-- is connected?
function remote_cache_client:is_connected()
return self:status().connected