Example usage for io.netty.handler.traffic ChannelTrafficShapingHandler ChannelTrafficShapingHandler

List of usage examples for io.netty.handler.traffic ChannelTrafficShapingHandler ChannelTrafficShapingHandler

Introduction

In this page you can find the example usage for io.netty.handler.traffic ChannelTrafficShapingHandler ChannelTrafficShapingHandler.

Prototype

public ChannelTrafficShapingHandler(long writeLimit, long readLimit) 

Source Link

Document

Create a new instance using default Check Interval value of 1000 ms and max time as delay allowed value of 15000 ms.

Usage

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);
}