public class org.apache.kafkaesque.clients.NetworkClient extends java.lang.Object implements org.apache.kafkaesque.clients.KafkaClient
{
private final org.slf4j.Logger log;
private final org.apache.kafkaesque.common.network.Selectable selector;
private final org.apache.kafkaesque.clients.MetadataUpdater metadataUpdater;
private final java.util.Random randOffset;
private final org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates;
private final org.apache.kafkaesque.clients.InFlightRequests inFlightRequests;
private final int socketSendBuffer;
private final int socketReceiveBuffer;
private final java.lang.String clientId;
private int correlation;
private final int defaultRequestTimeoutMs;
private final long reconnectBackoffMs;
private final org.apache.kafkaesque.clients.ClientDnsLookup clientDnsLookup;
private final org.apache.kafkaesque.common.utils.Time time;
private final boolean discoverBrokerVersions;
private final org.apache.kafkaesque.clients.ApiVersions apiVersions;
private final java.util.Map nodesNeedingApiVersionsFetch;
private final java.util.List abortedSends;
private final org.apache.kafkaesque.common.metrics.Sensor throttleTimeSensor;
private final java.util.concurrent.atomic.AtomicReference state;
public void <init>(org.apache.kafkaesque.common.network.Selectable, org.apache.kafkaesque.clients.Metadata, java.lang.String, int, long, long, int, int, int, org.apache.kafkaesque.clients.ClientDnsLookup, org.apache.kafkaesque.common.utils.Time, boolean, org.apache.kafkaesque.clients.ApiVersions, org.apache.kafkaesque.common.utils.LogContext)
{
org.apache.kafkaesque.common.utils.LogContext v;
org.apache.kafkaesque.common.network.Selectable v;
long v, v;
org.apache.kafkaesque.clients.Metadata v;
int v, v, v, v;
org.apache.kafkaesque.common.utils.Time v;
java.lang.String v;
org.apache.kafkaesque.clients.ClientDnsLookup v;
org.apache.kafkaesque.clients.ApiVersions v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.network.Selectable;
v := @parameter: org.apache.kafkaesque.clients.Metadata;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: long;
v := @parameter: long;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: org.apache.kafkaesque.clients.ClientDnsLookup;
v := @parameter: org.apache.kafkaesque.common.utils.Time;
v := @parameter: boolean;
v := @parameter: org.apache.kafkaesque.clients.ApiVersions;
v := @parameter: org.apache.kafkaesque.common.utils.LogContext;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void <init>(org.apache.kafkaesque.clients.MetadataUpdater,org.apache.kafkaesque.clients.Metadata,org.apache.kafkaesque.common.network.Selectable,java.lang.String,int,long,long,int,int,int,org.apache.kafkaesque.clients.ClientDnsLookup,org.apache.kafkaesque.common.utils.Time,boolean,org.apache.kafkaesque.clients.ApiVersions,org.apache.kafkaesque.common.metrics.Sensor,org.apache.kafkaesque.common.utils.LogContext)>(null, v, v, v, v, v, v, v, v, v, v, v, v, v, null, v);
return;
}
public void <init>(org.apache.kafkaesque.common.network.Selectable, org.apache.kafkaesque.clients.Metadata, java.lang.String, int, long, long, int, int, int, org.apache.kafkaesque.clients.ClientDnsLookup, org.apache.kafkaesque.common.utils.Time, boolean, org.apache.kafkaesque.clients.ApiVersions, org.apache.kafkaesque.common.metrics.Sensor, org.apache.kafkaesque.common.utils.LogContext)
{
org.apache.kafkaesque.common.metrics.Sensor v;
org.apache.kafkaesque.common.utils.LogContext v;
org.apache.kafkaesque.common.network.Selectable v;
long v, v;
org.apache.kafkaesque.clients.Metadata v;
int v, v, v, v;
org.apache.kafkaesque.common.utils.Time v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
org.apache.kafkaesque.clients.ClientDnsLookup v;
org.apache.kafkaesque.clients.ApiVersions v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.network.Selectable;
v := @parameter: org.apache.kafkaesque.clients.Metadata;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: long;
v := @parameter: long;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: org.apache.kafkaesque.clients.ClientDnsLookup;
v := @parameter: org.apache.kafkaesque.common.utils.Time;
v := @parameter: boolean;
v := @parameter: org.apache.kafkaesque.clients.ApiVersions;
v := @parameter: org.apache.kafkaesque.common.metrics.Sensor;
v := @parameter: org.apache.kafkaesque.common.utils.LogContext;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void <init>(org.apache.kafkaesque.clients.MetadataUpdater,org.apache.kafkaesque.clients.Metadata,org.apache.kafkaesque.common.network.Selectable,java.lang.String,int,long,long,int,int,int,org.apache.kafkaesque.clients.ClientDnsLookup,org.apache.kafkaesque.common.utils.Time,boolean,org.apache.kafkaesque.clients.ApiVersions,org.apache.kafkaesque.common.metrics.Sensor,org.apache.kafkaesque.common.utils.LogContext)>(null, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v);
return;
}
public void <init>(org.apache.kafkaesque.common.network.Selectable, org.apache.kafkaesque.clients.MetadataUpdater, java.lang.String, int, long, long, int, int, int, org.apache.kafkaesque.clients.ClientDnsLookup, org.apache.kafkaesque.common.utils.Time, boolean, org.apache.kafkaesque.clients.ApiVersions, org.apache.kafkaesque.common.utils.LogContext)
{
org.apache.kafkaesque.common.utils.LogContext v;
org.apache.kafkaesque.common.network.Selectable v;
org.apache.kafkaesque.clients.MetadataUpdater v;
long v, v;
int v, v, v, v;
org.apache.kafkaesque.common.utils.Time v;
java.lang.String v;
org.apache.kafkaesque.clients.ClientDnsLookup v;
org.apache.kafkaesque.clients.ApiVersions v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.network.Selectable;
v := @parameter: org.apache.kafkaesque.clients.MetadataUpdater;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: long;
v := @parameter: long;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: org.apache.kafkaesque.clients.ClientDnsLookup;
v := @parameter: org.apache.kafkaesque.common.utils.Time;
v := @parameter: boolean;
v := @parameter: org.apache.kafkaesque.clients.ApiVersions;
v := @parameter: org.apache.kafkaesque.common.utils.LogContext;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void <init>(org.apache.kafkaesque.clients.MetadataUpdater,org.apache.kafkaesque.clients.Metadata,org.apache.kafkaesque.common.network.Selectable,java.lang.String,int,long,long,int,int,int,org.apache.kafkaesque.clients.ClientDnsLookup,org.apache.kafkaesque.common.utils.Time,boolean,org.apache.kafkaesque.clients.ApiVersions,org.apache.kafkaesque.common.metrics.Sensor,org.apache.kafkaesque.common.utils.LogContext)>(v, null, v, v, v, v, v, v, v, v, v, v, v, v, null, v);
return;
}
private void <init>(org.apache.kafkaesque.clients.MetadataUpdater, org.apache.kafkaesque.clients.Metadata, org.apache.kafkaesque.common.network.Selectable, java.lang.String, int, long, long, int, int, int, org.apache.kafkaesque.clients.ClientDnsLookup, org.apache.kafkaesque.common.utils.Time, boolean, org.apache.kafkaesque.clients.ApiVersions, org.apache.kafkaesque.common.metrics.Sensor, org.apache.kafkaesque.common.utils.LogContext)
{
org.apache.kafkaesque.common.metrics.Sensor v;
org.apache.kafkaesque.common.utils.LogContext v;
org.apache.kafkaesque.clients.NetworkClient$DefaultMetadataUpdater v;
org.apache.kafkaesque.common.network.Selectable v;
org.apache.kafkaesque.clients.MetadataUpdater v;
java.util.HashMap v;
java.util.Random v;
long v, v;
java.util.concurrent.atomic.AtomicReference v;
org.apache.kafkaesque.clients.Metadata v;
org.apache.kafkaesque.clients.InFlightRequests v;
int v, v, v, v;
org.apache.kafkaesque.common.utils.Time v;
java.lang.String v;
java.util.LinkedList v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
org.slf4j.Logger v;
java.lang.IllegalArgumentException v;
org.apache.kafkaesque.clients.ClusterConnectionStates v;
org.apache.kafkaesque.clients.ClientDnsLookup v;
org.apache.kafkaesque.clients.ApiVersions v;
org.apache.kafkaesque.clients.NetworkClient$State v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.clients.MetadataUpdater;
v := @parameter: org.apache.kafkaesque.clients.Metadata;
v := @parameter: org.apache.kafkaesque.common.network.Selectable;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: long;
v := @parameter: long;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: org.apache.kafkaesque.clients.ClientDnsLookup;
v := @parameter: org.apache.kafkaesque.common.utils.Time;
v := @parameter: boolean;
v := @parameter: org.apache.kafkaesque.clients.ApiVersions;
v := @parameter: org.apache.kafkaesque.common.metrics.Sensor;
v := @parameter: org.apache.kafkaesque.common.utils.LogContext;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v.<org.apache.kafkaesque.clients.NetworkClient: java.util.Map nodesNeedingApiVersionsFetch> = v;
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v.<org.apache.kafkaesque.clients.NetworkClient: java.util.List abortedSends> = v;
if v != null goto label;
if v != null goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("`metadata` must not be null");
throw v;
label:
v = new org.apache.kafkaesque.clients.NetworkClient$DefaultMetadataUpdater;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient$DefaultMetadataUpdater: void <init>(org.apache.kafkaesque.clients.NetworkClient,org.apache.kafkaesque.clients.Metadata)>(v, v);
v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.MetadataUpdater metadataUpdater> = v;
goto label;
label:
v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.MetadataUpdater metadataUpdater> = v;
label:
v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector> = v;
v.<org.apache.kafkaesque.clients.NetworkClient: java.lang.String clientId> = v;
v = new org.apache.kafkaesque.clients.InFlightRequests;
specialinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: void <init>(int)>(v);
v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests> = v;
v = new org.apache.kafkaesque.clients.ClusterConnectionStates;
specialinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: void <init>(long,long,org.apache.kafkaesque.common.utils.LogContext)>(v, v, v);
v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates> = v;
v.<org.apache.kafkaesque.clients.NetworkClient: int socketSendBuffer> = v;
v.<org.apache.kafkaesque.clients.NetworkClient: int socketReceiveBuffer> = v;
v.<org.apache.kafkaesque.clients.NetworkClient: int correlation> = 0;
v = new java.util.Random;
specialinvoke v.<java.util.Random: void <init>()>();
v.<org.apache.kafkaesque.clients.NetworkClient: java.util.Random randOffset> = v;
v.<org.apache.kafkaesque.clients.NetworkClient: int defaultRequestTimeoutMs> = v;
v.<org.apache.kafkaesque.clients.NetworkClient: long reconnectBackoffMs> = v;
v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.utils.Time time> = v;
v.<org.apache.kafkaesque.clients.NetworkClient: boolean discoverBrokerVersions> = v;
v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ApiVersions apiVersions> = v;
v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.metrics.Sensor throttleTimeSensor> = v;
v = virtualinvoke v.<org.apache.kafkaesque.common.utils.LogContext: org.slf4j.Logger logger(java.lang.Class)>(class "Lorg/apache/kafkaesque/clients/NetworkClient;");
v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log> = v;
v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClientDnsLookup clientDnsLookup> = v;
v = new java.util.concurrent.atomic.AtomicReference;
v = <org.apache.kafkaesque.clients.NetworkClient$State: org.apache.kafkaesque.clients.NetworkClient$State ACTIVE>;
specialinvoke v.<java.util.concurrent.atomic.AtomicReference: void <init>(java.lang.Object)>(v);
v.<org.apache.kafkaesque.clients.NetworkClient: java.util.concurrent.atomic.AtomicReference state> = v;
return;
}
public boolean ready(org.apache.kafkaesque.common.Node, long)
{
long v;
java.lang.IllegalArgumentException v;
org.apache.kafkaesque.common.Node v;
org.apache.kafkaesque.clients.ClusterConnectionStates v;
java.lang.String v, v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v, v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.Node;
v := @parameter: long;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: boolean isEmpty()>();
if v == 0 goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.kafkaesque.common.Node)>(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[])>("Cannot connect to empty node \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<org.apache.kafkaesque.clients.NetworkClient: boolean isReady(org.apache.kafkaesque.common.Node,long)>(v, v);
if v == 0 goto label;
return 1;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: java.lang.String idString()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: boolean canConnect(java.lang.String,long)>(v, v);
if v == 0 goto label;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void initiateConnect(org.apache.kafkaesque.common.Node,long)>(v, v);
label:
return 0;
}
boolean canConnect(org.apache.kafkaesque.common.Node, long)
{
org.apache.kafkaesque.common.Node v;
org.apache.kafkaesque.clients.ClusterConnectionStates v;
long v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.Node;
v := @parameter: long;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: java.lang.String idString()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: boolean canConnect(java.lang.String,long)>(v, v);
return v;
}
public void disconnect(java.lang.String)
{
org.slf4j.Logger v, v;
org.apache.kafkaesque.common.network.Selectable v;
long v;
java.util.List v;
org.apache.kafkaesque.clients.InFlightRequests v;
org.apache.kafkaesque.clients.ClusterConnectionStates v, v;
org.apache.kafkaesque.common.utils.Time v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.lang.String;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: boolean isDisconnected(java.lang.String)>(v);
if v == 0 goto label;
return;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: void close(java.lang.String)>(v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.utils.Time time>;
v = interfaceinvoke v.<org.apache.kafkaesque.common.utils.Time: long milliseconds()>();
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.List abortedSends>;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void cancelInFlightRequests(java.lang.String,long,java.util.Collection)>(v, v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: void disconnected(java.lang.String,long)>(v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object,java.lang.Object)>("Manually disconnected from {}. Aborted in-flight requests: {}.", v, v);
label:
return;
}
private void cancelInFlightRequests(java.lang.String, long, java.util.Collection)
{
java.lang.Object[] v;
org.apache.kafkaesque.clients.MetadataUpdater v;
long v;
org.apache.kafkaesque.common.protocol.ApiKeys v, v, v;
java.lang.Integer v;
java.lang.Iterable v;
org.apache.kafkaesque.common.requests.AbstractRequest v;
org.apache.kafkaesque.clients.InFlightRequests v;
int v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v;
org.slf4j.Logger v;
java.util.Iterator v;
java.util.Collection v;
org.apache.kafkaesque.clients.ClientResponse v;
org.apache.kafkaesque.common.requests.RequestHeader v, v, v;
java.util.Optional v;
java.lang.Object v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.lang.String;
v := @parameter: long;
v := @parameter: java.util.Collection;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: java.lang.Iterable clearAll(java.lang.String)>(v);
v = interfaceinvoke v.<java.lang.Iterable: java.util.Iterator 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 = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = newarray (java.lang.Object)[4];
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.common.requests.RequestHeader header>;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: org.apache.kafkaesque.common.protocol.ApiKeys apiKey()>();
v[0] = v;
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.common.requests.AbstractRequest request>;
v[1] = v;
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.common.requests.RequestHeader header>;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: int correlationId()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[2] = v;
v[3] = v;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object[])>("Cancelled request {} {} with correlation id {} due to node {} being disconnected", v);
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: boolean isInternalRequest>;
if v != 0 goto label;
if v == null goto label;
v = virtualinvoke v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.clients.ClientResponse disconnected(long,org.apache.kafkaesque.common.errors.AuthenticationException)>(v, null);
interfaceinvoke v.<java.util.Collection: boolean add(java.lang.Object)>(v);
goto label;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.common.requests.RequestHeader header>;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: org.apache.kafkaesque.common.protocol.ApiKeys apiKey()>();
v = <org.apache.kafkaesque.common.protocol.ApiKeys: org.apache.kafkaesque.common.protocol.ApiKeys METADATA>;
if v != v goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.MetadataUpdater metadataUpdater>;
v = staticinvoke <java.util.Optional: java.util.Optional empty()>();
interfaceinvoke v.<org.apache.kafkaesque.clients.MetadataUpdater: void handleFailedRequest(long,java.util.Optional)>(v, v);
goto label;
label:
return;
}
public void close(java.lang.String)
{
org.apache.kafkaesque.common.network.Selectable v;
org.apache.kafkaesque.clients.ClusterConnectionStates v;
long v;
org.apache.kafkaesque.common.utils.Time v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.lang.String;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: void close(java.lang.String)>(v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.utils.Time time>;
v = interfaceinvoke v.<org.apache.kafkaesque.common.utils.Time: long milliseconds()>();
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void cancelInFlightRequests(java.lang.String,long,java.util.Collection)>(v, v, null);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: void remove(java.lang.String)>(v);
return;
}
public long connectionDelay(org.apache.kafkaesque.common.Node, long)
{
org.apache.kafkaesque.common.Node v;
org.apache.kafkaesque.clients.ClusterConnectionStates v;
long v, v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.Node;
v := @parameter: long;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: java.lang.String idString()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: long connectionDelay(java.lang.String,long)>(v, v);
return v;
}
public long throttleDelayMs(org.apache.kafkaesque.common.Node, long)
{
org.apache.kafkaesque.common.Node v;
org.apache.kafkaesque.clients.ClusterConnectionStates v;
long v, v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.Node;
v := @parameter: long;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: java.lang.String idString()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: long throttleDelayMs(java.lang.String,long)>(v, v);
return v;
}
public long pollDelayMs(org.apache.kafkaesque.common.Node, long)
{
org.apache.kafkaesque.common.Node v;
org.apache.kafkaesque.clients.ClusterConnectionStates v;
long v, v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.Node;
v := @parameter: long;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: java.lang.String idString()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: long pollDelayMs(java.lang.String,long)>(v, v);
return v;
}
public boolean connectionFailed(org.apache.kafkaesque.common.Node)
{
org.apache.kafkaesque.common.Node v;
org.apache.kafkaesque.clients.ClusterConnectionStates v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.Node;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: java.lang.String idString()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: boolean isDisconnected(java.lang.String)>(v);
return v;
}
public org.apache.kafkaesque.common.errors.AuthenticationException authenticationException(org.apache.kafkaesque.common.Node)
{
org.apache.kafkaesque.common.Node v;
org.apache.kafkaesque.clients.ClusterConnectionStates v;
org.apache.kafkaesque.common.errors.AuthenticationException v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.Node;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: java.lang.String idString()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: org.apache.kafkaesque.common.errors.AuthenticationException authenticationException(java.lang.String)>(v);
return v;
}
public boolean isReady(org.apache.kafkaesque.common.Node, long)
{
org.apache.kafkaesque.clients.MetadataUpdater v;
long v;
org.apache.kafkaesque.common.Node v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v, v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.Node;
v := @parameter: long;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.MetadataUpdater metadataUpdater>;
v = interfaceinvoke v.<org.apache.kafkaesque.clients.MetadataUpdater: boolean isUpdateDue(long)>(v);
if v != 0 goto label;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: java.lang.String idString()>();
v = specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: boolean canSendRequest(java.lang.String,long)>(v, v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private boolean canSendRequest(java.lang.String, long)
{
org.apache.kafkaesque.common.network.Selectable v;
long v;
org.apache.kafkaesque.clients.InFlightRequests v;
org.apache.kafkaesque.clients.ClusterConnectionStates v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v, v, v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.lang.String;
v := @parameter: long;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: boolean isReady(java.lang.String,long)>(v, v);
if v == 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
v = interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: boolean isChannelReady(java.lang.String)>(v);
if v == 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: boolean canSendMore(java.lang.String)>(v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void send(org.apache.kafkaesque.clients.ClientRequest, long)
{
org.apache.kafkaesque.clients.ClientRequest v;
long v;
org.apache.kafkaesque.clients.NetworkClient v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.clients.ClientRequest;
v := @parameter: long;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void doSend(org.apache.kafkaesque.clients.ClientRequest,boolean,long)>(v, 0, v);
return;
}
void sendInternalMetadataRequest(org.apache.kafkaesque.common.requests.MetadataRequest$Builder, java.lang.String, long)
{
org.apache.kafkaesque.clients.ClientRequest v;
org.apache.kafkaesque.common.requests.MetadataRequest$Builder v;
long v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.requests.MetadataRequest$Builder;
v := @parameter: java.lang.String;
v := @parameter: long;
v = virtualinvoke v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClientRequest newClientRequest(java.lang.String,org.apache.kafkaesque.common.requests.AbstractRequest$Builder,long,boolean)>(v, v, v, 1);
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void doSend(org.apache.kafkaesque.clients.ClientRequest,boolean,long)>(v, 1, v);
return;
}
private void doSend(org.apache.kafkaesque.clients.ClientRequest, boolean, long)
{
java.lang.IllegalStateException v;
org.apache.kafkaesque.common.protocol.ApiKeys v, v, v, v;
java.lang.Integer v, v;
org.apache.kafkaesque.clients.ClientRequest v;
java.lang.Short v;
org.apache.kafkaesque.clients.NodeApiVersions v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v, v, v;
org.apache.kafkaesque.clients.ClientResponse v;
org.apache.kafkaesque.common.requests.AbstractRequest$Builder v;
java.util.List v;
java.util.Optional v;
org.apache.kafkaesque.clients.ApiVersions v;
java.lang.Object[] v, v;
org.apache.kafkaesque.clients.MetadataUpdater v;
org.apache.kafkaesque.clients.RequestCompletionHandler v;
long v;
org.apache.kafkaesque.common.requests.AbstractRequest v;
short v, v, v, v;
int v, v;
java.lang.String v, v, v, v;
org.slf4j.Logger v, v, v;
org.apache.kafkaesque.common.errors.UnsupportedVersionException v;
org.apache.kafkaesque.common.requests.RequestHeader v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.clients.ClientRequest;
v := @parameter: boolean;
v := @parameter: long;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void ensureActive()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: java.lang.String destination()>();
if v != 0 goto label;
v = specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: boolean canSendRequest(java.lang.String,long)>(v, v);
if v != 0 goto label;
v = new java.lang.IllegalStateException;
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[])>("Attempt to send a request to node \u which is not ready.");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: org.apache.kafkaesque.common.requests.AbstractRequest$Builder requestBuilder()>();
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ApiVersions apiVersions>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.ApiVersions: org.apache.kafkaesque.clients.NodeApiVersions get(java.lang.String)>(v);
if v != null goto label;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.AbstractRequest$Builder: short latestAllowedVersion()>();
v = v.<org.apache.kafkaesque.clients.NetworkClient: boolean discoverBrokerVersions>;
if v == 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = newarray (java.lang.Object)[4];
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: org.apache.kafkaesque.common.protocol.ApiKeys apiKey()>();
v[0] = v;
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: int correlationId()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[1] = v;
v[2] = v;
v = staticinvoke <java.lang.Short: java.lang.Short valueOf(short)>(v);
v[3] = v;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object[])>("No version information found when sending {} with correlation id {} to node {}. Assuming version {}.", v);
goto label;
label:
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: org.apache.kafkaesque.common.protocol.ApiKeys apiKey()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.AbstractRequest$Builder: short oldestAllowedVersion()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.AbstractRequest$Builder: short latestAllowedVersion()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.NodeApiVersions: short latestUsableVersion(org.apache.kafkaesque.common.protocol.ApiKeys,short,short)>(v, v, v);
label:
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.AbstractRequest$Builder: org.apache.kafkaesque.common.requests.AbstractRequest build(short)>(v);
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void doSend(org.apache.kafkaesque.clients.ClientRequest,boolean,long,org.apache.kafkaesque.common.requests.AbstractRequest)>(v, v, v, v);
label:
goto label;
label:
v := @caughtexception;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = newarray (java.lang.Object)[4];
v[0] = v;
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: int correlationId()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[1] = v;
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: java.lang.String destination()>();
v[2] = v;
v[3] = v;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object[])>("Version mismatch when attempting to send {} with correlation id {} to {}", v);
v = new org.apache.kafkaesque.clients.ClientResponse;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.AbstractRequest$Builder: short latestAllowedVersion()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: org.apache.kafkaesque.common.requests.RequestHeader makeHeader(short)>(v);
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: org.apache.kafkaesque.clients.RequestCompletionHandler callback()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: java.lang.String destination()>();
specialinvoke v.<org.apache.kafkaesque.clients.ClientResponse: void <init>(org.apache.kafkaesque.common.requests.RequestHeader,org.apache.kafkaesque.clients.RequestCompletionHandler,java.lang.String,long,long,boolean,org.apache.kafkaesque.common.errors.UnsupportedVersionException,org.apache.kafkaesque.common.errors.AuthenticationException,org.apache.kafkaesque.common.requests.AbstractResponse)>(v, v, v, v, v, 0, v, null, null);
if v != 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.List abortedSends>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: org.apache.kafkaesque.common.protocol.ApiKeys apiKey()>();
v = <org.apache.kafkaesque.common.protocol.ApiKeys: org.apache.kafkaesque.common.protocol.ApiKeys METADATA>;
if v != v goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.MetadataUpdater metadataUpdater>;
v = staticinvoke <java.util.Optional: java.util.Optional of(java.lang.Object)>(v);
interfaceinvoke v.<org.apache.kafkaesque.clients.MetadataUpdater: void handleFailedRequest(long,java.util.Optional)>(v, v);
label:
return;
catch org.apache.kafkaesque.common.errors.UnsupportedVersionException from label to label with label;
}
private void doSend(org.apache.kafkaesque.clients.ClientRequest, boolean, long, org.apache.kafkaesque.common.requests.AbstractRequest)
{
java.lang.Object[] v, v;
org.apache.kafkaesque.common.network.Selectable v;
long v;
org.apache.kafkaesque.common.protocol.ApiKeys v, v, v;
java.lang.Integer v, v;
org.apache.kafkaesque.common.requests.AbstractRequest v;
org.apache.kafkaesque.clients.ClientRequest v;
short v, v, v, v;
java.lang.Short v;
org.apache.kafkaesque.clients.InFlightRequests v;
int v, v;
org.apache.kafkaesque.clients.NetworkClient$InFlightRequest v;
org.apache.kafkaesque.common.network.Send v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v;
org.slf4j.Logger v, v, v;
org.apache.kafkaesque.common.requests.RequestHeader v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.clients.ClientRequest;
v := @parameter: boolean;
v := @parameter: long;
v := @parameter: org.apache.kafkaesque.common.requests.AbstractRequest;
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: java.lang.String destination()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.AbstractRequest: short version()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: org.apache.kafkaesque.common.requests.RequestHeader makeHeader(short)>(v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: org.apache.kafkaesque.common.protocol.ApiKeys apiKey()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.protocol.ApiKeys: short latestVersion()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: short apiVersion()>();
if v != v goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = newarray (java.lang.Object)[4];
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: org.apache.kafkaesque.common.protocol.ApiKeys apiKey()>();
v[0] = v;
v[1] = v;
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: int correlationId()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[2] = v;
v[3] = v;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object[])>("Sending {} {} with correlation id {} to node {}", v);
goto label;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = newarray (java.lang.Object)[5];
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: short apiVersion()>();
v = staticinvoke <java.lang.Short: java.lang.Short valueOf(short)>(v);
v[0] = v;
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: org.apache.kafkaesque.common.protocol.ApiKeys apiKey()>();
v[1] = v;
v[2] = v;
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClientRequest: int correlationId()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[3] = v;
v[4] = v;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object[])>("Using older server API v{} to send {} {} with correlation id {} to node {}", v);
label:
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.AbstractRequest: org.apache.kafkaesque.common.network.Send toSend(java.lang.String,org.apache.kafkaesque.common.requests.RequestHeader)>(v, v);
v = new org.apache.kafkaesque.clients.NetworkClient$InFlightRequest;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: void <init>(org.apache.kafkaesque.clients.ClientRequest,org.apache.kafkaesque.common.requests.RequestHeader,boolean,org.apache.kafkaesque.common.requests.AbstractRequest,org.apache.kafkaesque.common.network.Send,long)>(v, v, v, v, v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
virtualinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: void add(org.apache.kafkaesque.clients.NetworkClient$InFlightRequest)>(v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: void send(org.apache.kafkaesque.common.network.Send)>(v);
return;
}
public java.util.List poll(long, long)
{
org.apache.kafkaesque.common.network.Selectable v;
org.apache.kafkaesque.clients.MetadataUpdater v;
long v, v, v, v, v;
java.util.ArrayList v, v;
long[] v;
int v;
org.apache.kafkaesque.common.utils.Time v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
org.slf4j.Logger v;
java.io.IOException v;
java.util.List v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: long;
v := @parameter: long;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void ensureActive()>();
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.List abortedSends>;
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void handleAbortedSends(java.util.List)>(v);
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void completeResponses(java.util.List)>(v);
return v;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.MetadataUpdater metadataUpdater>;
v = interfaceinvoke v.<org.apache.kafkaesque.clients.MetadataUpdater: long maybeUpdate(long)>(v);
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
v = newarray (long)[2];
v[0] = v;
v = v.<org.apache.kafkaesque.clients.NetworkClient: int defaultRequestTimeoutMs>;
v[1] = v;
v = staticinvoke <org.apache.kafkaesque.common.utils.Utils: long min(long,long[])>(v, v);
interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: void poll(long)>(v);
label:
goto label;
label:
v := @caughtexception;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("Unexpected error during I/O", v);
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.utils.Time time>;
v = interfaceinvoke v.<org.apache.kafkaesque.common.utils.Time: long milliseconds()>();
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void handleCompletedSends(java.util.List,long)>(v, v);
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void handleCompletedReceives(java.util.List,long)>(v, v);
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void handleDisconnections(java.util.List,long)>(v, v);
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void handleConnections()>();
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void handleInitiateApiVersionRequests(long)>(v);
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void handleTimedOutRequests(java.util.List,long)>(v, v);
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void completeResponses(java.util.List)>(v);
return v;
catch java.io.IOException from label to label with label;
}
private void completeResponses(java.util.List)
{
java.util.List v;
org.slf4j.Logger v;
java.util.Iterator v;
java.lang.Object v;
org.apache.kafkaesque.clients.NetworkClient v;
java.lang.Exception v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.util.List;
v = interfaceinvoke v.<java.util.List: java.util.Iterator 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:
virtualinvoke v.<org.apache.kafkaesque.clients.ClientResponse: void onComplete()>();
label:
goto label;
label:
v := @caughtexception;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("Uncaught error in request completion:", v);
goto label;
label:
return;
catch java.lang.Exception from label to label with label;
}
public int inFlightRequestCount()
{
int v;
org.apache.kafkaesque.clients.NetworkClient v;
org.apache.kafkaesque.clients.InFlightRequests v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: int count()>();
return v;
}
public boolean hasInFlightRequests()
{
org.apache.kafkaesque.clients.InFlightRequests v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: boolean isEmpty()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public int inFlightRequestCount(java.lang.String)
{
org.apache.kafkaesque.clients.InFlightRequests v;
int v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.lang.String;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: int count(java.lang.String)>(v);
return v;
}
public boolean hasInFlightRequests(java.lang.String)
{
org.apache.kafkaesque.clients.InFlightRequests v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.lang.String;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: boolean isEmpty(java.lang.String)>(v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public boolean hasReadyNodes(long)
{
org.apache.kafkaesque.clients.ClusterConnectionStates v;
long v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: long;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: boolean hasReadyNodes(long)>(v);
return v;
}
public void wakeup()
{
org.apache.kafkaesque.clients.NetworkClient v;
org.apache.kafkaesque.common.network.Selectable v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: void wakeup()>();
return;
}
public void initiateClose()
{
org.apache.kafkaesque.clients.NetworkClient v;
org.apache.kafkaesque.clients.NetworkClient$State v, v;
java.util.concurrent.atomic.AtomicReference v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.concurrent.atomic.AtomicReference state>;
v = <org.apache.kafkaesque.clients.NetworkClient$State: org.apache.kafkaesque.clients.NetworkClient$State ACTIVE>;
v = <org.apache.kafkaesque.clients.NetworkClient$State: org.apache.kafkaesque.clients.NetworkClient$State CLOSING>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: boolean compareAndSet(java.lang.Object,java.lang.Object)>(v, v);
if v == 0 goto label;
virtualinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void wakeup()>();
label:
return;
}
public boolean active()
{
java.lang.Object v;
org.apache.kafkaesque.clients.NetworkClient v;
org.apache.kafkaesque.clients.NetworkClient$State v;
java.util.concurrent.atomic.AtomicReference v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.concurrent.atomic.AtomicReference state>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
v = <org.apache.kafkaesque.clients.NetworkClient$State: org.apache.kafkaesque.clients.NetworkClient$State ACTIVE>;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private void ensureActive()
{
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
java.util.concurrent.atomic.AtomicReference v;
org.apache.kafkaesque.common.errors.DisconnectException v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v = virtualinvoke v.<org.apache.kafkaesque.clients.NetworkClient: boolean active()>();
if v != 0 goto label;
v = new org.apache.kafkaesque.common.errors.DisconnectException;
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.concurrent.atomic.AtomicReference state>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.util.concurrent.atomic.AtomicReference)>(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[])>("NetworkClient is no longer active, state is \u0001");
specialinvoke v.<org.apache.kafkaesque.common.errors.DisconnectException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
public void close()
{
org.slf4j.Logger v;
org.apache.kafkaesque.common.network.Selectable v;
org.apache.kafkaesque.clients.MetadataUpdater v;
java.util.concurrent.atomic.AtomicReference v, v;
org.apache.kafkaesque.clients.NetworkClient v;
org.apache.kafkaesque.clients.NetworkClient$State v, v, v, v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.concurrent.atomic.AtomicReference state>;
v = <org.apache.kafkaesque.clients.NetworkClient$State: org.apache.kafkaesque.clients.NetworkClient$State ACTIVE>;
v = <org.apache.kafkaesque.clients.NetworkClient$State: org.apache.kafkaesque.clients.NetworkClient$State CLOSING>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: boolean compareAndSet(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.concurrent.atomic.AtomicReference state>;
v = <org.apache.kafkaesque.clients.NetworkClient$State: org.apache.kafkaesque.clients.NetworkClient$State CLOSING>;
v = <org.apache.kafkaesque.clients.NetworkClient$State: org.apache.kafkaesque.clients.NetworkClient$State CLOSED>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: boolean compareAndSet(java.lang.Object,java.lang.Object)>(v, v);
if v == 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: void close()>();
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.MetadataUpdater metadataUpdater>;
interfaceinvoke v.<org.apache.kafkaesque.clients.MetadataUpdater: void close()>();
goto label;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String)>("Attempting to close NetworkClient that has already been closed.");
label:
return;
}
public org.apache.kafkaesque.common.Node leastLoadedNode(long)
{
java.lang.IllegalStateException v;
java.util.Random v;
java.lang.Integer v;
org.apache.kafkaesque.clients.InFlightRequests v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v, v, v;
java.util.List v;
org.apache.kafkaesque.clients.ClusterConnectionStates v;
org.apache.kafkaesque.clients.MetadataUpdater v;
long v;
org.apache.kafkaesque.common.Node v, v, v;
int v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v;
org.slf4j.Logger v, v, v, v, v, v;
java.lang.Object v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: long;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.MetadataUpdater metadataUpdater>;
v = interfaceinvoke v.<org.apache.kafkaesque.clients.MetadataUpdater: java.util.List fetchNodes()>();
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v == 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("There are no nodes in the Kafka cluster");
throw v;
label:
v = 2147483647;
v = null;
v = null;
v = null;
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.Random randOffset>;
v = interfaceinvoke v.<java.util.List: int size()>();
v = virtualinvoke v.<java.util.Random: int nextInt(int)>(v);
v = 0;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
if v >= v goto label;
v = v + v;
v = interfaceinvoke v.<java.util.List: int size()>();
v = v % v;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: java.lang.String idString()>();
v = specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: boolean canSendRequest(java.lang.String,long)>(v, v);
if v == 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: java.lang.String idString()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: int count(java.lang.String)>(v);
if v != 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Found least loaded node {} connected with no in-flight requests", v);
return v;
label:
if v >= v goto label;
v = v;
v = v;
goto label;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: java.lang.String idString()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: boolean isPreparingConnection(java.lang.String)>(v);
if v == 0 goto label;
v = v;
goto label;
label:
v = virtualinvoke v.<org.apache.kafkaesque.clients.NetworkClient: boolean canConnect(org.apache.kafkaesque.common.Node,long)>(v, v);
if v == 0 goto label;
v = v;
goto label;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Removing node {} from least loaded node selection since it is neither ready for sending or connecting", v);
label:
v = v + 1;
goto label;
label:
if v == null goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object,java.lang.Object)>("Found least loaded node {} with {} inflight requests", v, v);
return v;
label:
if v == null goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Found least loaded connecting node {}", v);
return v;
label:
if v == null goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Found least loaded node {} with no active connection", v);
return v;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String)>("Least loaded node selection failed to find an available node");
return null;
}
public static org.apache.kafkaesque.common.requests.AbstractResponse parseResponse(java.nio.ByteBuffer, org.apache.kafkaesque.common.requests.RequestHeader)
{
org.apache.kafkaesque.common.requests.RequestHeader v;
org.apache.kafkaesque.common.protocol.ApiKeys v;
java.nio.BufferUnderflowException v;
java.nio.ByteBuffer v;
org.apache.kafkaesque.common.protocol.types.Struct v;
short v;
org.apache.kafkaesque.common.protocol.types.SchemaException v;
java.lang.String v;
org.apache.kafkaesque.common.requests.AbstractResponse v;
v := @parameter: java.nio.ByteBuffer;
v := @parameter: org.apache.kafkaesque.common.requests.RequestHeader;
label:
v = staticinvoke <org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.protocol.types.Struct parseStructMaybeUpdateThrottleTimeMetrics(java.nio.ByteBuffer,org.apache.kafkaesque.common.requests.RequestHeader,org.apache.kafkaesque.common.metrics.Sensor,long)>(v, v, null, 0L);
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: org.apache.kafkaesque.common.protocol.ApiKeys apiKey()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: short apiVersion()>();
v = staticinvoke <org.apache.kafkaesque.common.requests.AbstractResponse: org.apache.kafkaesque.common.requests.AbstractResponse parseResponse(org.apache.kafkaesque.common.protocol.ApiKeys,org.apache.kafkaesque.common.protocol.types.Struct,short)>(v, v, v);
label:
return v;
label:
v := @caughtexception;
v = new org.apache.kafkaesque.common.protocol.types.SchemaException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.kafkaesque.common.requests.RequestHeader)>(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[])>("Buffer underflow while parsing response for request with header \u0001");
specialinvoke v.<org.apache.kafkaesque.common.protocol.types.SchemaException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
catch java.nio.BufferUnderflowException from label to label with label;
}
private static org.apache.kafkaesque.common.protocol.types.Struct parseStructMaybeUpdateThrottleTimeMetrics(java.nio.ByteBuffer, org.apache.kafkaesque.common.requests.RequestHeader, org.apache.kafkaesque.common.metrics.Sensor, long)
{
org.apache.kafkaesque.common.metrics.Sensor v;
long v;
org.apache.kafkaesque.common.protocol.ApiKeys v, v;
java.lang.Integer v;
org.apache.kafkaesque.common.requests.ResponseHeader v;
java.nio.ByteBuffer v;
short v, v, v;
int v;
boolean v;
org.apache.kafkaesque.common.protocol.types.Field$Int v, v;
org.apache.kafkaesque.common.requests.RequestHeader v;
org.apache.kafkaesque.common.protocol.types.Struct v;
v := @parameter: java.nio.ByteBuffer;
v := @parameter: org.apache.kafkaesque.common.requests.RequestHeader;
v := @parameter: org.apache.kafkaesque.common.metrics.Sensor;
v := @parameter: long;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: org.apache.kafkaesque.common.protocol.ApiKeys apiKey()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: short apiVersion()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.protocol.ApiKeys: short responseHeaderVersion(short)>(v);
v = staticinvoke <org.apache.kafkaesque.common.requests.ResponseHeader: org.apache.kafkaesque.common.requests.ResponseHeader parse(java.nio.ByteBuffer,short)>(v, v);
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: org.apache.kafkaesque.common.protocol.ApiKeys apiKey()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: short apiVersion()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.protocol.ApiKeys: org.apache.kafkaesque.common.protocol.types.Struct parseResponse(short,java.nio.ByteBuffer)>(v, v);
staticinvoke <org.apache.kafkaesque.clients.NetworkClient: void correlate(org.apache.kafkaesque.common.requests.RequestHeader,org.apache.kafkaesque.common.requests.ResponseHeader)>(v, v);
if v == null goto label;
v = <org.apache.kafkaesque.common.protocol.CommonFields: org.apache.kafkaesque.common.protocol.types.Field$Int THROTTLE_TIME_MS>;
v = virtualinvoke v.<org.apache.kafkaesque.common.protocol.types.Struct: boolean hasField(org.apache.kafkaesque.common.protocol.types.Field)>(v);
if v == 0 goto label;
v = <org.apache.kafkaesque.common.protocol.CommonFields: org.apache.kafkaesque.common.protocol.types.Field$Int THROTTLE_TIME_MS>;
v = virtualinvoke v.<org.apache.kafkaesque.common.protocol.types.Struct: java.lang.Integer get(org.apache.kafkaesque.common.protocol.types.Field$Int)>(v);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
virtualinvoke v.<org.apache.kafkaesque.common.metrics.Sensor: void record(double,long)>(v, v);
label:
return v;
}
private void processDisconnection(java.util.List, java.lang.String, long, org.apache.kafkaesque.common.network.ChannelState)
{
java.lang.Object[] v;
org.apache.kafkaesque.clients.MetadataUpdater v;
long v;
org.apache.kafkaesque.common.network.ChannelState v;
int[] v;
java.util.Map v;
int v, v;
java.lang.String v, v, v, v, v;
org.apache.kafkaesque.clients.NetworkClient v;
org.slf4j.Logger v, v, v;
org.apache.kafkaesque.common.errors.AuthenticationException v, v;
java.util.List v;
java.util.Optional v;
org.apache.kafkaesque.clients.ClusterConnectionStates v, v;
org.apache.kafkaesque.common.network.ChannelState$State v;
org.apache.kafkaesque.clients.ApiVersions v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.util.List;
v := @parameter: java.lang.String;
v := @parameter: long;
v := @parameter: org.apache.kafkaesque.common.network.ChannelState;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: void disconnected(java.lang.String,long)>(v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ApiVersions apiVersions>;
virtualinvoke v.<org.apache.kafkaesque.clients.ApiVersions: void remove(java.lang.String)>(v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.Map nodesNeedingApiVersionsFetch>;
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
v = <org.apache.kafkaesque.clients.NetworkClient$1: int[] $SwitchMap$org$apache$kafka$common$network$ChannelState$State>;
v = virtualinvoke v.<org.apache.kafkaesque.common.network.ChannelState: org.apache.kafkaesque.common.network.ChannelState$State state()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.network.ChannelState$State: int ordinal()>();
v = v[v];
tableswitch(v)
{
case 1: goto label;
case 2: goto label;
case 3: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<org.apache.kafkaesque.common.network.ChannelState: org.apache.kafkaesque.common.errors.AuthenticationException exception()>();
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: void authenticationFailed(java.lang.String,long,org.apache.kafkaesque.common.errors.AuthenticationException)>(v, v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = newarray (java.lang.Object)[3];
v[0] = v;
v = virtualinvoke v.<org.apache.kafkaesque.common.network.ChannelState: java.lang.String remoteAddress()>();
v[1] = v;
v = virtualinvoke v.<org.apache.kafkaesque.common.errors.AuthenticationException: java.lang.String getMessage()>();
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object[])>("Connection to node {} ({}) failed authentication due to: {}", v);
goto label;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = virtualinvoke v.<org.apache.kafkaesque.common.network.ChannelState: java.lang.String remoteAddress()>();
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object)>("Connection to node {} ({}) terminated during authentication. This may happen due to any of the following reasons: (1) Authentication failed due to invalid credentials with brokers older than 1.0.0, (2) Firewall blocking Kafka TLS traffic (eg it may only allow HTTPS traffic), (3) Transient network issue.", v, v);
goto label;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = virtualinvoke v.<org.apache.kafkaesque.common.network.ChannelState: java.lang.String remoteAddress()>();
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object)>("Connection to node {} ({}) could not be established. Broker may not be available.", v, v);
label:
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void cancelInFlightRequests(java.lang.String,long,java.util.Collection)>(v, v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.MetadataUpdater metadataUpdater>;
v = virtualinvoke v.<org.apache.kafkaesque.common.network.ChannelState: org.apache.kafkaesque.common.errors.AuthenticationException exception()>();
v = staticinvoke <java.util.Optional: java.util.Optional ofNullable(java.lang.Object)>(v);
interfaceinvoke v.<org.apache.kafkaesque.clients.MetadataUpdater: void handleServerDisconnect(long,java.lang.String,java.util.Optional)>(v, v, v);
return;
}
private void handleTimedOutRequests(java.util.List, long)
{
org.slf4j.Logger v;
java.util.Iterator v;
org.apache.kafkaesque.common.network.Selectable v;
long v;
org.apache.kafkaesque.common.network.ChannelState v;
java.util.List v, v;
org.apache.kafkaesque.clients.InFlightRequests v;
java.lang.Object v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.util.List;
v := @parameter: long;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: java.util.List nodesWithTimedOutRequests(long)>(v);
v = interfaceinvoke v.<java.util.List: java.util.Iterator 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 = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: void close(java.lang.String)>(v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Disconnecting from node {} due to request timeout.", v);
v = <org.apache.kafkaesque.common.network.ChannelState: org.apache.kafkaesque.common.network.ChannelState LOCAL_CLOSE>;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void processDisconnection(java.util.List,java.lang.String,long,org.apache.kafkaesque.common.network.ChannelState)>(v, v, v, v);
goto label;
label:
return;
}
private void handleAbortedSends(java.util.List)
{
java.util.List v, v, v;
org.apache.kafkaesque.clients.NetworkClient v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.util.List;
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.List abortedSends>;
interfaceinvoke v.<java.util.List: boolean addAll(java.util.Collection)>(v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.List abortedSends>;
interfaceinvoke v.<java.util.List: void clear()>();
return;
}
private void handleCompletedSends(java.util.List, long)
{
java.util.Iterator v;
org.apache.kafkaesque.common.network.Selectable v;
org.apache.kafkaesque.clients.ClientResponse v;
long v;
java.util.List v, v;
org.apache.kafkaesque.clients.InFlightRequests v, v;
org.apache.kafkaesque.clients.NetworkClient$InFlightRequest v;
java.lang.Object v;
java.lang.String v, v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.util.List;
v := @parameter: long;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
v = interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: java.util.List completedSends()>();
v = interfaceinvoke v.<java.util.List: java.util.Iterator 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 = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
v = interfaceinvoke v.<org.apache.kafkaesque.common.network.Send: java.lang.String destination()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: org.apache.kafkaesque.clients.NetworkClient$InFlightRequest lastSent(java.lang.String)>(v);
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: boolean expectResponse>;
if v != 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
v = interfaceinvoke v.<org.apache.kafkaesque.common.network.Send: java.lang.String destination()>();
virtualinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: org.apache.kafkaesque.clients.NetworkClient$InFlightRequest completeLastSent(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.clients.ClientResponse completed(org.apache.kafkaesque.common.requests.AbstractResponse,long)>(null, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
return;
}
private void maybeThrottle(org.apache.kafkaesque.common.requests.AbstractResponse, short, java.lang.String, long)
{
java.lang.Object[] v;
org.slf4j.Logger v;
long v, v, v;
java.lang.Integer v;
short v;
java.lang.Long v;
int v;
org.apache.kafkaesque.clients.ClusterConnectionStates v;
java.lang.String v;
org.apache.kafkaesque.common.requests.AbstractResponse v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.requests.AbstractResponse;
v := @parameter: short;
v := @parameter: java.lang.String;
v := @parameter: long;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.AbstractResponse: int throttleTimeMs()>();
if v <= 0 goto label;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.AbstractResponse: boolean shouldClientThrottle(short)>(v);
if v == 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = v + v;
virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: void throttle(java.lang.String,long)>(v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = newarray (java.lang.Object)[3];
v[0] = v;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[1] = v;
v = v + v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object[])>("Connection to node {} is throttled for {} ms until timestamp {}", v);
label:
return;
}
private void handleCompletedReceives(java.util.List, long)
{
org.apache.kafkaesque.common.network.Selectable v;
org.apache.kafkaesque.common.protocol.ApiKeys v, v;
java.lang.Integer v;
java.nio.ByteBuffer v;
org.apache.kafkaesque.clients.InFlightRequests v;
org.apache.kafkaesque.clients.NetworkClient$InFlightRequest v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v, v, v, v, v;
java.util.Collection v;
org.apache.kafkaesque.clients.ClientResponse v;
java.util.List v;
org.apache.kafkaesque.common.metrics.Sensor v;
java.lang.Object[] v;
org.apache.kafkaesque.clients.MetadataUpdater v;
long v;
short v, v;
int v;
java.lang.String v, v, v;
org.slf4j.Logger v, v;
java.util.Iterator v;
org.apache.kafkaesque.common.requests.RequestHeader v, v, v, v, v, v, v;
org.apache.kafkaesque.common.protocol.types.Struct v;
java.lang.Object v;
org.apache.kafkaesque.common.requests.AbstractResponse v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.util.List;
v := @parameter: long;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
v = interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: java.util.Collection completedReceives()>();
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator 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 = virtualinvoke v.<org.apache.kafkaesque.common.network.NetworkReceive: java.lang.String source()>();
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: org.apache.kafkaesque.clients.NetworkClient$InFlightRequest completeNext(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.kafkaesque.common.network.NetworkReceive: java.nio.ByteBuffer payload()>();
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.common.requests.RequestHeader header>;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.metrics.Sensor throttleTimeSensor>;
v = staticinvoke <org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.protocol.types.Struct parseStructMaybeUpdateThrottleTimeMetrics(java.nio.ByteBuffer,org.apache.kafkaesque.common.requests.RequestHeader,org.apache.kafkaesque.common.metrics.Sensor,long)>(v, v, v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = newarray (java.lang.Object)[4];
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: java.lang.String destination>;
v[0] = v;
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.common.requests.RequestHeader header>;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: org.apache.kafkaesque.common.protocol.ApiKeys apiKey()>();
v[1] = v;
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.common.requests.RequestHeader header>;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: int correlationId()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[2] = v;
v[3] = v;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object[])>("Completed receive from node {} for {} with correlation id {}, received {}", v);
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.common.requests.RequestHeader header>;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: org.apache.kafkaesque.common.protocol.ApiKeys apiKey()>();
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.common.requests.RequestHeader header>;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: short apiVersion()>();
v = staticinvoke <org.apache.kafkaesque.common.requests.AbstractResponse: org.apache.kafkaesque.common.requests.AbstractResponse parseResponse(org.apache.kafkaesque.common.protocol.ApiKeys,org.apache.kafkaesque.common.protocol.types.Struct,short)>(v, v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.common.requests.RequestHeader header>;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: short apiVersion()>();
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: java.lang.String destination>;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void maybeThrottle(org.apache.kafkaesque.common.requests.AbstractResponse,short,java.lang.String,long)>(v, v, v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: boolean isInternalRequest>;
if v == 0 goto label;
v = v instanceof org.apache.kafkaesque.common.requests.MetadataResponse;
if v == 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.MetadataUpdater metadataUpdater>;
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.common.requests.RequestHeader header>;
interfaceinvoke v.<org.apache.kafkaesque.clients.MetadataUpdater: void handleSuccessfulResponse(org.apache.kafkaesque.common.requests.RequestHeader,long,org.apache.kafkaesque.common.requests.MetadataResponse)>(v, v, v);
goto label;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: boolean isInternalRequest>;
if v == 0 goto label;
v = v instanceof org.apache.kafkaesque.common.requests.ApiVersionsResponse;
if v == 0 goto label;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void handleApiVersionsResponse(java.util.List,org.apache.kafkaesque.clients.NetworkClient$InFlightRequest,long,org.apache.kafkaesque.common.requests.ApiVersionsResponse)>(v, v, v, v);
goto label;
label:
v = virtualinvoke v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.clients.ClientResponse completed(org.apache.kafkaesque.common.requests.AbstractResponse,long)>(v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
return;
}
private void handleApiVersionsResponse(java.util.List, org.apache.kafkaesque.clients.NetworkClient$InFlightRequest, long, org.apache.kafkaesque.common.requests.ApiVersionsResponse)
{
org.apache.kafkaesque.common.protocol.Errors v, v, v;
org.apache.kafkaesque.common.network.Selectable v;
org.apache.kafkaesque.common.protocol.ApiKeys v;
org.apache.kafkaesque.common.network.ChannelState v;
java.lang.Integer v;
org.apache.kafkaesque.common.requests.ApiVersionsResponse v;
org.apache.kafkaesque.common.requests.ApiVersionsRequest$Builder v;
java.util.Map v;
org.apache.kafkaesque.clients.NetworkClient$InFlightRequest v;
org.apache.kafkaesque.clients.NodeApiVersions v;
org.apache.kafkaesque.clients.NetworkClient v;
org.apache.kafkaesque.common.message.ApiVersionsResponseData v, v, v, v, v, v;
java.util.List v;
org.apache.kafkaesque.clients.ClusterConnectionStates v;
org.apache.kafkaesque.clients.ApiVersions v;
org.apache.kafkaesque.common.message.ApiVersionsResponseData$ApiVersionsResponseKey v;
java.lang.Object[] v;
org.apache.kafkaesque.common.message.ApiVersionsResponseData$ApiVersionsResponseKeyCollection v, v, v;
long v;
org.apache.kafkaesque.common.requests.AbstractRequest v;
short v, v, v, v, v, v, v, v;
int v, v;
java.lang.String v;
org.slf4j.Logger v, v;
org.apache.kafkaesque.common.requests.RequestHeader v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.util.List;
v := @parameter: org.apache.kafkaesque.clients.NetworkClient$InFlightRequest;
v := @parameter: long;
v := @parameter: org.apache.kafkaesque.common.requests.ApiVersionsResponse;
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: java.lang.String destination>;
v = v.<org.apache.kafkaesque.common.requests.ApiVersionsResponse: org.apache.kafkaesque.common.message.ApiVersionsResponseData data>;
v = virtualinvoke v.<org.apache.kafkaesque.common.message.ApiVersionsResponseData: short errorCode()>();
v = <org.apache.kafkaesque.common.protocol.Errors: org.apache.kafkaesque.common.protocol.Errors NONE>;
v = virtualinvoke v.<org.apache.kafkaesque.common.protocol.Errors: short code()>();
if v == v goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.common.requests.AbstractRequest request>;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.AbstractRequest: short version()>();
if v == 0 goto label;
v = v.<org.apache.kafkaesque.common.requests.ApiVersionsResponse: org.apache.kafkaesque.common.message.ApiVersionsResponseData data>;
v = virtualinvoke v.<org.apache.kafkaesque.common.message.ApiVersionsResponseData: short errorCode()>();
v = <org.apache.kafkaesque.common.protocol.Errors: org.apache.kafkaesque.common.protocol.Errors UNSUPPORTED_VERSION>;
v = virtualinvoke v.<org.apache.kafkaesque.common.protocol.Errors: short code()>();
if v == v goto label;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
v = newarray (java.lang.Object)[3];
v = v.<org.apache.kafkaesque.common.requests.ApiVersionsResponse: org.apache.kafkaesque.common.message.ApiVersionsResponseData data>;
v = virtualinvoke v.<org.apache.kafkaesque.common.message.ApiVersionsResponseData: short errorCode()>();
v = staticinvoke <org.apache.kafkaesque.common.protocol.Errors: org.apache.kafkaesque.common.protocol.Errors forCode(short)>(v);
v[0] = v;
v[1] = v;
v = v.<org.apache.kafkaesque.clients.NetworkClient$InFlightRequest: org.apache.kafkaesque.common.requests.RequestHeader header>;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: int correlationId()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object[])>("Received error {} from node {} when making an ApiVersionsRequest with correlation id {}. Disconnecting.", v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: void close(java.lang.String)>(v);
v = <org.apache.kafkaesque.common.network.ChannelState: org.apache.kafkaesque.common.network.ChannelState LOCAL_CLOSE>;
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void processDisconnection(java.util.List,java.lang.String,long,org.apache.kafkaesque.common.network.ChannelState)>(v, v, v, v);
goto label;
label:
v = 0;
v = v.<org.apache.kafkaesque.common.requests.ApiVersionsResponse: org.apache.kafkaesque.common.message.ApiVersionsResponseData data>;
v = virtualinvoke v.<org.apache.kafkaesque.common.message.ApiVersionsResponseData: org.apache.kafkaesque.common.message.ApiVersionsResponseData$ApiVersionsResponseKeyCollection apiKeys()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.message.ApiVersionsResponseData$ApiVersionsResponseKeyCollection: int size()>();
if v <= 0 goto label;
v = v.<org.apache.kafkaesque.common.requests.ApiVersionsResponse: org.apache.kafkaesque.common.message.ApiVersionsResponseData data>;
v = virtualinvoke v.<org.apache.kafkaesque.common.message.ApiVersionsResponseData: org.apache.kafkaesque.common.message.ApiVersionsResponseData$ApiVersionsResponseKeyCollection apiKeys()>();
v = <org.apache.kafkaesque.common.protocol.ApiKeys: org.apache.kafkaesque.common.protocol.ApiKeys API_VERSIONS>;
v = v.<org.apache.kafkaesque.common.protocol.ApiKeys: short id>;
v = virtualinvoke v.<org.apache.kafkaesque.common.message.ApiVersionsResponseData$ApiVersionsResponseKeyCollection: org.apache.kafkaesque.common.message.ApiVersionsResponseData$ApiVersionsResponseKey find(short)>(v);
if v == null goto label;
v = virtualinvoke v.<org.apache.kafkaesque.common.message.ApiVersionsResponseData$ApiVersionsResponseKey: short maxVersion()>();
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.Map nodesNeedingApiVersionsFetch>;
v = new org.apache.kafkaesque.common.requests.ApiVersionsRequest$Builder;
specialinvoke v.<org.apache.kafkaesque.common.requests.ApiVersionsRequest$Builder: void <init>(short)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
return;
label:
v = new org.apache.kafkaesque.clients.NodeApiVersions;
v = v.<org.apache.kafkaesque.common.requests.ApiVersionsResponse: org.apache.kafkaesque.common.message.ApiVersionsResponseData data>;
v = virtualinvoke v.<org.apache.kafkaesque.common.message.ApiVersionsResponseData: org.apache.kafkaesque.common.message.ApiVersionsResponseData$ApiVersionsResponseKeyCollection apiKeys()>();
specialinvoke v.<org.apache.kafkaesque.clients.NodeApiVersions: void <init>(org.apache.kafkaesque.common.message.ApiVersionsResponseData$ApiVersionsResponseKeyCollection)>(v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ApiVersions apiVersions>;
virtualinvoke v.<org.apache.kafkaesque.clients.ApiVersions: void update(java.lang.String,org.apache.kafkaesque.clients.NodeApiVersions)>(v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: void ready(java.lang.String)>(v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Recorded API versions for node {}: {}", v, v);
return;
}
private void handleDisconnections(java.util.List, long)
{
org.slf4j.Logger v;
java.util.Iterator v;
org.apache.kafkaesque.common.network.Selectable v;
java.util.Set v;
long v;
java.util.List v;
java.util.Map v;
java.lang.Object v, v, v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.util.List;
v := @parameter: long;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
v = interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: java.util.Map disconnected()>();
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator 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.<java.util.Map$Entry: java.lang.Object getKey()>();
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Node {} disconnected.", v);
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void processDisconnection(java.util.List,java.lang.String,long,org.apache.kafkaesque.common.network.ChannelState)>(v, v, v, v);
goto label;
label:
return;
}
private void handleConnections()
{
org.slf4j.Logger v, v;
java.util.Iterator v;
org.apache.kafkaesque.common.network.Selectable v;
java.util.List v;
org.apache.kafkaesque.common.requests.ApiVersionsRequest$Builder v;
java.util.Map v;
org.apache.kafkaesque.clients.ClusterConnectionStates v, v;
java.lang.Object v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
v = interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: java.util.List connected()>();
v = interfaceinvoke v.<java.util.List: java.util.Iterator 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 = v.<org.apache.kafkaesque.clients.NetworkClient: boolean discoverBrokerVersions>;
if v == 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: void checkingApiVersions(java.lang.String)>(v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.Map nodesNeedingApiVersionsFetch>;
v = new org.apache.kafkaesque.common.requests.ApiVersionsRequest$Builder;
specialinvoke v.<org.apache.kafkaesque.common.requests.ApiVersionsRequest$Builder: void <init>()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Completed connection to node {}. Fetching API versions.", v);
goto label;
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: void ready(java.lang.String)>(v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Completed connection to node {}. Ready.", v);
goto label;
label:
return;
}
private void handleInitiateApiVersionRequests(long)
{
org.slf4j.Logger v;
java.util.Iterator v;
org.apache.kafkaesque.common.network.Selectable v;
java.util.Set v;
long v;
org.apache.kafkaesque.clients.ClientRequest v;
org.apache.kafkaesque.clients.InFlightRequests v;
java.util.Map v;
java.lang.Object v, v, v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v, v, v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: long;
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.util.Map nodesNeedingApiVersionsFetch>;
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator 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.<java.util.Map$Entry: java.lang.Object getKey()>();
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
v = interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: boolean isChannelReady(java.lang.String)>(v);
if v == 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.InFlightRequests inFlightRequests>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.InFlightRequests: boolean canSendMore(java.lang.String)>(v);
if v == 0 goto label;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Initiating API versions fetch from node {}.", v);
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = virtualinvoke v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClientRequest newClientRequest(java.lang.String,org.apache.kafkaesque.common.requests.AbstractRequest$Builder,long,boolean)>(v, v, v, 1);
specialinvoke v.<org.apache.kafkaesque.clients.NetworkClient: void doSend(org.apache.kafkaesque.clients.ClientRequest,boolean,long)>(v, 1, v);
interfaceinvoke v.<java.util.Iterator: void remove()>();
goto label;
label:
return;
}
private static void correlate(org.apache.kafkaesque.common.requests.RequestHeader, org.apache.kafkaesque.common.requests.ResponseHeader)
{
java.lang.IllegalStateException v;
org.apache.kafkaesque.common.requests.RequestHeader v;
org.apache.kafkaesque.common.requests.ResponseHeader v;
int v, v, v, v;
java.lang.String v;
v := @parameter: org.apache.kafkaesque.common.requests.RequestHeader;
v := @parameter: org.apache.kafkaesque.common.requests.ResponseHeader;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: int correlationId()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.ResponseHeader: int correlationId()>();
if v == v goto label;
v = new java.lang.IllegalStateException;
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.ResponseHeader: int correlationId()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.requests.RequestHeader: int correlationId()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int,int,org.apache.kafkaesque.common.requests.RequestHeader)>(v, v, 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[])>("Correlation id for response (\u) does not match request (\u), request header: \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
private void initiateConnect(org.apache.kafkaesque.common.Node, long)
{
org.apache.kafkaesque.common.network.Selectable v;
org.apache.kafkaesque.clients.MetadataUpdater v;
long v;
java.net.InetAddress v;
org.apache.kafkaesque.common.Node v;
int v, v, v;
java.lang.String v, v;
org.apache.kafkaesque.clients.NetworkClient v;
org.slf4j.Logger v, v;
java.io.IOException v;
java.net.InetSocketAddress v;
java.util.Optional v;
org.apache.kafkaesque.clients.ClusterConnectionStates v, v, v;
org.apache.kafkaesque.clients.ClientDnsLookup v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: org.apache.kafkaesque.common.Node;
v := @parameter: long;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: java.lang.String idString()>();
label:
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: java.lang.String host()>();
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClientDnsLookup clientDnsLookup>;
virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: void connecting(java.lang.String,long,java.lang.String,org.apache.kafkaesque.clients.ClientDnsLookup)>(v, v, v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: java.net.InetAddress currentAddress(java.lang.String)>(v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Initiating connection to node {} using address {}", v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.common.network.Selectable selector>;
v = new java.net.InetSocketAddress;
v = virtualinvoke v.<org.apache.kafkaesque.common.Node: int port()>();
specialinvoke v.<java.net.InetSocketAddress: void <init>(java.net.InetAddress,int)>(v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: int socketSendBuffer>;
v = v.<org.apache.kafkaesque.clients.NetworkClient: int socketReceiveBuffer>;
interfaceinvoke v.<org.apache.kafkaesque.common.network.Selectable: void connect(java.lang.String,java.net.InetSocketAddress,int,int)>(v, v, v, v);
label:
goto label;
label:
v := @caughtexception;
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object)>("Error connecting to node {}", v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClusterConnectionStates connectionStates>;
virtualinvoke v.<org.apache.kafkaesque.clients.ClusterConnectionStates: void disconnected(java.lang.String,long)>(v, v);
v = v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.MetadataUpdater metadataUpdater>;
v = staticinvoke <java.util.Optional: java.util.Optional empty()>();
interfaceinvoke v.<org.apache.kafkaesque.clients.MetadataUpdater: void handleServerDisconnect(long,java.lang.String,java.util.Optional)>(v, v, v);
label:
return;
catch java.io.IOException from label to label with label;
}
public org.apache.kafkaesque.clients.ClientRequest newClientRequest(java.lang.String, org.apache.kafkaesque.common.requests.AbstractRequest$Builder, long, boolean)
{
org.apache.kafkaesque.clients.ClientRequest v;
int v;
long v;
org.apache.kafkaesque.common.requests.AbstractRequest$Builder v;
java.lang.String v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.lang.String;
v := @parameter: org.apache.kafkaesque.common.requests.AbstractRequest$Builder;
v := @parameter: long;
v := @parameter: boolean;
v = v.<org.apache.kafkaesque.clients.NetworkClient: int defaultRequestTimeoutMs>;
v = virtualinvoke v.<org.apache.kafkaesque.clients.NetworkClient: org.apache.kafkaesque.clients.ClientRequest newClientRequest(java.lang.String,org.apache.kafkaesque.common.requests.AbstractRequest$Builder,long,boolean,int,org.apache.kafkaesque.clients.RequestCompletionHandler)>(v, v, v, v, v, null);
return v;
}
public org.apache.kafkaesque.clients.ClientRequest newClientRequest(java.lang.String, org.apache.kafkaesque.common.requests.AbstractRequest$Builder, long, boolean, int, org.apache.kafkaesque.clients.RequestCompletionHandler)
{
org.apache.kafkaesque.clients.RequestCompletionHandler v;
long v;
org.apache.kafkaesque.common.requests.AbstractRequest$Builder v;
org.apache.kafkaesque.clients.ClientRequest v;
int v, v, v;
java.lang.String v, v;
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v := @parameter: java.lang.String;
v := @parameter: org.apache.kafkaesque.common.requests.AbstractRequest$Builder;
v := @parameter: long;
v := @parameter: boolean;
v := @parameter: int;
v := @parameter: org.apache.kafkaesque.clients.RequestCompletionHandler;
v = new org.apache.kafkaesque.clients.ClientRequest;
v = v.<org.apache.kafkaesque.clients.NetworkClient: int correlation>;
v = v + 1;
v.<org.apache.kafkaesque.clients.NetworkClient: int correlation> = v;
v = v.<org.apache.kafkaesque.clients.NetworkClient: java.lang.String clientId>;
specialinvoke v.<org.apache.kafkaesque.clients.ClientRequest: void <init>(java.lang.String,org.apache.kafkaesque.common.requests.AbstractRequest$Builder,int,java.lang.String,long,boolean,int,org.apache.kafkaesque.clients.RequestCompletionHandler)>(v, v, v, v, v, v, v, v);
return v;
}
public boolean discoverBrokerVersions()
{
org.apache.kafkaesque.clients.NetworkClient v;
boolean v;
v := @this: org.apache.kafkaesque.clients.NetworkClient;
v = v.<org.apache.kafkaesque.clients.NetworkClient: boolean discoverBrokerVersions>;
return v;
}
}