public class com.codahale.metrics.health.AsyncHealthCheckDecorator extends com.codahale.metrics.health.HealthCheck implements java.lang.Runnable
{
private static final java.lang.String NO_RESULT_YET_MESSAGE;
private final com.codahale.metrics.health.HealthCheck healthCheck;
private final java.util.concurrent.ScheduledFuture future;
private final long healthyTtl;
private final com.codahale.metrics.Clock clock;
private volatile com.codahale.metrics.health.HealthCheck$Result result;
void <init>(com.codahale.metrics.health.HealthCheck, java.util.concurrent.ScheduledExecutorService, com.codahale.metrics.Clock)
{
java.util.concurrent.ScheduledFuture v, v;
byte v, v, v;
boolean v, v, v, v, v, v, v;
java.lang.'annotation'.Annotation v;
com.codahale.metrics.health.'annotation'.Async$ScheduleType v, v;
long v, v, v, v, v, v, v, v, v, v;
java.util.concurrent.ScheduledExecutorService v;
com.codahale.metrics.health.AsyncHealthCheckDecorator v;
com.codahale.metrics.Clock v;
com.codahale.metrics.health.HealthCheck v;
com.codahale.metrics.health.'annotation'.Async$InitialState v, v;
java.util.concurrent.TimeUnit v, v, v;
com.codahale.metrics.health.HealthCheck$Result v;
java.lang.Class v;
v := @this: com.codahale.metrics.health.AsyncHealthCheckDecorator;
v := @parameter: com.codahale.metrics.health.HealthCheck;
v := @parameter: java.util.concurrent.ScheduledExecutorService;
v := @parameter: com.codahale.metrics.Clock;
specialinvoke v.<com.codahale.metrics.health.HealthCheck: void <init>()>();
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.codahale.metrics.health.AsyncHealthCheckDecorator: void check(boolean,java.lang.String)>(v, "healthCheck cannot be null");
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.codahale.metrics.health.AsyncHealthCheckDecorator: void check(boolean,java.lang.String)>(v, "executorService cannot be null");
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.'annotation'.Annotation getAnnotation(java.lang.Class)>(class "Lcom/codahale/metrics/health/annotation/Async;");
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.codahale.metrics.health.AsyncHealthCheckDecorator: void check(boolean,java.lang.String)>(v, "healthCheck must contain Async annotation");
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: long period()>();
v = v cmp 0L;
if v <= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.codahale.metrics.health.AsyncHealthCheckDecorator: void check(boolean,java.lang.String)>(v, "period cannot be less than or equal to zero");
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: long initialDelay()>();
v = v cmp 0L;
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.codahale.metrics.health.AsyncHealthCheckDecorator: void check(boolean,java.lang.String)>(v, "initialDelay cannot be less than zero");
v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: com.codahale.metrics.Clock clock> = v;
v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: com.codahale.metrics.health.HealthCheck healthCheck> = v;
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: java.util.concurrent.TimeUnit unit()>();
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: long healthyTtl()>();
v = v cmp 0L;
if v > 0 goto label;
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: long period()>();
v = 2L * v;
goto label;
label:
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: long healthyTtl()>();
label:
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toMillis(long)>(v);
v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: long healthyTtl> = v;
v = <com.codahale.metrics.health.'annotation'.Async$InitialState: com.codahale.metrics.health.'annotation'.Async$InitialState HEALTHY>;
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: com.codahale.metrics.health.'annotation'.Async$InitialState initialState()>();
v = virtualinvoke v.<com.codahale.metrics.health.'annotation'.Async$InitialState: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = staticinvoke <com.codahale.metrics.health.HealthCheck$Result: com.codahale.metrics.health.HealthCheck$Result healthy(java.lang.String)>("Waiting for first asynchronous check result.");
goto label;
label:
v = staticinvoke <com.codahale.metrics.health.HealthCheck$Result: com.codahale.metrics.health.HealthCheck$Result unhealthy(java.lang.String)>("Waiting for first asynchronous check result.");
label:
v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: com.codahale.metrics.health.HealthCheck$Result result> = v;
v = <com.codahale.metrics.health.'annotation'.Async$ScheduleType: com.codahale.metrics.health.'annotation'.Async$ScheduleType FIXED_RATE>;
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: com.codahale.metrics.health.'annotation'.Async$ScheduleType scheduleType()>();
v = virtualinvoke v.<com.codahale.metrics.health.'annotation'.Async$ScheduleType: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: long initialDelay()>();
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: long period()>();
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: java.util.concurrent.TimeUnit unit()>();
v = interfaceinvoke v.<java.util.concurrent.ScheduledExecutorService: java.util.concurrent.ScheduledFuture scheduleAtFixedRate(java.lang.Runnable,long,long,java.util.concurrent.TimeUnit)>(v, v, v, v);
v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: java.util.concurrent.ScheduledFuture future> = v;
goto label;
label:
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: long initialDelay()>();
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: long period()>();
v = interfaceinvoke v.<com.codahale.metrics.health.'annotation'.Async: java.util.concurrent.TimeUnit unit()>();
v = interfaceinvoke v.<java.util.concurrent.ScheduledExecutorService: java.util.concurrent.ScheduledFuture scheduleWithFixedDelay(java.lang.Runnable,long,long,java.util.concurrent.TimeUnit)>(v, v, v, v);
v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: java.util.concurrent.ScheduledFuture future> = v;
label:
return;
}
void <init>(com.codahale.metrics.health.HealthCheck, java.util.concurrent.ScheduledExecutorService)
{
com.codahale.metrics.Clock v;
java.util.concurrent.ScheduledExecutorService v;
com.codahale.metrics.health.AsyncHealthCheckDecorator v;
com.codahale.metrics.health.HealthCheck v;
v := @this: com.codahale.metrics.health.AsyncHealthCheckDecorator;
v := @parameter: com.codahale.metrics.health.HealthCheck;
v := @parameter: java.util.concurrent.ScheduledExecutorService;
v = staticinvoke <com.codahale.metrics.Clock: com.codahale.metrics.Clock defaultClock()>();
specialinvoke v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: void <init>(com.codahale.metrics.health.HealthCheck,java.util.concurrent.ScheduledExecutorService,com.codahale.metrics.Clock)>(v, v, v);
return;
}
public void run()
{
com.codahale.metrics.health.AsyncHealthCheckDecorator v;
com.codahale.metrics.health.HealthCheck$Result v;
com.codahale.metrics.health.HealthCheck v;
v := @this: com.codahale.metrics.health.AsyncHealthCheckDecorator;
v = v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: com.codahale.metrics.health.HealthCheck healthCheck>;
v = virtualinvoke v.<com.codahale.metrics.health.HealthCheck: com.codahale.metrics.health.HealthCheck$Result execute()>();
v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: com.codahale.metrics.health.HealthCheck$Result result> = v;
return;
}
protected com.codahale.metrics.health.HealthCheck$Result check() throws java.lang.Exception
{
java.lang.Object[] v;
long v, v, v, v, v;
byte v;
java.lang.Long v;
com.codahale.metrics.health.AsyncHealthCheckDecorator v;
java.lang.String v;
boolean v;
com.codahale.metrics.Clock v, v;
com.codahale.metrics.health.HealthCheck$Result v, v, v, v;
com.codahale.metrics.health.HealthCheck$ResultBuilder v, v, v, v;
v := @this: com.codahale.metrics.health.AsyncHealthCheckDecorator;
v = v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: com.codahale.metrics.Clock clock>;
v = virtualinvoke v.<com.codahale.metrics.Clock: long getTime()>();
v = v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: com.codahale.metrics.health.HealthCheck$Result result>;
v = virtualinvoke v.<com.codahale.metrics.health.HealthCheck$Result: long getTime()>();
v = v - v;
v = v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: long healthyTtl>;
v = v - v;
v = v cmp 0L;
if v <= 0 goto label;
v = staticinvoke <com.codahale.metrics.health.HealthCheck$Result: com.codahale.metrics.health.HealthCheck$ResultBuilder builder()>();
v = virtualinvoke v.<com.codahale.metrics.health.HealthCheck$ResultBuilder: com.codahale.metrics.health.HealthCheck$ResultBuilder unhealthy()>();
v = v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: com.codahale.metrics.Clock clock>;
v = virtualinvoke v.<com.codahale.metrics.health.HealthCheck$ResultBuilder: com.codahale.metrics.health.HealthCheck$ResultBuilder usingClock(com.codahale.metrics.Clock)>(v);
v = newarray (java.lang.Object)[2];
v = v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: com.codahale.metrics.health.HealthCheck$Result result>;
v = virtualinvoke v.<com.codahale.metrics.health.HealthCheck$Result: boolean isHealthy()>();
if v == 0 goto label;
v = "healthy";
goto label;
label:
v = "unhealthy";
label:
v[0] = v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[1] = v;
v = virtualinvoke v.<com.codahale.metrics.health.HealthCheck$ResultBuilder: com.codahale.metrics.health.HealthCheck$ResultBuilder withMessage(java.lang.String,java.lang.Object[])>("Result was %s but it expired %d milliseconds ago", v);
v = virtualinvoke v.<com.codahale.metrics.health.HealthCheck$ResultBuilder: com.codahale.metrics.health.HealthCheck$Result build()>();
return v;
label:
v = v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: com.codahale.metrics.health.HealthCheck$Result result>;
return v;
}
boolean tearDown()
{
com.codahale.metrics.health.AsyncHealthCheckDecorator v;
java.util.concurrent.ScheduledFuture v;
boolean v;
v := @this: com.codahale.metrics.health.AsyncHealthCheckDecorator;
v = v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: java.util.concurrent.ScheduledFuture future>;
v = interfaceinvoke v.<java.util.concurrent.ScheduledFuture: boolean cancel(boolean)>(1);
return v;
}
public com.codahale.metrics.health.HealthCheck getHealthCheck()
{
com.codahale.metrics.health.AsyncHealthCheckDecorator v;
com.codahale.metrics.health.HealthCheck v;
v := @this: com.codahale.metrics.health.AsyncHealthCheckDecorator;
v = v.<com.codahale.metrics.health.AsyncHealthCheckDecorator: com.codahale.metrics.health.HealthCheck healthCheck>;
return v;
}
private static void check(boolean, java.lang.String)
{
java.lang.String v;
java.lang.IllegalArgumentException v;
boolean v;
v := @parameter: boolean;
v := @parameter: java.lang.String;
if v != 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
}