class io.netty.example.socksproxy.SocksServerConnectHandler$1 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$1
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
void <init>(io.netty.example.socksproxy.SocksServerConnectHandler, io.netty.channel.ChannelHandlerContext);
descriptor: (Lio/netty/example/socksproxy/SocksServerConnectHandler;Lio/netty/channel/ChannelHandlerContext;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 0: aload 0
aload 1
putfield io.netty.example.socksproxy.SocksServerConnectHandler$1.this$0:Lio/netty/example/socksproxy/SocksServerConnectHandler;
aload 0
aload 2
putfield io.netty.example.socksproxy.SocksServerConnectHandler$1.val$ctx:Lio/netty/channel/ChannelHandlerContext;
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$1;
MethodParameters:
Name Flags
this$0 final
val$ctx 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=6, 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 7
2: aload 0
getfield io.netty.example.socksproxy.SocksServerConnectHandler$1.val$ctx:Lio/netty/channel/ChannelHandlerContext;
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
3: new io.netty.handler.codec.socksx.v4.DefaultSocks4CommandResponse
dup
getstatic io.netty.handler.codec.socksx.v4.Socks4CommandStatus.SUCCESS:Lio/netty/handler/codec/socksx/v4/Socks4CommandStatus;
invokespecial io.netty.handler.codec.socksx.v4.DefaultSocks4CommandResponse.<init>:(Lio/netty/handler/codec/socksx/v4/Socks4CommandStatus;)V
4: invokeinterface io.netty.channel.Channel.writeAndFlush:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
astore 3
start local 3 5: aload 3
new io.netty.example.socksproxy.SocksServerConnectHandler$1$1
dup
aload 0
aload 0
getfield io.netty.example.socksproxy.SocksServerConnectHandler$1.val$ctx:Lio/netty/channel/ChannelHandlerContext;
aload 2
invokespecial io.netty.example.socksproxy.SocksServerConnectHandler$1$1.<init>:(Lio/netty/example/socksproxy/SocksServerConnectHandler$1;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 6: goto 11
7: StackMap locals: io.netty.channel.Channel
StackMap stack:
aload 0
getfield io.netty.example.socksproxy.SocksServerConnectHandler$1.val$ctx:Lio/netty/channel/ChannelHandlerContext;
invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
8: new io.netty.handler.codec.socksx.v4.DefaultSocks4CommandResponse
dup
getstatic io.netty.handler.codec.socksx.v4.Socks4CommandStatus.REJECTED_OR_FAILED:Lio/netty/handler/codec/socksx/v4/Socks4CommandStatus;
invokespecial io.netty.handler.codec.socksx.v4.DefaultSocks4CommandResponse.<init>:(Lio/netty/handler/codec/socksx/v4/Socks4CommandStatus;)V
9: invokeinterface io.netty.channel.Channel.writeAndFlush:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
pop
10: aload 0
getfield io.netty.example.socksproxy.SocksServerConnectHandler$1.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
11: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lio/netty/example/socksproxy/SocksServerConnectHandler$1;
0 12 1 future Lio/netty/util/concurrent/Future<Lio/netty/channel/Channel;>;
1 12 2 outboundChannel Lio/netty/channel/Channel;
5 6 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$1);
descriptor: (Lio/netty/example/socksproxy/SocksServerConnectHandler$1;)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$1.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$1
io.netty.example.socksproxy.SocksServerConnectHandler$1$1