Class AbstractBufferManager

java.lang.Object
com.tangosol.util.Base
com.tangosol.io.nio.AbstractBufferManager
All Implemented Interfaces:
ByteBufferManager
Direct Known Subclasses:
MappedBufferManager

public abstract class AbstractBufferManager extends Base implements ByteBufferManager
Provides a basic implementation of ByteBufferManager.
Since:
Coherence 2.2
Author:
cp 2002.09.19
  • Constructor Details

    • AbstractBufferManager

      protected AbstractBufferManager(int cbInitial, int cbMaximum)
      Construct a AbstractBufferManager that supports a buffer of a certain initial and maximum size.
      Parameters:
      cbInitial - the initial size
      cbMaximum - the maximum size
  • Method Details

    • getBuffer

      public ByteBuffer getBuffer()
      Get the current ByteBuffer reference.
      Specified by:
      getBuffer in interface ByteBufferManager
      Returns:
      the current ByteBuffer
    • setBuffer

      protected void setBuffer(ByteBuffer buffer)
      Set the current ByteBuffer reference.
      Parameters:
      buffer - the current ByteBuffer
    • getCapacity

      public int getCapacity()
      Get the capacity of the current ByteBuffer. This is the same as getBuffer().capacity().
      Specified by:
      getCapacity in interface ByteBufferManager
      Returns:
      the capacity of the current ByteBuffer
    • setCapacity

      protected void setCapacity(int cb)
      Set the capacity of the current ByteBuffer. This does not actually allocate a new buffer.
      Parameters:
      cb - the capacity of the managed ByteBuffer
    • getGrowthThreshold

      public int getGrowthThreshold()
      Determine the level (what number of bytes used) above which the current ByteBuffer will need to be "resized" upwards. Returns Integer.MAX_VALUE if the buffer cannot be resized upwards.
      Specified by:
      getGrowthThreshold in interface ByteBufferManager
      Returns:
      the number of bytes that, when the number of used bytes exceeds it, the ByteBuffer will need to grow
    • setGrowthThreshold

      protected void setGrowthThreshold(int cb)
      Specify the level (what number of bytes used) above which the current ByteBuffer will need to be "resized" upwards.
      Parameters:
      cb - the number of bytes that, when the number of used bytes exceeds it, the ByteBuffer will need to grow
    • getShrinkageThreshold

      public int getShrinkageThreshold()
      Determine the level (what number of bytes used) below which the current ByteBuffer will need to be "resized" downwards. Returns 0 if the buffer cannot be resized downwards.
      Specified by:
      getShrinkageThreshold in interface ByteBufferManager
      Returns:
      the number of bytes that, when the number of used bytes drops below it, the ByteBuffer will need to shrink
    • setShrinkageThreshold

      protected void setShrinkageThreshold(int cb)
      Specify the level (what number of bytes used) below which the current ByteBuffer will need to be "resized" downwards. Specify 0 if the buffer cannot be resized downwards.
      Parameters:
      cb - the number of bytes that, when the number of used bytes drops below it, the ByteBuffer will need to shrink
    • getMinCapacity

      public int getMinCapacity()
      Determine the minimum size that the managed buffer can reach. If the buffer is already at its minimum, then this method will return the same value as getCapacity.
      Specified by:
      getMinCapacity in interface ByteBufferManager
      Returns:
      minimum size for the managed buffer
    • setMinCapacity

      protected void setMinCapacity(int cb)
      Specify the minimum size that the managed buffer can reach.
      Parameters:
      cb - minimum size for the managed buffer
    • getMaxCapacity

      public int getMaxCapacity()
      Determine the maximum size that the managed buffer can reach. If the buffer is already at its maximum, then this method will return the same value as getCapacity.
      Specified by:
      getMaxCapacity in interface ByteBufferManager
      Returns:
      maximum size for the managed buffer
    • setMaxCapacity

      protected void setMaxCapacity(int cb)
      Specify the maximum size that the managed buffer can reach.
      Parameters:
      cb - maximum size for the managed buffer
    • getMaxIncrement

      protected int getMaxIncrement()
      Returns:
      maximum size to grow in one step
    • grow

      public void grow(int cbRequired)
      Request that the buffer be grown based on the number of bytes currently required.
      Specified by:
      grow in interface ByteBufferManager
      Parameters:
      cbRequired - the number of bytes that are needed by the requesting operation
    • shrink

      public void shrink(int cbRequired)
      Request that the buffer be shrunk based on the number of bytes currently required.
      Specified by:
      shrink in interface ByteBufferManager
      Parameters:
      cbRequired - the number of contiguous bytes in the buffer, starting from offset 0, that are actually in use
    • calibrate

      protected void calibrate()
      Determine the grow and shrink thresholds based on the current capacity.
    • allocateBuffer

      protected abstract void allocateBuffer()
      Allocate a new buffer, copying old data if there is any.