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.
  • Field Details

    • logger

      private static final InternalLogger logger
    • currentWrittenBytes

      private final AtomicLong currentWrittenBytes
      Current written bytes
    • currentReadBytes

      private final AtomicLong currentReadBytes
      Current read bytes
    • writingTime

      private long writingTime
      Last writing time during current check interval
    • readingTime

      private long readingTime
      Last reading delay during current check interval
    • cumulativeWrittenBytes

      private final AtomicLong cumulativeWrittenBytes
      Long life written bytes
    • cumulativeReadBytes

      private final AtomicLong cumulativeReadBytes
      Long life read bytes
    • lastCumulativeTime

      private long lastCumulativeTime
      Last Time where cumulative bytes where reset to zero: this time is a real EPOC time (informative only)
    • lastWriteThroughput

      private long lastWriteThroughput
      Last writing bandwidth
    • lastReadThroughput

      private long lastReadThroughput
      Last reading bandwidth
    • lastTime

      final AtomicLong lastTime
      Last Time Check taken
    • lastWrittenBytes

      private volatile long lastWrittenBytes
      Last written bytes number during last check interval
    • lastReadBytes

      private volatile long lastReadBytes
      Last read bytes number during last check interval
    • lastWritingTime

      private volatile long lastWritingTime
      Last future writing time during last check interval
    • lastReadingTime

      private volatile long lastReadingTime
      Last reading time during last check interval
    • realWrittenBytes

      private final AtomicLong realWrittenBytes
      Real written bytes
    • realWriteThroughput

      private long realWriteThroughput
      Real writing bandwidth
    • checkInterval

      final AtomicLong checkInterval
      Delay between two captures
    • name

      final String name
      Name of this Monitor
    • trafficShapingHandler

      final AbstractTrafficShapingHandler trafficShapingHandler
      The associated TrafficShapingHandler
    • timer

      final Timer timer
      One Timer for all Counter
    • timerTask

      TimerTask timerTask
      Monitor created once in start()
    • timeout

      volatile Timeout timeout
      used in stop() to cancel the timer
    • monitorActive

      volatile boolean monitorActive
      Is Monitor active
  • 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.
    • resetAccounting

      void resetAccounting(long newLastTime)
      Reset the accounting on Read and Write.
    • configure

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

      void bytesRecvFlowControl(long recv)
      Computes counters for Read.
      Parameters:
      recv - the size in bytes to read
    • bytesWriteFlowControl

      void bytesWriteFlowControl(long write)
      Computes counters for Write.
      Parameters:
      write - the size in bytes to write
    • bytesRealWriteFlowControl

      void bytesRealWriteFlowControl(long write)
      Computes counters for Real Write.
      Parameters:
      write - the size in bytes to write
    • 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