Class Usage<T extends Usage>

java.lang.Object
org.apache.activemq.usage.Usage<T>
All Implemented Interfaces:
Service
Direct Known Subclasses:
MemoryUsage

public abstract class Usage<T extends Usage> extends Object implements Service
Used to keep track of how much of something is being used so that a productive working set usage can be controlled. Main use case is manage memory usage.
  • Field Details

    • usageLock

      protected final ReentrantReadWriteLock usageLock
    • waitForSpaceCondition

      protected final Condition waitForSpaceCondition
    • percentUsage

      protected int percentUsage
    • parent

      protected T extends Usage parent
    • name

      protected String name
  • Constructor Details

    • Usage

      public Usage(T parent, String name, float portion)
  • Method Details

    • retrieveUsage

      protected abstract long retrieveUsage()
    • waitForSpace

      public void waitForSpace() throws InterruptedException
      Throws:
      InterruptedException
    • waitForSpace

      public boolean waitForSpace(long timeout) throws InterruptedException
      Throws:
      InterruptedException
    • waitForSpace

      public boolean waitForSpace(long timeout, int highWaterMark) throws InterruptedException
      Parameters:
      timeout -
      Returns:
      true if space
      Throws:
      InterruptedException
    • isFull

      public boolean isFull()
    • isFull

      public boolean isFull(int highWaterMark)
    • addUsageListener

      public void addUsageListener(UsageListener listener)
    • removeUsageListener

      public void removeUsageListener(UsageListener listener)
    • getNumUsageListeners

      public int getNumUsageListeners()
    • getLimit

      public long getLimit()
    • setLimit

      public void setLimit(long limit)
      Sets the memory limit in bytes. Setting the limit in bytes will set the usagePortion to 0 since the UsageManager is not going to be portion based off the parent. When set using Xbean, values of the form "20 Mb", "1024kb", and "1g" can be used
    • onLimitChange

      protected void onLimitChange()
    • getUsagePortion

      public float getUsagePortion()
    • setUsagePortion

      public void setUsagePortion(float usagePortion)
    • getPercentUsage

      public int getPercentUsage()
    • getPercentUsageMinDelta

      public int getPercentUsageMinDelta()
    • setPercentUsageMinDelta

      public void setPercentUsageMinDelta(int percentUsageMinDelta)
      Sets the minimum number of percentage points the usage has to change before a UsageListener event is fired by the manager.
      Parameters:
      percentUsageMinDelta -
    • getUsage

      public long getUsage()
    • setPercentUsage

      protected void setPercentUsage(int value)
    • caclPercentUsage

      protected int caclPercentUsage()
    • getName

      public String getName()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • start

      public void start()
      Specified by:
      start in interface Service
    • stop

      public void stop()
      Specified by:
      stop in interface Service
    • addChild

      protected void addChild(T child)
    • removeChild

      protected void removeChild(T child)
    • notifyCallbackWhenNotFull

      public boolean notifyCallbackWhenNotFull(Runnable callback)
      Parameters:
      callback -
      Returns:
      true if the UsageManager was full. The callback will only be called if this method returns true.
    • getLimiter

      public UsageCapacity getLimiter()
      Returns:
      the limiter
    • setLimiter

      public void setLimiter(UsageCapacity limiter)
      Parameters:
      limiter - the limiter to set
    • getPollingTime

      public int getPollingTime()
      Returns:
      the pollingTime
    • setPollingTime

      public void setPollingTime(int pollingTime)
      Parameters:
      pollingTime - the pollingTime to set
    • setName

      public void setName(String name)
    • getParent

      public T getParent()
    • setParent

      public void setParent(T parent)
    • setExecutor

      public void setExecutor(ThreadPoolExecutor executor)
    • getExecutor

      public ThreadPoolExecutor getExecutor()
    • isStarted

      public boolean isStarted()