All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.asynchttpclient.shaded.io.netty.handler.traffic.package-info Maven / Gradle / Ivy

/*
 * Copyright 2012 The Netty Project
 *
 * The Netty Project licenses this file to you under the Apache License,
 * version 2.0 (the "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at:
 *
 * https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations
 * under the License.
 */

/**
 * Implementation of a Traffic Shaping Handler and Dynamic Statistics.
 *
 * 

The main goal of this package is to allow you to shape the traffic (bandwidth limitation), * but also to get statistics on how many bytes are read or written. Both functions can * be active or inactive (traffic or statistics).

* *

Two classes implement this behavior: *

    *
  • {@link org.asynchttpclient.shaded.io.netty.handler.traffic.TrafficCounter}: this class implements the counters needed by the * handlers. It can be accessed to get some extra information like the read or write bytes since last check, * the read and write bandwidth from last check...
  • * *
  • {@link org.asynchttpclient.shaded.io.netty.handler.traffic.AbstractTrafficShapingHandler}: this abstract class implements * the kernel of traffic shaping. It could be extended to fit your needs. Two classes are proposed as default * implementations: see {@link org.asynchttpclient.shaded.io.netty.handler.traffic.ChannelTrafficShapingHandler} and * {@link org.asynchttpclient.shaded.io.netty.handler.traffic.GlobalTrafficShapingHandler} respectively for Channel traffic shaping and * global traffic shaping.
  • *

* *

Both inbound and outbound traffic can be shaped independently. This is done by either passing in * the desired limiting values to the constructors of both the Channel and Global traffic shaping handlers, * or by calling the configure method on the {@link org.asynchttpclient.shaded.io.netty.handler.traffic.AbstractTrafficShapingHandler}. * A value of 0 for either parameter indicates that there should be no limitation. This allows you to monitor the * incoming and outgoing traffic without shaping.

* *

To activate or deactivate the statistics, you can adjust the delay to a low (suggested not less than 200ms * for efficiency reasons) or a high value (let say 24H in millisecond is huge enough to not get the problem) * or even using 0 which means no computation will be done.

* *

If you want to do anything with these statistics, just override the doAccounting method.
* This interval can be changed either from the method configure * in {@link org.asynchttpclient.shaded.io.netty.handler.traffic.AbstractTrafficShapingHandler} or directly using the method configure * of {@link org.asynchttpclient.shaded.io.netty.handler.traffic.TrafficCounter}.

* *

Note that a new {@link org.asynchttpclient.shaded.io.netty.handler.traffic.ChannelTrafficShapingHandler} must be created * for each new channel, but only one {@link org.asynchttpclient.shaded.io.netty.handler.traffic.GlobalTrafficShapingHandler} must be created * for all channels.

* *

Note also that you can create different GlobalTrafficShapingHandler if you want to separate classes of * channels (for instance either from business point of view or from bind address point of view).

*/ package org.asynchttpclient.shaded.io.netty.handler.traffic;




© 2015 - 2024 Weber Informatics LLC | Privacy Policy