public class org.springframework.messaging.tcp.reactor.Reactor2TcpClient extends java.lang.Object implements org.springframework.messaging.tcp.TcpOperations
{
public static final java.lang.Class REACTOR_TCP_CLIENT_TYPE;
private static final java.lang.reflect.Method eventLoopGroupMethod;
private final io.netty.channel.EventLoopGroup eventLoopGroup;
private final reactor.Environment environment;
private final reactor.io.net.NetStreams$TcpClientFactory tcpClientSpecFactory;
private final java.util.List tcpClients;
private boolean stopping;
public void <init>(java.lang.String, int, reactor.io.codec.Codec)
{
org.springframework.messaging.tcp.reactor.Reactor2TcpClient$FixedAddressSupplier v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient v;
int v;
reactor.io.codec.Codec v;
java.lang.String v;
v := @this: org.springframework.messaging.tcp.reactor.Reactor2TcpClient;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: reactor.io.codec.Codec;
v = new org.springframework.messaging.tcp.reactor.Reactor2TcpClient$FixedAddressSupplier;
specialinvoke v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient$FixedAddressSupplier: void <init>(java.lang.String,int)>(v, v);
specialinvoke v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: void <init>(reactor.fn.Supplier,reactor.io.codec.Codec)>(v, v);
return;
}
public void <init>(reactor.fn.Supplier, reactor.io.codec.Codec)
{
io.netty.channel.nio.NioEventLoopGroup v;
java.util.ArrayList v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient v;
reactor.fn.Supplier v;
reactor.io.codec.Codec v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient$1 v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient$SynchronousDispatcherConfigReader v;
reactor.Environment v;
v := @this: org.springframework.messaging.tcp.reactor.Reactor2TcpClient;
v := @parameter: reactor.fn.Supplier;
v := @parameter: reactor.io.codec.Codec;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: java.util.List tcpClients> = v;
v = staticinvoke <org.springframework.messaging.tcp.reactor.Reactor2TcpClient: io.netty.channel.nio.NioEventLoopGroup initEventLoopGroup()>();
v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: io.netty.channel.EventLoopGroup eventLoopGroup> = v;
v = new reactor.Environment;
v = new org.springframework.messaging.tcp.reactor.Reactor2TcpClient$SynchronousDispatcherConfigReader;
specialinvoke v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient$SynchronousDispatcherConfigReader: void <init>()>();
specialinvoke v.<reactor.Environment: void <init>(reactor.core.config.ConfigurationReader)>(v);
v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: reactor.Environment environment> = v;
v = new org.springframework.messaging.tcp.reactor.Reactor2TcpClient$1;
specialinvoke v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient$1: void <init>(org.springframework.messaging.tcp.reactor.Reactor2TcpClient,reactor.io.codec.Codec,reactor.fn.Supplier,io.netty.channel.nio.NioEventLoopGroup)>(v, v, v, v);
v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: reactor.io.net.NetStreams$TcpClientFactory tcpClientSpecFactory> = v;
return;
}
public void <init>(reactor.io.net.NetStreams$TcpClientFactory)
{
reactor.io.net.NetStreams$TcpClientFactory v;
java.util.ArrayList v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient v;
v := @this: org.springframework.messaging.tcp.reactor.Reactor2TcpClient;
v := @parameter: reactor.io.net.NetStreams$TcpClientFactory;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: java.util.List tcpClients> = v;
staticinvoke <org.springframework.util.Assert: void notNull(java.lang.Object,java.lang.String)>(v, "\'tcpClientClientFactory\' must not be null");
v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: reactor.io.net.NetStreams$TcpClientFactory tcpClientSpecFactory> = v;
v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: io.netty.channel.EventLoopGroup eventLoopGroup> = null;
v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: reactor.Environment environment> = null;
return;
}
public static io.netty.channel.nio.NioEventLoopGroup initEventLoopGroup()
{
java.lang.Throwable v;
reactor.core.support.NamedDaemonThreadFactory v;
java.lang.Runtime v;
int v, v;
java.lang.String v;
io.netty.channel.nio.NioEventLoopGroup v;
label:
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("reactor.tcp.ioThreadCount");
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
v = (int) -1;
v = v;
label:
if v > 0 goto label;
v = staticinvoke <java.lang.Runtime: java.lang.Runtime getRuntime()>();
v = virtualinvoke v.<java.lang.Runtime: int availableProcessors()>();
label:
v = new io.netty.channel.nio.NioEventLoopGroup;
v = new reactor.core.support.NamedDaemonThreadFactory;
specialinvoke v.<reactor.core.support.NamedDaemonThreadFactory: void <init>(java.lang.String)>("reactor-tcp-io");
specialinvoke v.<io.netty.channel.nio.NioEventLoopGroup: void <init>(int,java.util.concurrent.ThreadFactory)>(v, v);
return v;
catch java.lang.Throwable from label to label with label;
}
public org.springframework.util.concurrent.ListenableFuture connect(org.springframework.messaging.tcp.TcpConnectionHandler)
{
java.lang.Throwable v;
java.lang.IllegalStateException v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient$MessageChannelStreamHandler v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient v;
org.springframework.messaging.tcp.reactor.PassThroughPromiseToListenableFutureAdapter v, v;
reactor.io.net.NetStreams$TcpClientFactory v;
boolean v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient$3 v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient$2 v;
org.springframework.messaging.tcp.TcpConnectionHandler v;
java.util.List v, v;
reactor.io.net.tcp.TcpClient v;
reactor.rx.Promise v, v, v;
java.lang.Class v;
v := @this: org.springframework.messaging.tcp.reactor.Reactor2TcpClient;
v := @parameter: org.springframework.messaging.tcp.TcpConnectionHandler;
staticinvoke <org.springframework.util.Assert: void notNull(java.lang.Object,java.lang.String)>(v, "TcpConnectionHandler must not be null");
v = v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: java.util.List tcpClients>;
entermonitor v;
label:
v = v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: boolean stopping>;
if v == 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Shutting down.");
interfaceinvoke v.<org.springframework.messaging.tcp.TcpConnectionHandler: void afterConnectFailure(java.lang.Throwable)>(v);
v = new org.springframework.messaging.tcp.reactor.PassThroughPromiseToListenableFutureAdapter;
v = staticinvoke <reactor.rx.Promises: reactor.rx.Promise error(java.lang.Throwable)>(v);
specialinvoke v.<org.springframework.messaging.tcp.reactor.PassThroughPromiseToListenableFutureAdapter: void <init>(reactor.rx.Promise)>(v);
exitmonitor v;
label:
return v;
label:
v = <org.springframework.messaging.tcp.reactor.Reactor2TcpClient: java.lang.Class REACTOR_TCP_CLIENT_TYPE>;
v = v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: reactor.io.net.NetStreams$TcpClientFactory tcpClientSpecFactory>;
v = staticinvoke <reactor.io.net.NetStreams: reactor.io.net.tcp.TcpClient tcpClient(java.lang.Class,reactor.fn.Function)>(v, v);
v = v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: java.util.List tcpClients>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = new org.springframework.messaging.tcp.reactor.Reactor2TcpClient$2;
specialinvoke v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient$2: void <init>(org.springframework.messaging.tcp.reactor.Reactor2TcpClient,reactor.io.net.tcp.TcpClient)>(v, v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = new org.springframework.messaging.tcp.reactor.Reactor2TcpClient$MessageChannelStreamHandler;
specialinvoke v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient$MessageChannelStreamHandler: void <init>(org.springframework.messaging.tcp.TcpConnectionHandler,java.lang.Runnable)>(v, v);
v = virtualinvoke v.<reactor.io.net.tcp.TcpClient: reactor.rx.Promise start(reactor.io.net.ReactorChannelHandler)>(v);
v = new org.springframework.messaging.tcp.reactor.PassThroughPromiseToListenableFutureAdapter;
v = new org.springframework.messaging.tcp.reactor.Reactor2TcpClient$3;
specialinvoke v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient$3: void <init>(org.springframework.messaging.tcp.reactor.Reactor2TcpClient,java.lang.Runnable,org.springframework.messaging.tcp.TcpConnectionHandler)>(v, v, v);
v = virtualinvoke v.<reactor.rx.Promise: reactor.rx.Promise onError(reactor.fn.Consumer)>(v);
specialinvoke v.<org.springframework.messaging.tcp.reactor.PassThroughPromiseToListenableFutureAdapter: void <init>(reactor.rx.Promise)>(v);
return v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public org.springframework.util.concurrent.ListenableFuture connect(org.springframework.messaging.tcp.TcpConnectionHandler, org.springframework.messaging.tcp.ReconnectStrategy)
{
java.lang.Throwable v;
org.springframework.messaging.tcp.ReconnectStrategy v;
java.lang.IllegalStateException v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient$MessageChannelStreamHandler v;
reactor.rx.Stream v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient v;
org.springframework.messaging.tcp.reactor.PassThroughPromiseToListenableFutureAdapter v, v;
reactor.io.net.NetStreams$TcpClientFactory v;
boolean v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient$4 v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient$ReactorReconnectAdapter v;
org.springframework.messaging.tcp.TcpConnectionHandler v;
java.util.List v, v;
reactor.io.net.tcp.TcpClient v;
reactor.rx.Promise v, v, v;
java.lang.Class v;
v := @this: org.springframework.messaging.tcp.reactor.Reactor2TcpClient;
v := @parameter: org.springframework.messaging.tcp.TcpConnectionHandler;
v := @parameter: org.springframework.messaging.tcp.ReconnectStrategy;
staticinvoke <org.springframework.util.Assert: void notNull(java.lang.Object,java.lang.String)>(v, "TcpConnectionHandler must not be null");
staticinvoke <org.springframework.util.Assert: void notNull(java.lang.Object,java.lang.String)>(v, "ReconnectStrategy must not be null");
v = v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: java.util.List tcpClients>;
entermonitor v;
label:
v = v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: boolean stopping>;
if v == 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Shutting down.");
interfaceinvoke v.<org.springframework.messaging.tcp.TcpConnectionHandler: void afterConnectFailure(java.lang.Throwable)>(v);
v = new org.springframework.messaging.tcp.reactor.PassThroughPromiseToListenableFutureAdapter;
v = staticinvoke <reactor.rx.Promises: reactor.rx.Promise error(java.lang.Throwable)>(v);
specialinvoke v.<org.springframework.messaging.tcp.reactor.PassThroughPromiseToListenableFutureAdapter: void <init>(reactor.rx.Promise)>(v);
exitmonitor v;
label:
return v;
label:
v = <org.springframework.messaging.tcp.reactor.Reactor2TcpClient: java.lang.Class REACTOR_TCP_CLIENT_TYPE>;
v = v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: reactor.io.net.NetStreams$TcpClientFactory tcpClientSpecFactory>;
v = staticinvoke <reactor.io.net.NetStreams: reactor.io.net.tcp.TcpClient tcpClient(java.lang.Class,reactor.fn.Function)>(v, v);
v = v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: java.util.List tcpClients>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = new org.springframework.messaging.tcp.reactor.Reactor2TcpClient$4;
specialinvoke v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient$4: void <init>(org.springframework.messaging.tcp.reactor.Reactor2TcpClient,reactor.io.net.tcp.TcpClient)>(v, v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = new org.springframework.messaging.tcp.reactor.Reactor2TcpClient$MessageChannelStreamHandler;
specialinvoke v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient$MessageChannelStreamHandler: void <init>(org.springframework.messaging.tcp.TcpConnectionHandler,java.lang.Runnable)>(v, v);
v = new org.springframework.messaging.tcp.reactor.Reactor2TcpClient$ReactorReconnectAdapter;
specialinvoke v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient$ReactorReconnectAdapter: void <init>(org.springframework.messaging.tcp.ReconnectStrategy)>(v);
v = virtualinvoke v.<reactor.io.net.tcp.TcpClient: reactor.rx.Stream start(reactor.io.net.ReactorChannelHandler,reactor.io.net.Reconnect)>(v, v);
v = new org.springframework.messaging.tcp.reactor.PassThroughPromiseToListenableFutureAdapter;
v = virtualinvoke v.<reactor.rx.Stream: reactor.rx.Promise next()>();
v = virtualinvoke v.<reactor.rx.Promise: reactor.rx.Promise after()>();
specialinvoke v.<org.springframework.messaging.tcp.reactor.PassThroughPromiseToListenableFutureAdapter: void <init>(reactor.rx.Promise)>(v);
return v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public org.springframework.util.concurrent.ListenableFuture shutdown()
{
java.lang.Throwable v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient$5 v;
io.netty.channel.EventLoopGroup v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient$7 v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient$6 v;
java.util.List v, v;
reactor.rx.Stream v, v;
org.springframework.messaging.tcp.reactor.Reactor2TcpClient v;
reactor.rx.Promise v, v;
org.springframework.messaging.tcp.reactor.PassThroughPromiseToListenableFutureAdapter v;
reactor.Environment v;
v := @this: org.springframework.messaging.tcp.reactor.Reactor2TcpClient;
v = v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: java.util.List tcpClients>;
entermonitor v;
label:
v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: boolean stopping> = 1;
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: java.util.List tcpClients>;
v = staticinvoke <reactor.rx.Streams: reactor.rx.Stream 'from'(java.lang.Iterable)>(v);
v = new org.springframework.messaging.tcp.reactor.Reactor2TcpClient$5;
specialinvoke v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient$5: void <init>(org.springframework.messaging.tcp.reactor.Reactor2TcpClient)>(v);
v = virtualinvoke v.<reactor.rx.Stream: reactor.rx.Stream flatMap(reactor.fn.Function)>(v);
v = virtualinvoke v.<reactor.rx.Stream: reactor.rx.Promise next()>();
v = v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: io.netty.channel.EventLoopGroup eventLoopGroup>;
if v == null goto label;
v = staticinvoke <reactor.rx.Promises: reactor.rx.Promise prepare()>();
v = new org.springframework.messaging.tcp.reactor.Reactor2TcpClient$6;
specialinvoke v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient$6: void <init>(org.springframework.messaging.tcp.reactor.Reactor2TcpClient,reactor.rx.Promise)>(v, v);
virtualinvoke v.<reactor.rx.Promise: reactor.rx.Promise onComplete(reactor.fn.Consumer)>(v);
v = v;
label:
v = v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: reactor.Environment environment>;
if v == null goto label;
v = new org.springframework.messaging.tcp.reactor.Reactor2TcpClient$7;
specialinvoke v.<org.springframework.messaging.tcp.reactor.Reactor2TcpClient$7: void <init>(org.springframework.messaging.tcp.reactor.Reactor2TcpClient)>(v);
virtualinvoke v.<reactor.rx.Promise: reactor.rx.Promise onComplete(reactor.fn.Consumer)>(v);
label:
v = new org.springframework.messaging.tcp.reactor.PassThroughPromiseToListenableFutureAdapter;
specialinvoke v.<org.springframework.messaging.tcp.reactor.PassThroughPromiseToListenableFutureAdapter: void <init>(reactor.rx.Promise)>(v);
return v;
catch java.lang.Throwable from label to label with label;
}
private static java.lang.reflect.Method initEventLoopGroupMethod()
{
java.lang.IllegalStateException v;
java.lang.Class[] v;
java.lang.reflect.Method[] v;
int v, v, v;
java.lang.Class v;
java.lang.String v;
java.lang.reflect.Method v;
boolean v;
v = class "Lreactor/io/net/impl/netty/NettyClientSocketOptions;";
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method[] getMethods()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("eventLoopGroup");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = lengthof v;
if v != 1 goto label;
return v;
label:
v = v + 1;
goto label;
label:
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("No compatible Reactor version found");
throw v;
}
static void <clinit>()
{
java.lang.reflect.Method v;
<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: java.lang.Class REACTOR_TCP_CLIENT_TYPE> = class "Lreactor/io/net/impl/netty/tcp/NettyTcpClient;";
v = staticinvoke <org.springframework.messaging.tcp.reactor.Reactor2TcpClient: java.lang.reflect.Method initEventLoopGroupMethod()>();
<org.springframework.messaging.tcp.reactor.Reactor2TcpClient: java.lang.reflect.Method eventLoopGroupMethod> = v;
return;
}
}