diff options
| -rw-r--r-- | xmake/modules/private/service/distcc_build/client.lua | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/xmake/modules/private/service/distcc_build/client.lua b/xmake/modules/private/service/distcc_build/client.lua index 2b90a96e9..3d3f5aa16 100644 --- a/xmake/modules/private/service/distcc_build/client.lua +++ b/xmake/modules/private/service/distcc_build/client.lua @@ -84,6 +84,19 @@ function distcc_build_client:hosts_set(hosts) self._HOSTS = hostinfos end +-- get the status of client hosts +function distcc_build_client:hosts_status() + local hosts_status = self._HOSTS_STATUS + if hosts_status == nil then + hosts_status = table.copy(self:status().hosts) + for _, host_status in pairs(hosts_status) do + self:_update_status(hosts_status) + end + self._HOSTS_STATUS = hosts_status + end + return hosts_status +end + -- connect to the distcc server function distcc_build_client:connect() if self:is_connected() then @@ -219,6 +232,17 @@ function distcc_build_client:workdir() return self._WORKDIR end +-- update the host status +function distcc_build_client:_update_status(host_status) + local running = host_status.running or 0 + if running > host_status.njob then + running = host_status.njob + end + host_status.running = running + host_status.freejobs = host_status.njob - host_status.running + host_status.weight = host_status.freejobs +end + -- has free jobs? function distcc_build_client:_has_freejobs() return self:freejobs() > 0 |
