mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
146 lines
5.6 KiB
Java
146 lines
5.6 KiB
Java
package com.google.common.util.concurrent;
|
|
|
|
import com.google.common.base.Supplier;
|
|
import com.google.common.util.concurrent.Service;
|
|
import java.util.concurrent.Executor;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeoutException;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
@ElementTypesAreNonnullByDefault
|
|
/* loaded from: classes3.dex */
|
|
public abstract class AbstractExecutionThreadService implements Service {
|
|
private static final Logger logger = Logger.getLogger(AbstractExecutionThreadService.class.getName());
|
|
private final Service delegate = new AbstractService() { // from class: com.google.common.util.concurrent.AbstractExecutionThreadService.1
|
|
@Override // com.google.common.util.concurrent.AbstractService
|
|
protected final void doStart() {
|
|
MoreExecutors.renamingDecorator(AbstractExecutionThreadService.this.executor(), new Supplier<String>() { // from class: com.google.common.util.concurrent.AbstractExecutionThreadService.1.1
|
|
@Override // com.google.common.base.Supplier
|
|
public String get() {
|
|
return AbstractExecutionThreadService.this.serviceName();
|
|
}
|
|
}).execute(new Runnable() { // from class: com.google.common.util.concurrent.AbstractExecutionThreadService.1.2
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
try {
|
|
AbstractExecutionThreadService.this.startUp();
|
|
notifyStarted();
|
|
if (isRunning()) {
|
|
try {
|
|
AbstractExecutionThreadService.this.run();
|
|
} catch (Throwable th) {
|
|
try {
|
|
AbstractExecutionThreadService.this.shutDown();
|
|
} catch (Exception e) {
|
|
AbstractExecutionThreadService.logger.log(Level.WARNING, "Error while attempting to shut down the service after failure.", (Throwable) e);
|
|
}
|
|
notifyFailed(th);
|
|
return;
|
|
}
|
|
}
|
|
AbstractExecutionThreadService.this.shutDown();
|
|
notifyStopped();
|
|
} catch (Throwable th2) {
|
|
notifyFailed(th2);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override // com.google.common.util.concurrent.AbstractService
|
|
protected void doStop() {
|
|
AbstractExecutionThreadService.this.triggerShutdown();
|
|
}
|
|
|
|
@Override // com.google.common.util.concurrent.AbstractService
|
|
public String toString() {
|
|
return AbstractExecutionThreadService.this.toString();
|
|
}
|
|
};
|
|
|
|
protected abstract void run() throws Exception;
|
|
|
|
protected void shutDown() throws Exception {
|
|
}
|
|
|
|
protected void startUp() throws Exception {
|
|
}
|
|
|
|
protected void triggerShutdown() {
|
|
}
|
|
|
|
protected AbstractExecutionThreadService() {
|
|
}
|
|
|
|
protected Executor executor() {
|
|
return new Executor() { // from class: com.google.common.util.concurrent.AbstractExecutionThreadService.2
|
|
@Override // java.util.concurrent.Executor
|
|
public void execute(Runnable runnable) {
|
|
MoreExecutors.newThread(AbstractExecutionThreadService.this.serviceName(), runnable).start();
|
|
}
|
|
};
|
|
}
|
|
|
|
public String toString() {
|
|
String serviceName = serviceName();
|
|
String valueOf = String.valueOf(state());
|
|
return new StringBuilder(String.valueOf(serviceName).length() + 3 + String.valueOf(valueOf).length()).append(serviceName).append(" [").append(valueOf).append("]").toString();
|
|
}
|
|
|
|
@Override // com.google.common.util.concurrent.Service
|
|
public final boolean isRunning() {
|
|
return this.delegate.isRunning();
|
|
}
|
|
|
|
@Override // com.google.common.util.concurrent.Service
|
|
public final Service.State state() {
|
|
return this.delegate.state();
|
|
}
|
|
|
|
@Override // com.google.common.util.concurrent.Service
|
|
public final void addListener(Service.Listener listener, Executor executor) {
|
|
this.delegate.addListener(listener, executor);
|
|
}
|
|
|
|
@Override // com.google.common.util.concurrent.Service
|
|
public final Throwable failureCause() {
|
|
return this.delegate.failureCause();
|
|
}
|
|
|
|
@Override // com.google.common.util.concurrent.Service
|
|
public final Service startAsync() {
|
|
this.delegate.startAsync();
|
|
return this;
|
|
}
|
|
|
|
@Override // com.google.common.util.concurrent.Service
|
|
public final Service stopAsync() {
|
|
this.delegate.stopAsync();
|
|
return this;
|
|
}
|
|
|
|
@Override // com.google.common.util.concurrent.Service
|
|
public final void awaitRunning() {
|
|
this.delegate.awaitRunning();
|
|
}
|
|
|
|
@Override // com.google.common.util.concurrent.Service
|
|
public final void awaitRunning(long j, TimeUnit timeUnit) throws TimeoutException {
|
|
this.delegate.awaitRunning(j, timeUnit);
|
|
}
|
|
|
|
@Override // com.google.common.util.concurrent.Service
|
|
public final void awaitTerminated() {
|
|
this.delegate.awaitTerminated();
|
|
}
|
|
|
|
@Override // com.google.common.util.concurrent.Service
|
|
public final void awaitTerminated(long j, TimeUnit timeUnit) throws TimeoutException {
|
|
this.delegate.awaitTerminated(j, timeUnit);
|
|
}
|
|
|
|
protected String serviceName() {
|
|
return getClass().getSimpleName();
|
|
}
|
|
}
|