blob: 85724116cc694878e533c773ba599f639961faed [file] [log] [blame]
package com.intellij.remoteServer.util;
import com.intellij.openapi.util.Computable;
import com.intellij.remoteServer.agent.util.CloudAgentErrorHandler;
/**
* @author michael.golubev
*/
public class AgentTaskExecutor implements CloudAgentErrorHandler {
private String myErrorMessage;
@Override
public void onError(String message) {
myErrorMessage = message;
}
private void clear() {
myErrorMessage = null;
}
public <T> T execute(Computable<T> task) throws ServerRuntimeException {
clear();
T result = task.compute();
if (myErrorMessage == null) {
return result;
}
else {
throw new ServerRuntimeException(myErrorMessage);
}
}
public <T> void execute(Computable<T> task, CallbackWrapper<T> callback) {
clear();
T result = task.compute();
if (myErrorMessage == null) {
callback.onSuccess(result);
}
else {
callback.onError(myErrorMessage);
}
}
}