Class TrafficCounter

java.lang.Object
org.jboss.netty.handler.traffic.TrafficCounter
Direct Known Subclasses:
GlobalChannelTrafficCounter

public class TrafficCounter extends Object

TrafficCounter is associated with AbstractTrafficShapingHandler.

A TrafficCounter has for goal to count the traffic in order to enable to limit the traffic or not, globally or per channel. It compute statistics on read and written bytes at the specified interval and call back the AbstractTrafficShapingHandler doAccounting method at every specified interval. If this interval is set to 0, therefore no accounting will be done and only statistics will be computed at each receive or write operations.
  • Constructor Details

    • TrafficCounter

      public TrafficCounter(AbstractTrafficShapingHandler trafficShapingHandler, Timer timer, String name, long checkInterval)
      Constructor with the AbstractTrafficShapingHandler that hosts it, the Timer to use, its name, the checkInterval between two computations in millisecond.
      Parameters:
      trafficShapingHandler - the associated AbstractTrafficShapingHandler
      timer - Could be a HashedWheelTimer, might be null when used from GlobalChannelTrafficCounter.
      name - the name given to this monitor
      checkInterval - the checkInterval in millisecond between two computations.
  • Method Details

    • milliSecondFromNano

      public static long milliSecondFromNano()
      Returns:
      the time in ms using nanoTime, so not real EPOCH time but elapsed time in ms.
    • start

      public void start()
      Start the monitoring process.
    • stop

      public void stop()
      Stop the monitoring process.
    • configure

      public void configure(long newcheckInterval)
      Change checkInterval between two computations in millisecond.
    • getCheckInterval

      public long getCheckInterval()
      Returns:
      the current checkInterval between two computations of traffic counter in millisecond.
    • getLastReadThroughput

      public long getLastReadThroughput()
      Returns:
      the Read Throughput in bytes/s computes in the last check interval.
    • getLastWriteThroughput

      public long getLastWriteThroughput()
      Returns:
      the Write Throughput in bytes/s computes in the last check interval.
    • getLastReadBytes

      public long getLastReadBytes()
      Returns:
      the number of bytes read during the last check Interval.
    • getLastWrittenBytes

      public long getLastWrittenBytes()
      Returns:
      the number of bytes written during the last check Interval.
    • getCurrentReadBytes

      public long getCurrentReadBytes()
      Returns:
      the current number of bytes read since the last checkInterval.
    • getCurrentWrittenBytes

      public long getCurrentWrittenBytes()
      Returns:
      the current number of bytes written since the last check Interval.
    • getLastTime

      public long getLastTime()
      Returns:
      the Time in millisecond of the last check as of System.currentTimeMillis().
    • getCumulativeWrittenBytes

      public long getCumulativeWrittenBytes()
      Returns:
      the cumulativeWrittenBytes
    • getCumulativeReadBytes

      public long getCumulativeReadBytes()
      Returns:
      the cumulativeReadBytes
    • getLastCumulativeTime

      public long getLastCumulativeTime()
      Returns:
      the lastCumulativeTime in millisecond as of System.currentTimeMillis() when the cumulative counters were reset to 0.
    • getRealWrittenBytes

      public AtomicLong getRealWrittenBytes()
      Returns:
      the realWrittenBytes
    • getRealWriteThroughput

      public long getRealWriteThroughput()
      Returns:
      the realWriteThroughput
    • resetCumulativeTime

      public void resetCumulativeTime()
      Reset both read and written cumulative bytes counters and the associated absolute time from System.currentTimeMillis().
    • readTimeToWait

      @Deprecated public long readTimeToWait(long size, long limitTraffic, long maxTime)
      Deprecated.
      Returns the time to wait (if any) for the given length message, using the given limitTraffic and the max wait time.
      Parameters:
      size - the recv size
      limitTraffic - the traffic limit in bytes per second
      maxTime - the max time in ms to wait in case of excess of traffic.
      Returns:
      the current time to wait (in ms) if needed for Read operation.
    • readTimeToWait

      public long readTimeToWait(long size, long limitTraffic, long maxTime, long now)
      Returns the time to wait (if any) for the given length message, using the given limitTraffic and the max wait time.
      Parameters:
      size - the recv size
      limitTraffic - the traffic limit in bytes per second
      maxTime - the max time in ms to wait in case of excess of traffic.
      now - the current time
      Returns:
      the current time to wait (in ms) if needed for Read operation.
    • writeTimeToWait

      @Deprecated public long writeTimeToWait(long size, long limitTraffic, long maxTime)
      Deprecated.
      Returns the time to wait (if any) for the given length message, using the given limitTraffic and the max wait time.
      Parameters:
      size - the write size
      limitTraffic - the traffic limit in bytes per second
      maxTime - the max time in ms to wait in case of excess of traffic.
      Returns:
      the current time to wait (in ms) if needed for Write operation.
    • writeTimeToWait

      public long writeTimeToWait(long size, long limitTraffic, long maxTime, long now)
      Returns the time to wait (if any) for the given length message, using the given limitTraffic and the max wait time.
      Parameters:
      size - the write size
      limitTraffic - the traffic limit in bytes per second
      maxTime - the max time in ms to wait in case of excess of traffic.
      now - the current time
      Returns:
      the current time to wait (in ms) if needed for Write operation.
    • getName

      public String getName()
      Returns:
      the name
    • toString

      public String toString()
      String information
      Overrides:
      toString in class Object