在netty中如何中断ctx.writeAndFlush(FileRegion region)

lingengbin 发布于 2014/10/09 10:32
阅读 2K+
收藏 0

在linux环境中,使用FileRegion来实现“零拷贝传输”,代码如下:


FileRegion region =new DefaultFileRegion(fis.getChannel(),0,file.length());
ctx.writeAndFlush(region).addListener(new ChannelFutureListener() {
	@Override
        public void operationComplete(ChannelFuture future) throws Exception {
            if(!future.isSuccess()) {
                logger.debug("传输文件不成功");
                logger.debug("失败原因为 {}", future.cause());
	    } 
            if (fis != null) {
		try {
                	fis.close();
		} catch (IOException e) {
		}
	    }
	}
    });

如果此时我想中断这个传输操作的话,有多少种方法?

我试过直接关掉连接,ctx.close()。但这会导致出现一个promise被调用两次setFailure()的异常。

请给我一点建议或思路吧,谢谢!


加载中
0
g
gogo111007
future上不是有cancel()吗?
返回顶部
顶部