1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  package io.netty.example.socksproxy;
17  
18  import io.netty.channel.Channel;
19  import io.netty.channel.ChannelHandlerContext;
20  import io.netty.channel.ChannelInboundHandlerAdapter;
21  import io.netty.util.concurrent.Promise;
22  
23  public final class DirectClientHandler extends ChannelInboundHandlerAdapter {
24  
25      private final Promise<Channel> promise;
26  
27      public DirectClientHandler(Promise<Channel> promise) {
28          this.promise = promise;
29      }
30  
31      @Override
32      public void channelActive(ChannelHandlerContext ctx) {
33          ctx.pipeline().remove(this);
34          promise.setSuccess(ctx.channel());
35      }
36  
37      @Override
38      public void exceptionCaught(ChannelHandlerContext ctx, Throwable throwable) {
39          promise.setFailure(throwable);
40      }
41  }