From 5f6524e3cbca15ee282ebc2aece2e6482b50d34f Mon Sep 17 00:00:00 2001 From: Sheepit Renderfarm Date: Tue, 21 Jan 2025 10:37:16 +0000 Subject: [PATCH] Feat: send current state to server --- src/main/java/com/sheepit/client/Client.java | 16 ++++++++++++++++ .../sheepit/client/network/ServerRequest.java | 1 + 2 files changed, 17 insertions(+) diff --git a/src/main/java/com/sheepit/client/Client.java b/src/main/java/com/sheepit/client/Client.java index 36a8e55..af52717 100644 --- a/src/main/java/com/sheepit/client/Client.java +++ b/src/main/java/com/sheepit/client/Client.java @@ -79,6 +79,14 @@ import lombok.Data; import okhttp3.HttpUrl; @Data public class Client { + public enum State { + DOWNLOADING, + PREPARING, + RENDERING, + UPLOADING, + UNKNOWN + } + public static final int MIN_JOB_ID = 20; //to distinguish between actual jobs and test frames private static final Locale LOCALE = Locale.ENGLISH; private DirectoryManager directoryManager; @@ -86,6 +94,7 @@ import okhttp3.HttpUrl; private ServerRequest serverRequest; private Configuration configuration; private Log log; + private State state; private Job renderingJob; private Job previousJob; private BlockingQueue jobsToValidate; @@ -109,6 +118,7 @@ import okhttp3.HttpUrl; this.log = Log.getInstance(); this.gui = gui; this.directoryManager = new DirectoryManager(this.configuration); + this.state = State.UNKNOWN; this.renderingJob = null; this.previousJob = null; this.jobsToValidate = new ArrayBlockingQueue<>(5); @@ -712,6 +722,7 @@ import okhttp3.HttpUrl; gui.setRenderingProjectName(ajob.getName()); try { + this.state = State.DOWNLOADING; downloadRet = this.downloadExecutable(ajob); if (downloadRet != Error.Type.OK) { gui.setRenderingProjectName(""); @@ -732,6 +743,8 @@ import okhttp3.HttpUrl; return downloadRet; } + this.state = State.PREPARING; + int ret = this.prepareWorkingDirectory(ajob); // decompress renderer and scene archives if (ret != 0) { gui.setRenderingProjectName(""); @@ -743,6 +756,7 @@ import okhttp3.HttpUrl; } } catch (SheepItException e) { + this.state = State.UNKNOWN; gui.setRenderingProjectName(""); for (String logline : directoryManager.filesystemHealthCheck()) { log.debug(logline); @@ -794,6 +808,7 @@ import okhttp3.HttpUrl; } }; + this.state = State.RENDERING; Error.Type err = ajob.render(removeSceneDirectoryOnceRenderHasStartedObserver); gui.setRenderingProjectName(""); gui.setRemainingTime(""); @@ -805,6 +820,7 @@ import okhttp3.HttpUrl; if (err != Error.Type.OK) { this.log.error("Client::work problem with runRenderer (ret " + err + ")"); } + this.state = State.UNKNOWN; return err; } diff --git a/src/main/java/com/sheepit/client/network/ServerRequest.java b/src/main/java/com/sheepit/client/network/ServerRequest.java index e7eebf2..628405f 100644 --- a/src/main/java/com/sheepit/client/network/ServerRequest.java +++ b/src/main/java/com/sheepit/client/network/ServerRequest.java @@ -142,6 +142,7 @@ public class ServerRequest extends Thread { HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(this.getPage("keepmealive"))).newBuilder(); urlBuilder.addQueryParameter("paused", String.valueOf(this.client.isSuspended())); urlBuilder.addQueryParameter("sleeping", String.valueOf(this.client.nextJobRequest() != null)); + urlBuilder.addQueryParameter("state", String.valueOf(this.client.getState())); if (this.client != null && this.client.getRenderingJob() != null) { Job job = this.client.getRenderingJob();