2012-06-23 5 views
5

첫째, 여기에 내가 모두를 읽을 곳에 대한 참조입니다 지금은이 질문에 대해 알고있는 것을 명시 적으로 문서로 지정되지는 않지만 http://docs.jboss.org/netty/3.2/api/org/jboss/netty/bootstrap/ServerBootstrap.html#bind%28%29Netty ServerBootstrap - 비동기 바인딩?

, ServerBootstrap.bind 동기 인 것으로 보인다 - 그것은 ChannelFuture를 반환하지 않기 때문에를, 오히려 채널입니다. 그렇다면 ServerBootstrap 클래스를 사용하여 비동기 바인딩을 만드는 방법이 없습니다. 나는 뭔가를 놓치고 있습니까, 아니면 제가 직접 솔루션을 굴려야합니까?

안부

답변

4

나는 다음 또한 내 자신의 부트 스트랩 구현을 압연 결국 :의 Netty 3.6에서

public ChannelFuture bindAsync(final SocketAddress localAddress) 
{ 
    if (localAddress == null) { 
     throw new NullPointerException("localAddress"); 
    } 
    final BlockingQueue<ChannelFuture> futureQueue = 
     new LinkedBlockingQueue<ChannelFuture>(); 
    ChannelHandler binder = new Binder(localAddress, futureQueue); 
    ChannelHandler parentHandler = getParentHandler(); 
    ChannelPipeline bossPipeline = pipeline(); 
    bossPipeline.addLast("binder", binder); 
    if (parentHandler != null) { 
     bossPipeline.addLast("userHandler", parentHandler); 
    } 
    getFactory().newChannel(bossPipeline); 
    ChannelFuture future = null; 
    boolean interrupted = false; 
    do { 
     try { 
      future = futureQueue.poll(Integer.MAX_VALUE, TimeUnit.SECONDS); 
     } catch (InterruptedException e) { 
      interrupted = true; 
     } 
    } while (future == null); 
    if (interrupted) { 
     Thread.currentThread().interrupt(); 
    } 
    return future; 
} 
관련 문제