Class Usage<T extends Usage>

  • 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 Detail

      • waitForSpaceCondition

        protected final Condition waitForSpaceCondition
      • percentUsage

        protected int percentUsage
      • parent

        protected T extends Usage parent
    • Constructor Detail

      • Usage

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

      • retrieveUsage

        protected abstract long retrieveUsage()
      • 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()
      • 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)
      • isStarted

        public boolean isStarted()