use of org.gradle.launcher.daemon.protocol.Result in project gradle by gradle.
the class NotifyDaemonAboutChangedPathsClient method dispatch.
private static void dispatch(Connection<Message> connection, Command command) {
Throwable failure = null;
try {
connection.dispatch(command);
Result result = (Result) connection.receive();
if (result instanceof Failure) {
failure = ((Failure) result).getValue();
}
connection.dispatch(new Finished());
} catch (Throwable e) {
failure = e;
}
if (failure != null) {
throw UncheckedException.throwAsUncheckedException(failure);
}
}
use of org.gradle.launcher.daemon.protocol.Result in project gradle by gradle.
the class DaemonClient method executeBuild.
protected BuildActionResult executeBuild(Build build, DaemonClientConnection connection, BuildCancellationToken cancellationToken, BuildEventConsumer buildEventConsumer) throws DaemonInitialConnectException {
Object result;
try {
LOGGER.debug("Connected to daemon {}. Dispatching request {}.", connection.getDaemon(), build);
connection.dispatch(build);
result = connection.receive();
} catch (StaleDaemonAddressException e) {
LOGGER.debug("Connected to a stale daemon address.", e);
// However, since we haven't yet started running the build, we can recover by just trying again.
throw new DaemonInitialConnectException("Connected to a stale daemon address.", e);
}
if (result == null) {
// If the response from the daemon is unintelligible, mark the daemon as unavailable so other
// clients won't try to communicate with it. We'll attempt to recovery by trying again.
connector.markDaemonAsUnavailable(connection.getDaemon());
throw new DaemonInitialConnectException("The first result from the daemon was empty. The daemon process may have died or a non-daemon process is reusing the same port.");
}
LOGGER.debug("Received result {} from daemon {} (build should be starting).", result, connection.getDaemon());
DaemonDiagnostics diagnostics = null;
if (result instanceof BuildStarted) {
diagnostics = ((BuildStarted) result).getDiagnostics();
result = monitorBuild(build, diagnostics, connection, cancellationToken, buildEventConsumer);
}
LOGGER.debug("Received result {} from daemon {} (build should be done).", result, connection.getDaemon());
connection.dispatch(new Finished());
if (result instanceof Failure) {
Throwable failure = ((Failure) result).getValue();
if (failure instanceof DaemonStoppedException && cancellationToken.isCancellationRequested()) {
return BuildActionResult.cancelled(new BuildCancelledException("Daemon was stopped to handle build cancel request.", failure));
}
throw UncheckedException.throwAsUncheckedException(failure);
} else if (result instanceof DaemonUnavailable) {
throw new DaemonInitialConnectException("The daemon we connected to was unavailable: " + ((DaemonUnavailable) result).getReason());
} else if (result instanceof Result) {
return (BuildActionResult) ((Result) result).getValue();
} else {
throw invalidResponse(result, build, diagnostics);
}
}
use of org.gradle.launcher.daemon.protocol.Result in project gradle by gradle.
the class ReportStatusDispatcher method dispatch.
public Status dispatch(Connection<Message> connection, Command statusCommand) {
Status returnedStatus = null;
Throwable failure = null;
try {
connection.dispatch(statusCommand);
Result result = (Result) connection.receive();
if (result instanceof Failure) {
failure = ((Failure) result).getValue();
} else if (result instanceof Success) {
returnedStatus = (Status) result.getValue();
}
connection.dispatch(new Finished());
} catch (Throwable e) {
failure = e;
}
if (failure != null) {
LOGGER.debug(String.format("Unable to get status of %s.", connection), failure);
}
return returnedStatus;
}
use of org.gradle.launcher.daemon.protocol.Result in project gradle by gradle.
the class ReturnResult method execute.
@Override
public void execute(DaemonCommandExecution execution) {
execution.proceed();
Result result = new Success(execution.getResult());
LOGGER.debug("Daemon is dispatching the build result: {}", result);
execution.getConnection().completed(result);
}
Aggregations