Java 类org.jboss.netty.channel.DefaultExceptionEvent 实例源码

项目:navi    文件:StateCheckChannelHandler.java   
@Override
public void channelIdle(ChannelHandlerContext ctx, IdleStateEvent e) throws Exception {
    if (e.getState() == IdleState.WRITER_IDLE) {
        Channel channel = e.getChannel();
        if (channel != null) {
            //写空闲  则发送心跳数据
            channel.write(Heartbeat.getSingleton());
        } else {
            logger.warn("writer idle on channel({}), but hsfChannel is not managed.", e.getChannel());
        }
    } else if (e.getState() == IdleState.READER_IDLE) {
        //读空闲 则断开连接
        logger.error("channel:{} is time out.", e.getChannel());
        handleUpstream(ctx, new DefaultExceptionEvent(e.getChannel(), new SocketTimeoutException(
            "force to close channel(" + ctx.getChannel().getRemoteAddress() + "), reason: time out.")));
        e.getChannel().close();
    }
    super.channelIdle(ctx, e);
}
项目:libraft    文件:AddressResolverHandlerTest.java   
@Test
public void shouldFireExceptionIfConnectEventCannotBeForwarded() throws Exception {
    setupPipelineToRunFireEventLaterInline();

    // setup the ctx to throw an exception when we attempt to send the connected event downstream
    IllegalStateException resolveFailureCause = new IllegalStateException("downstream event failed");
    doThrow(resolveFailureCause).when(ctx).sendDownstream(any(DownstreamChannelStateEvent.class));

    // initiate the connect request
    DefaultChannelFuture originalEventFuture = new DefaultChannelFuture(channel, false);
    ChannelStateEvent event = new DownstreamChannelStateEvent(
            channel,
            originalEventFuture,
            ChannelState.CONNECTED,
            createUnresolvedRemoteAddress()
    );

    handler.connectRequested(ctx, event);

    // firing the connect downstream should cause a "fireExceptionCaughtLater" call
    ArgumentCaptor<DefaultExceptionEvent> exceptionEventCaptor = ArgumentCaptor.forClass(DefaultExceptionEvent.class);
    verify(ctx).sendUpstream(exceptionEventCaptor.capture());

    DefaultExceptionEvent exceptionEvent = exceptionEventCaptor.getValue();
    assertThat(exceptionEvent.getCause(), Matchers.<Throwable>is(resolveFailureCause));
}
项目:JMaNGOS    文件:EventLogHandler.java   
@Override
public void exceptionCaught(final ChannelHandlerContext ctx, final ExceptionEvent e)
        throws Exception {

    if (((e instanceof DefaultExceptionEvent) || (e instanceof ConnectException)) &&
        (e.getCause() != null) &&
        (e.getCause().getMessage() != null)) {
        log.warn("Connection timed out");
        log.warn("Exception caught: ", e.getCause());
    } else {
        log.warn("Exception caught: ", e.getCause());
    }
    ctx.sendUpstream(e);
}
项目:libraft    文件:AddressResolverHandlerTest.java   
@Test
public void shouldFireExceptionIfAddressResolutionTaskFails() throws Exception {
    setupPipelineToRunFireEventLaterInline();

    // setup the address resolver to throw an exception
    final IllegalStateException resolveFailureCause = new IllegalStateException("simulate resolve failure");
    AddressResolverHandler.ResolvedAddressProvider failingResolver = new AddressResolverHandler.ResolvedAddressProvider() {
        @Override
        public InetSocketAddress createResolved(InetSocketAddress unresolvedAddress) throws Exception {
            throw resolveFailureCause;
        }
    };

    // fire a connect request with an unresolved address
    AddressResolverHandler failingHandler = new AddressResolverHandler(MoreExecutors.listeningDecorator(MoreExecutors.sameThreadExecutor()), failingResolver);

    DefaultChannelFuture originalEventFuture = new DefaultChannelFuture(channel, false);
    ChannelStateEvent event = new DownstreamChannelStateEvent(
            channel,
            originalEventFuture,
            ChannelState.CONNECTED,
            createUnresolvedRemoteAddress()
    );

    failingHandler.connectRequested(ctx, event);

    // this should cause a "fireExceptionCaughtLater" call
    ArgumentCaptor<DefaultExceptionEvent> exceptionEventCaptor = ArgumentCaptor.forClass(DefaultExceptionEvent.class);
    verify(ctx).sendUpstream(exceptionEventCaptor.capture());

    DefaultExceptionEvent exceptionEvent = exceptionEventCaptor.getValue();
    assertThat(exceptionEvent.getCause(), Matchers.<Throwable>is(resolveFailureCause));
}
项目:libraft    文件:FinalUpstreamHandlerTest.java   
@Test
public void shouldCloseChannelAndNotForwardEventWhenReceiveExceptionCaughtEvent() throws Exception {
    ExceptionEvent exceptionEvent = new DefaultExceptionEvent(channel, new Exception("test exception"));

    handler.exceptionCaught(ctx, exceptionEvent);

    verifyNoMoreInteractions(ctx);
    verify(channel).close();
}