class io.netty.example.socksproxy.SocksServerConnectHandler$3 implements io.netty.util.concurrent.FutureListener<io.netty.channel.Channel>
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: io.netty.example.socksproxy.SocksServerConnectHandler$3
super_class: java.lang.Object
{
final io.netty.example.socksproxy.SocksServerConnectHandler this$0;
descriptor: Lio/netty/example/socksproxy/SocksServerConnectHandler;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private final io.netty.channel.ChannelHandlerContext val$ctx;
descriptor: Lio/netty/channel/ChannelHandlerContext;
flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC
private final io.netty.handler.codec.socksx.v5.Socks5CommandRequest val$request;
descriptor: Lio/netty/handler/codec/socksx/v5/Socks5CommandRequest;
flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC
void <init>(io.netty.example.socksproxy.SocksServerConnectHandler, io.netty.channel.ChannelHandlerContext, io.netty.handler.codec.socksx.v5.Socks5CommandRequest);
descriptor: (Lio/netty/example/socksproxy/SocksServerConnectHandler;Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/socksx/v5/Socks5CommandRequest;)V
flags: (0x0000)
Code:
stack=2, locals=4, args_size=4
start local 0 0: aload 0
aload 1
putfield io.netty.example.socksproxy.SocksServerConnectHandler$3.this$0:Lio/netty/example/socksproxy/SocksServerConnectHandler;
aload 0
aload 2
putfield io.netty.example.socksproxy.SocksServerConnectHandler$3.val$ctx:Lio/netty/channel/ChannelHandlerContext;
aload 0
aload 3
putfield io.netty.example.socksproxy.SocksServerConnectHandler$3.val$request:Lio/netty/handler/codec/socksx/v5/Socks5CommandRequest;
aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/example/socksproxy/SocksServerConnectHandler$3;
MethodParameters:
Name Flags
this$0 final
val$ctx final
val$request final
public void operationComplete(io.netty.util.concurrent.Future<io.netty.channel.Channel>);
descriptor: (Lio/netty/util/concurrent/Future;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface io.netty.util.concurrent.Future.getNow:()Ljava/lang/Object;
checkcast io.netty.channel.Channel
astore 2
start local 2 1: aload 1
invokeinterface io.netty.util.concurrent.Future.isSuccess:()Z
ifeq 11
2: aload 0
getfield io.netty.example.socksproxy.SocksServerConnectHandler$3.val$ctx:Lio/netty/channel/ChannelHandlerContext;
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
new io.netty.handler.codec.socksx.v5.DefaultSocks5CommandResponse
dup
3: getstatic io.netty.handler.codec.socksx.v5.Socks5CommandStatus.SUCCESS:Lio/netty/handler/codec/socksx/v5/Socks5CommandStatus;
4: aload 0
getfield io.netty.example.socksproxy.SocksServerConnectHandler$3.val$request:Lio/netty/handler/codec/socksx/v5/Socks5CommandRequest;
invokeinterface io.netty.handler.codec.socksx.v5.Socks5CommandRequest.dstAddrType:()Lio/netty/handler/codec/socksx/v5/Socks5AddressType;
5: aload 0
getfield io.netty.example.socksproxy.SocksServerConnectHandler$3.val$request:Lio/netty/handler/codec/socksx/v5/Socks5CommandRequest;
invokeinterface io.netty.handler.codec.socksx.v5.Socks5CommandRequest.dstAddr:()Ljava/lang/String;
6: aload 0
getfield io.netty.example.socksproxy.SocksServerConnectHandler$3.val$request:Lio/netty/handler/codec/socksx/v5/Socks5CommandRequest;
invokeinterface io.netty.handler.codec.socksx.v5.Socks5CommandRequest.dstPort:()I
invokespecial io.netty.handler.codec.socksx.v5.DefaultSocks5CommandResponse.<init>:(Lio/netty/handler/codec/socksx/v5/Socks5CommandStatus;Lio/netty/handler/codec/socksx/v5/Socks5AddressType;Ljava/lang/String;I)V
7: invokeinterface io.netty.channel.Channel.writeAndFlush:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
8: astore 3
start local 3 9: aload 3
new io.netty.example.socksproxy.SocksServerConnectHandler$3$1
dup
aload 0
aload 0
getfield io.netty.example.socksproxy.SocksServerConnectHandler$3.val$ctx:Lio/netty/channel/ChannelHandlerContext;
aload 2
invokespecial io.netty.example.socksproxy.SocksServerConnectHandler$3$1.<init>:(Lio/netty/example/socksproxy/SocksServerConnectHandler$3;Lio/netty/channel/ChannelHandlerContext;Lio/netty/channel/Channel;)V
invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
pop
end local 3 10: goto 15
11: StackMap locals: io.netty.channel.Channel
StackMap stack:
aload 0
getfield io.netty.example.socksproxy.SocksServerConnectHandler$3.val$ctx:Lio/netty/channel/ChannelHandlerContext;
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
new io.netty.handler.codec.socksx.v5.DefaultSocks5CommandResponse
dup
12: getstatic io.netty.handler.codec.socksx.v5.Socks5CommandStatus.FAILURE:Lio/netty/handler/codec/socksx/v5/Socks5CommandStatus;
aload 0
getfield io.netty.example.socksproxy.SocksServerConnectHandler$3.val$request:Lio/netty/handler/codec/socksx/v5/Socks5CommandRequest;
invokeinterface io.netty.handler.codec.socksx.v5.Socks5CommandRequest.dstAddrType:()Lio/netty/handler/codec/socksx/v5/Socks5AddressType;
invokespecial io.netty.handler.codec.socksx.v5.DefaultSocks5CommandResponse.<init>:(Lio/netty/handler/codec/socksx/v5/Socks5CommandStatus;Lio/netty/handler/codec/socksx/v5/Socks5AddressType;)V
13: invokeinterface io.netty.channel.Channel.writeAndFlush:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
pop
14: aload 0
getfield io.netty.example.socksproxy.SocksServerConnectHandler$3.val$ctx:Lio/netty/channel/ChannelHandlerContext;
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
invokestatic io.netty.example.socksproxy.SocksServerUtils.closeOnFlush:(Lio/netty/channel/Channel;)V
15: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lio/netty/example/socksproxy/SocksServerConnectHandler$3;
0 16 1 future Lio/netty/util/concurrent/Future<Lio/netty/channel/Channel;>;
1 16 2 outboundChannel Lio/netty/channel/Channel;
9 10 3 responseFuture Lio/netty/channel/ChannelFuture;
Exceptions:
throws java.lang.Exception
Signature: (Lio/netty/util/concurrent/Future<Lio/netty/channel/Channel;>;)V
MethodParameters:
Name Flags
future final
static io.netty.example.socksproxy.SocksServerConnectHandler access$0(io.netty.example.socksproxy.SocksServerConnectHandler$3);
descriptor: (Lio/netty/example/socksproxy/SocksServerConnectHandler$3;)Lio/netty/example/socksproxy/SocksServerConnectHandler;
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
getfield io.netty.example.socksproxy.SocksServerConnectHandler$3.this$0:Lio/netty/example/socksproxy/SocksServerConnectHandler;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Ljava/lang/Object;Lio/netty/util/concurrent/FutureListener<Lio/netty/channel/Channel;>;
SourceFile: "SocksServerConnectHandler.java"
EnclosingMethod: io.netty.example.socksproxy.SocksServerConnectHandler.channelRead0:(Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/socksx/SocksMessage;)V
NestHost: io.netty.example.socksproxy.SocksServerConnectHandler
InnerClasses:
io.netty.example.socksproxy.SocksServerConnectHandler$3
io.netty.example.socksproxy.SocksServerConnectHandler$3$1