blob: d9c717fd41256a0a3dcfaf39ef1c631c14f299cb [file] [log] [blame]
package com.intellij.remoteServer.impl.runtime;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.remoteServer.runtime.RemoteOperationCallback;
import com.intellij.remoteServer.runtime.ServerTaskExecutor;
import com.intellij.util.ThrowableRunnable;
import com.intellij.util.concurrency.SequentialTaskExecutor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.ide.PooledThreadExecutor;
/**
* @author nik
*/
public class ServerTaskExecutorImpl implements ServerTaskExecutor {
private static final Logger LOG = Logger.getInstance(ServerTaskExecutorImpl.class);
private final SequentialTaskExecutor myTaskExecutor;
public ServerTaskExecutorImpl() {
myTaskExecutor = new SequentialTaskExecutor(PooledThreadExecutor.INSTANCE);
}
@Override
public void execute(@NotNull Runnable command) {
myTaskExecutor.execute(command);
}
@Override
public void submit(@NotNull Runnable command) {
execute(command);
}
@Override
public void submit(@NotNull final ThrowableRunnable<?> command, @NotNull final RemoteOperationCallback callback) {
execute(new Runnable() {
@Override
public void run() {
try {
command.run();
}
catch (Throwable e) {
LOG.info(e);
callback.errorOccurred(e.getMessage());
}
}
});
}
}