List of usage examples for io.netty.handler.traffic ChannelTrafficShapingHandler ChannelTrafficShapingHandler
public ChannelTrafficShapingHandler(long writeLimit, long readLimit)
From source file:com.myftpserver.channelinitializer.ActiveChannelInitializer.java
License:Apache License
@Override protected void initChannel(Channel ch) throws Exception { switch (mode) { case MyFtpServer.SENDFILE: if (user.getDownloadSpeedLitmit() == 0L) logger.info("File download speed is limited by connection speed"); else {// w w w. ja v a 2s .c o m logger.info("File download speed limit:" + user.getDownloadSpeedLitmit() + " kB/s"); ch.pipeline().addLast("TrafficShapingHandler", new ChannelTrafficShapingHandler(user.getDownloadSpeedLitmit() * 1024, 0L)); } SendHandler sendFileHandler; if (fs.getDataType().equals("I")) sendFileHandler = new SendBinaryFileHandler(fs, ctx); else sendFileHandler = new SendTextFileHandler(fs, ctx); ch.closeFuture().addListener(sendFileHandler); ch.pipeline().addLast(sendFileHandler); break; case MyFtpServer.SENDDIRLIST: SendHandler sendFileNameListHandler = new SendFileNameListHandler(fileNameList, fs, ctx); ch.closeFuture().addListener(sendFileNameListHandler); ch.pipeline().addLast(sendFileNameListHandler); break; case MyFtpServer.RECEIVEFILE: ReceiveFileHandler receiveFileHandler = new ReceiveFileHandler(fs, ctx); ch.closeFuture().addListener(receiveFileHandler); ch.pipeline().addLast(receiveFileHandler); break; } }
From source file:com.myftpserver.handler.ReceiveFileHandler.java
License:Apache License
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (bos == null) { User user = fs.getUser();// w w w .j av a 2 s . c o m if (user.getUploadSpeedLitmit() == 0L) logger.info("File upload speed is limited by connection speed"); else { ctx.channel().pipeline().addFirst("TrafficShapingHandler", new ChannelTrafficShapingHandler(0L, user.getUploadSpeedLitmit() * 1024)); logger.info("File upload speed limit:" + user.getUploadSpeedLitmit() + " kB/s"); } ctx.channel().closeFuture().addListener(this); tempFile = File.createTempFile("temp-file-name", ".tmp"); fs.setUploadTempFile(tempFile); bos = new BufferedOutputStream(new FileOutputStream(tempFile)); } ByteBuf in = (ByteBuf) msg; //logger.debug("ReceiveFileHandler channelRead buffer capacity="+in.capacity()+",readable byte count="+in.readableBytes()); try { while (in.isReadable()) { in.readBytes(bos, in.readableBytes()); } bos.flush(); } finally { in.release(); } }
From source file:com.myftpserver.PassiveServer.java
License:Apache License
/** * Send a file to client/*from w ww. j a v a2s . co m*/ */ public void sendFile() throws IOException { if (user.getDownloadSpeedLitmit() == 0L) logger.info("File download speed is limited by connection speed"); else { logger.info("File download speed limit:" + user.getDownloadSpeedLitmit() + " kB/s"); ch.pipeline().addLast("TrafficShapingHandler", new ChannelTrafficShapingHandler(user.getDownloadSpeedLitmit() * 1024, 0L)); } SendHandler sendFileHandler; if (fs.getDataType().equals("I")) sendFileHandler = new SendBinaryFileHandler(fs, ctx); else sendFileHandler = new SendTextFileHandler(fs, ctx); ch.closeFuture().addListener(sendFileHandler); ch.pipeline().addLast(sendFileHandler); }