public class io.smallrye.stork.api.Service extends java.lang.Object
{
private final java.util.concurrent.Semaphore instanceSelectionLock;
private final io.smallrye.stork.api.LoadBalancer loadBalancer;
private final io.smallrye.stork.api.ServiceDiscovery serviceDiscovery;
private final java.lang.String serviceName;
public void <init>(java.lang.String, io.smallrye.stork.api.LoadBalancer, io.smallrye.stork.api.ServiceDiscovery, boolean)
{
io.smallrye.stork.api.LoadBalancer v;
io.smallrye.stork.api.Service v;
java.util.concurrent.Semaphore v;
java.lang.String v;
boolean v;
io.smallrye.stork.api.ServiceDiscovery v;
v := @this: io.smallrye.stork.api.Service;
v := @parameter: java.lang.String;
v := @parameter: io.smallrye.stork.api.LoadBalancer;
v := @parameter: io.smallrye.stork.api.ServiceDiscovery;
v := @parameter: boolean;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<io.smallrye.stork.api.Service: io.smallrye.stork.api.LoadBalancer loadBalancer> = v;
v.<io.smallrye.stork.api.Service: io.smallrye.stork.api.ServiceDiscovery serviceDiscovery> = v;
v.<io.smallrye.stork.api.Service: java.lang.String serviceName> = v;
if v == 0 goto label;
v = new java.util.concurrent.Semaphore;
specialinvoke v.<java.util.concurrent.Semaphore: void <init>(int)>(1);
goto label;
label:
v = null;
label:
v.<io.smallrye.stork.api.Service: java.util.concurrent.Semaphore instanceSelectionLock> = v;
return;
}
public io.smallrye.mutiny.Uni selectInstance()
{
io.smallrye.stork.api.Service v;
java.util.function.Function v;
io.smallrye.mutiny.Uni v, v;
io.smallrye.stork.api.ServiceDiscovery v;
v := @this: io.smallrye.stork.api.Service;
v = v.<io.smallrye.stork.api.Service: io.smallrye.stork.api.ServiceDiscovery serviceDiscovery>;
v = interfaceinvoke v.<io.smallrye.stork.api.ServiceDiscovery: io.smallrye.mutiny.Uni getServiceInstances()>();
v = staticinvoke <io.smallrye.stork.api.Service$selectInstance__594: java.util.function.Function bootstrap$(io.smallrye.stork.api.Service)>(v);
v = interfaceinvoke v.<io.smallrye.mutiny.Uni: io.smallrye.mutiny.Uni map(java.util.function.Function)>(v);
return v;
}
public io.smallrye.stork.api.ServiceInstance selectInstance(java.util.Collection)
{
io.smallrye.stork.api.ServiceInstance v;
io.smallrye.stork.api.LoadBalancer v;
io.smallrye.stork.api.Service v;
java.util.Collection v;
v := @this: io.smallrye.stork.api.Service;
v := @parameter: java.util.Collection;
v = v.<io.smallrye.stork.api.Service: io.smallrye.stork.api.LoadBalancer loadBalancer>;
v = interfaceinvoke v.<io.smallrye.stork.api.LoadBalancer: io.smallrye.stork.api.ServiceInstance selectServiceInstance(java.util.Collection)>(v);
return v;
}
public io.smallrye.mutiny.Uni selectInstanceAndRecordStart(boolean)
{
io.smallrye.stork.api.Service v;
java.util.function.Function v;
boolean v;
io.smallrye.mutiny.Uni v, v;
io.smallrye.stork.api.ServiceDiscovery v;
v := @this: io.smallrye.stork.api.Service;
v := @parameter: boolean;
v = v.<io.smallrye.stork.api.Service: io.smallrye.stork.api.ServiceDiscovery serviceDiscovery>;
v = interfaceinvoke v.<io.smallrye.stork.api.ServiceDiscovery: io.smallrye.mutiny.Uni getServiceInstances()>();
v = staticinvoke <io.smallrye.stork.api.Service$lambda_selectInstanceAndRecordStart_0__595: java.util.function.Function bootstrap$(io.smallrye.stork.api.Service,boolean)>(v, v);
v = interfaceinvoke v.<io.smallrye.mutiny.Uni: io.smallrye.mutiny.Uni map(java.util.function.Function)>(v);
return v;
}
public io.smallrye.stork.api.ServiceInstance selectInstanceAndRecordStart(java.util.Collection, boolean)
{
java.lang.Throwable v;
io.smallrye.stork.api.LoadBalancer v, v;
io.smallrye.stork.api.Service v;
java.lang.Thread v;
boolean v, v, v;
java.util.concurrent.Semaphore v, v, v, v;
java.util.Collection v;
java.lang.RuntimeException v;
io.smallrye.stork.api.ServiceInstance v, v;
java.lang.InterruptedException v;
v := @this: io.smallrye.stork.api.Service;
v := @parameter: java.util.Collection;
v := @parameter: boolean;
v = v.<io.smallrye.stork.api.Service: java.util.concurrent.Semaphore instanceSelectionLock>;
if v != null goto label;
v = v.<io.smallrye.stork.api.Service: io.smallrye.stork.api.LoadBalancer loadBalancer>;
v = interfaceinvoke v.<io.smallrye.stork.api.LoadBalancer: io.smallrye.stork.api.ServiceInstance selectServiceInstance(java.util.Collection)>(v);
v = interfaceinvoke v.<io.smallrye.stork.api.ServiceInstance: boolean gatherStatistics()>();
if v == 0 goto label;
interfaceinvoke v.<io.smallrye.stork.api.ServiceInstance: void recordStart(boolean)>(v);
label:
return v;
label:
v = v.<io.smallrye.stork.api.Service: java.util.concurrent.Semaphore instanceSelectionLock>;
virtualinvoke v.<java.util.concurrent.Semaphore: void acquire()>();
label:
v = v.<io.smallrye.stork.api.Service: io.smallrye.stork.api.LoadBalancer loadBalancer>;
v = interfaceinvoke v.<io.smallrye.stork.api.LoadBalancer: io.smallrye.stork.api.ServiceInstance selectServiceInstance(java.util.Collection)>(v);
v = interfaceinvoke v.<io.smallrye.stork.api.ServiceInstance: boolean gatherStatistics()>();
if v == 0 goto label;
interfaceinvoke v.<io.smallrye.stork.api.ServiceInstance: void recordStart(boolean)>(v);
label:
v = v.<io.smallrye.stork.api.Service: java.util.concurrent.Semaphore instanceSelectionLock>;
virtualinvoke v.<java.util.concurrent.Semaphore: void release()>();
label:
return v;
label:
v := @caughtexception;
v = v.<io.smallrye.stork.api.Service: java.util.concurrent.Semaphore instanceSelectionLock>;
virtualinvoke v.<java.util.concurrent.Semaphore: void release()>();
throw v;
label:
v := @caughtexception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String,java.lang.Throwable)>("Failed to lock for ServiceInstance selection", v);
throw v;
catch java.lang.Throwable from label to label with label;
catch java.lang.InterruptedException from label to label with label;
}
public io.smallrye.mutiny.Uni getInstances()
{
io.smallrye.stork.api.Service v;
io.smallrye.mutiny.Uni v;
io.smallrye.stork.api.ServiceDiscovery v;
v := @this: io.smallrye.stork.api.Service;
v = v.<io.smallrye.stork.api.Service: io.smallrye.stork.api.ServiceDiscovery serviceDiscovery>;
v = interfaceinvoke v.<io.smallrye.stork.api.ServiceDiscovery: io.smallrye.mutiny.Uni getServiceInstances()>();
return v;
}
public io.smallrye.stork.api.LoadBalancer getLoadBalancer()
{
io.smallrye.stork.api.LoadBalancer v;
io.smallrye.stork.api.Service v;
v := @this: io.smallrye.stork.api.Service;
v = v.<io.smallrye.stork.api.Service: io.smallrye.stork.api.LoadBalancer loadBalancer>;
return v;
}
public io.smallrye.stork.api.ServiceDiscovery getServiceDiscovery()
{
io.smallrye.stork.api.Service v;
io.smallrye.stork.api.ServiceDiscovery v;
v := @this: io.smallrye.stork.api.Service;
v = v.<io.smallrye.stork.api.Service: io.smallrye.stork.api.ServiceDiscovery serviceDiscovery>;
return v;
}
public java.lang.String getServiceName()
{
java.lang.String v;
io.smallrye.stork.api.Service v;
v := @this: io.smallrye.stork.api.Service;
v = v.<io.smallrye.stork.api.Service: java.lang.String serviceName>;
return v;
}
}