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

com.alibaba.rocketmq.shade.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:
 *
 * http://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 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 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 ChannelTrafficShapingHandler} and see {@link 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 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 AbstractTrafficShapingHandler} * or directly using the method configure of {@link TrafficCounter}.

* *

Note that a new {@link ChannelTrafficShapingHandler} must be created for each new channel, * but only one {@link 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 io.netty.handler.traffic;




© 2015 - 2024 Weber Informatics LLC | Privacy Policy