public final class com.google.common.util.concurrent.ServiceManager extends java.lang.Object implements com.google.common.util.concurrent.ServiceManagerBridge
{
private static final java.util.logging.Logger logger;
private static final com.google.common.util.concurrent.ListenerCallQueue$Event HEALTHY_EVENT;
private static final com.google.common.util.concurrent.ListenerCallQueue$Event STOPPED_EVENT;
private final com.google.common.util.concurrent.ServiceManager$ServiceManagerState state;
private final com.google.common.collect.ImmutableList services;
public void <init>(java.lang.Iterable)
{
com.google.common.util.concurrent.ServiceManager v;
java.lang.Iterable v;
java.util.logging.Level v;
com.google.common.util.concurrent.Service$State v, v;
com.google.common.util.concurrent.ServiceManager$NoOpService v;
com.google.common.collect.ImmutableList v;
com.google.common.util.concurrent.ServiceManager$ServiceListener v;
java.lang.ref.WeakReference v;
boolean v, v, v;
java.util.concurrent.Executor v;
java.util.logging.Logger v;
com.google.common.util.concurrent.ServiceManager$EmptyServiceManagerWarning v;
com.google.common.util.concurrent.ServiceManager$ServiceManagerState v, v, v;
java.lang.Object v;
com.google.common.collect.UnmodifiableIterator v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v := @parameter: java.lang.Iterable;
specialinvoke v.<java.lang.Object: void <init>()>();
v = staticinvoke <com.google.common.collect.ImmutableList: com.google.common.collect.ImmutableList copyOf(java.lang.Iterable)>(v);
v = virtualinvoke v.<com.google.common.collect.ImmutableList: boolean isEmpty()>();
if v == 0 goto label;
v = <com.google.common.util.concurrent.ServiceManager: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level WARNING>;
v = new com.google.common.util.concurrent.ServiceManager$EmptyServiceManagerWarning;
specialinvoke v.<com.google.common.util.concurrent.ServiceManager$EmptyServiceManagerWarning: void <init>()>();
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Throwable)>(v, "ServiceManager configured with no services.  Is your application configured properly?", v);
v = new com.google.common.util.concurrent.ServiceManager$NoOpService;
specialinvoke v.<com.google.common.util.concurrent.ServiceManager$NoOpService: void <init>()>();
v = staticinvoke <com.google.common.collect.ImmutableList: com.google.common.collect.ImmutableList of(java.lang.Object)>(v);
label:
v = new com.google.common.util.concurrent.ServiceManager$ServiceManagerState;
specialinvoke v.<com.google.common.util.concurrent.ServiceManager$ServiceManagerState: void <init>(com.google.common.collect.ImmutableCollection)>(v);
v.<com.google.common.util.concurrent.ServiceManager: com.google.common.util.concurrent.ServiceManager$ServiceManagerState state> = v;
v.<com.google.common.util.concurrent.ServiceManager: com.google.common.collect.ImmutableList services> = v;
v = new java.lang.ref.WeakReference;
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.util.concurrent.ServiceManager$ServiceManagerState state>;
specialinvoke v.<java.lang.ref.WeakReference: void <init>(java.lang.Object)>(v);
v = virtualinvoke v.<com.google.common.collect.ImmutableList: com.google.common.collect.UnmodifiableIterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = new com.google.common.util.concurrent.ServiceManager$ServiceListener;
specialinvoke v.<com.google.common.util.concurrent.ServiceManager$ServiceListener: void <init>(com.google.common.util.concurrent.Service,java.lang.ref.WeakReference)>(v, v);
v = staticinvoke <com.google.common.util.concurrent.MoreExecutors: java.util.concurrent.Executor directExecutor()>();
interfaceinvoke v.<com.google.common.util.concurrent.Service: void addListener(com.google.common.util.concurrent.Service$Listener,java.util.concurrent.Executor)>(v, v);
v = interfaceinvoke v.<com.google.common.util.concurrent.Service: com.google.common.util.concurrent.Service$State state()>();
v = <com.google.common.util.concurrent.Service$State: com.google.common.util.concurrent.Service$State NEW>;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object)>(v, "Can only manage NEW services, %s", v);
goto label;
label:
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.util.concurrent.ServiceManager$ServiceManagerState state>;
virtualinvoke v.<com.google.common.util.concurrent.ServiceManager$ServiceManagerState: void markReady()>();
return;
}
public void addListener(com.google.common.util.concurrent.ServiceManager$Listener, java.util.concurrent.Executor)
{
java.util.concurrent.Executor v;
com.google.common.util.concurrent.ServiceManager v;
com.google.common.util.concurrent.ServiceManager$ServiceManagerState v;
com.google.common.util.concurrent.ServiceManager$Listener v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v := @parameter: com.google.common.util.concurrent.ServiceManager$Listener;
v := @parameter: java.util.concurrent.Executor;
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.util.concurrent.ServiceManager$ServiceManagerState state>;
virtualinvoke v.<com.google.common.util.concurrent.ServiceManager$ServiceManagerState: void addListener(com.google.common.util.concurrent.ServiceManager$Listener,java.util.concurrent.Executor)>(v, v);
return;
}
public com.google.common.util.concurrent.ServiceManager startAsync()
{
java.lang.IllegalStateException v;
com.google.common.util.concurrent.ServiceManager v;
java.util.logging.Level v;
com.google.common.util.concurrent.Service$State v, v;
com.google.common.collect.ImmutableList v, v;
int v, v;
java.lang.String v, v, v;
boolean v, v, v;
java.util.logging.Logger v;
com.google.common.util.concurrent.ServiceManager$ServiceManagerState v;
java.lang.Object v, v;
java.lang.StringBuilder v;
com.google.common.collect.UnmodifiableIterator v, v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.collect.ImmutableList services>;
v = virtualinvoke v.<com.google.common.collect.ImmutableList: com.google.common.collect.UnmodifiableIterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<com.google.common.util.concurrent.Service: com.google.common.util.concurrent.Service$State state()>();
v = <com.google.common.util.concurrent.Service$State: com.google.common.util.concurrent.Service$State NEW>;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean,java.lang.String,java.lang.Object,java.lang.Object)>(v, "Service %s is %s, cannot start it.", v, v);
goto label;
label:
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.collect.ImmutableList services>;
v = virtualinvoke v.<com.google.common.collect.ImmutableList: com.google.common.collect.UnmodifiableIterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
label:
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.util.concurrent.ServiceManager$ServiceManagerState state>;
virtualinvoke v.<com.google.common.util.concurrent.ServiceManager$ServiceManagerState: void tryStartTiming(com.google.common.util.concurrent.Service)>(v);
interfaceinvoke v.<com.google.common.util.concurrent.Service: com.google.common.util.concurrent.Service startAsync()>();
label:
goto label;
label:
v := @caughtexception;
v = <com.google.common.util.concurrent.ServiceManager: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level WARNING>;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = 24 + v;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Unable to start Service \u0001");
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Throwable)>(v, v, v);
goto label;
label:
return v;
catch java.lang.IllegalStateException from label to label with label;
}
public void awaitHealthy()
{
com.google.common.util.concurrent.ServiceManager$ServiceManagerState v;
com.google.common.util.concurrent.ServiceManager v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.util.concurrent.ServiceManager$ServiceManagerState state>;
virtualinvoke v.<com.google.common.util.concurrent.ServiceManager$ServiceManagerState: void awaitHealthy()>();
return;
}
public void awaitHealthy(java.time.Duration) throws java.util.concurrent.TimeoutException
{
java.util.concurrent.TimeUnit v;
com.google.common.util.concurrent.ServiceManager v;
java.time.Duration v;
long v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v := @parameter: java.time.Duration;
v = staticinvoke <com.google.common.util.concurrent.Internal: long toNanosSaturated(java.time.Duration)>(v);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
virtualinvoke v.<com.google.common.util.concurrent.ServiceManager: void awaitHealthy(long,java.util.concurrent.TimeUnit)>(v, v);
return;
}
public void awaitHealthy(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.TimeoutException
{
java.util.concurrent.TimeUnit v;
com.google.common.util.concurrent.ServiceManager v;
com.google.common.util.concurrent.ServiceManager$ServiceManagerState v;
long v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.util.concurrent.ServiceManager$ServiceManagerState state>;
virtualinvoke v.<com.google.common.util.concurrent.ServiceManager$ServiceManagerState: void awaitHealthy(long,java.util.concurrent.TimeUnit)>(v, v);
return;
}
public com.google.common.util.concurrent.ServiceManager stopAsync()
{
com.google.common.collect.ImmutableList v;
com.google.common.util.concurrent.ServiceManager v;
java.lang.Object v;
com.google.common.collect.UnmodifiableIterator v;
boolean v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.collect.ImmutableList services>;
v = virtualinvoke v.<com.google.common.collect.ImmutableList: com.google.common.collect.UnmodifiableIterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
interfaceinvoke v.<com.google.common.util.concurrent.Service: com.google.common.util.concurrent.Service stopAsync()>();
goto label;
label:
return v;
}
public void awaitStopped()
{
com.google.common.util.concurrent.ServiceManager$ServiceManagerState v;
com.google.common.util.concurrent.ServiceManager v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.util.concurrent.ServiceManager$ServiceManagerState state>;
virtualinvoke v.<com.google.common.util.concurrent.ServiceManager$ServiceManagerState: void awaitStopped()>();
return;
}
public void awaitStopped(java.time.Duration) throws java.util.concurrent.TimeoutException
{
java.util.concurrent.TimeUnit v;
com.google.common.util.concurrent.ServiceManager v;
java.time.Duration v;
long v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v := @parameter: java.time.Duration;
v = staticinvoke <com.google.common.util.concurrent.Internal: long toNanosSaturated(java.time.Duration)>(v);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
virtualinvoke v.<com.google.common.util.concurrent.ServiceManager: void awaitStopped(long,java.util.concurrent.TimeUnit)>(v, v);
return;
}
public void awaitStopped(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.TimeoutException
{
java.util.concurrent.TimeUnit v;
com.google.common.util.concurrent.ServiceManager v;
com.google.common.util.concurrent.ServiceManager$ServiceManagerState v;
long v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.util.concurrent.ServiceManager$ServiceManagerState state>;
virtualinvoke v.<com.google.common.util.concurrent.ServiceManager$ServiceManagerState: void awaitStopped(long,java.util.concurrent.TimeUnit)>(v, v);
return;
}
public boolean isHealthy()
{
com.google.common.collect.ImmutableList v;
com.google.common.util.concurrent.ServiceManager v;
java.lang.Object v;
com.google.common.collect.UnmodifiableIterator v;
boolean v, v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.collect.ImmutableList services>;
v = virtualinvoke v.<com.google.common.collect.ImmutableList: com.google.common.collect.UnmodifiableIterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<com.google.common.util.concurrent.Service: boolean isRunning()>();
if v != 0 goto label;
return 0;
label:
return 1;
}
public com.google.common.collect.ImmutableSetMultimap servicesByState()
{
com.google.common.util.concurrent.ServiceManager$ServiceManagerState v;
com.google.common.util.concurrent.ServiceManager v;
com.google.common.collect.ImmutableSetMultimap v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.util.concurrent.ServiceManager$ServiceManagerState state>;
v = virtualinvoke v.<com.google.common.util.concurrent.ServiceManager$ServiceManagerState: com.google.common.collect.ImmutableSetMultimap servicesByState()>();
return v;
}
public com.google.common.collect.ImmutableMap startupTimes()
{
com.google.common.util.concurrent.ServiceManager$ServiceManagerState v;
com.google.common.collect.ImmutableMap v;
com.google.common.util.concurrent.ServiceManager v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.util.concurrent.ServiceManager$ServiceManagerState state>;
v = virtualinvoke v.<com.google.common.util.concurrent.ServiceManager$ServiceManagerState: com.google.common.collect.ImmutableMap startupTimes()>();
return v;
}
public com.google.common.collect.ImmutableMap startupDurations()
{
com.google.common.base.Function v;
com.google.common.collect.ImmutableMap v, v;
com.google.common.util.concurrent.ServiceManager v;
java.util.Map v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v = virtualinvoke v.<com.google.common.util.concurrent.ServiceManager: com.google.common.collect.ImmutableMap startupTimes()>();
v = staticinvoke <com.google.common.util.concurrent.ServiceManager$ofMillis__262: com.google.common.base.Function bootstrap$()>();
v = staticinvoke <com.google.common.collect.Maps: java.util.Map transformValues(java.util.Map,com.google.common.base.Function)>(v, v);
v = staticinvoke <com.google.common.collect.ImmutableMap: com.google.common.collect.ImmutableMap copyOf(java.util.Map)>(v);
return v;
}
public java.lang.String toString()
{
com.google.common.util.concurrent.ServiceManager v;
java.util.Collection v;
com.google.common.base.MoreObjects$ToStringHelper v, v;
com.google.common.collect.ImmutableList v;
com.google.common.base.Predicate v, v;
java.lang.String v;
v := @this: com.google.common.util.concurrent.ServiceManager;
v = staticinvoke <com.google.common.base.MoreObjects: com.google.common.base.MoreObjects$ToStringHelper toStringHelper(java.lang.Class)>(class "Lcom/google/common/util/concurrent/ServiceManager;");
v = v.<com.google.common.util.concurrent.ServiceManager: com.google.common.collect.ImmutableList services>;
v = staticinvoke <com.google.common.base.Predicates: com.google.common.base.Predicate instanceOf(java.lang.Class)>(class "Lcom/google/common/util/concurrent/ServiceManager$NoOpService;");
v = staticinvoke <com.google.common.base.Predicates: com.google.common.base.Predicate not(com.google.common.base.Predicate)>(v);
v = staticinvoke <com.google.common.collect.Collections2: java.util.Collection filter(java.util.Collection,com.google.common.base.Predicate)>(v, v);
v = virtualinvoke v.<com.google.common.base.MoreObjects$ToStringHelper: com.google.common.base.MoreObjects$ToStringHelper add(java.lang.String,java.lang.Object)>("services", v);
v = virtualinvoke v.<com.google.common.base.MoreObjects$ToStringHelper: java.lang.String toString()>();
return v;
}
static void <clinit>()
{
com.google.common.util.concurrent.ServiceManager$1 v;
java.lang.Class v;
java.lang.String v;
java.util.logging.Logger v;
com.google.common.util.concurrent.ServiceManager$2 v;
v = class "Lcom/google/common/util/concurrent/ServiceManager;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = staticinvoke <java.util.logging.Logger: java.util.logging.Logger getLogger(java.lang.String)>(v);
<com.google.common.util.concurrent.ServiceManager: java.util.logging.Logger logger> = v;
v = new com.google.common.util.concurrent.ServiceManager$1;
specialinvoke v.<com.google.common.util.concurrent.ServiceManager$1: void <init>()>();
<com.google.common.util.concurrent.ServiceManager: com.google.common.util.concurrent.ListenerCallQueue$Event HEALTHY_EVENT> = v;
v = new com.google.common.util.concurrent.ServiceManager$2;
specialinvoke v.<com.google.common.util.concurrent.ServiceManager$2: void <init>()>();
<com.google.common.util.concurrent.ServiceManager: com.google.common.util.concurrent.ListenerCallQueue$Event STOPPED_EVENT> = v;
return;
}
}