org.apache.datasketches.memory

## Class DefaultMemoryRequestServer

- java.lang.Object
- - org.apache.datasketches.memory.DefaultMemoryRequestServer

All Implemented Interfaces:
  MemoryRequestServer

    public final class DefaultMemoryRequestServer
    extends Object
    implements MemoryRequestServer

This example MemoryRequestServer is simple but demonstrates one of many ways to manage continuous requests for larger memory. This capability is only available for writable, non-file-memory-mapping resources.

Author:
  Lee Rhodes

### Constructor Summary

Constructors
Constructor and Description
`DefaultMemoryRequestServer()` Default constructor.
`DefaultMemoryRequestServer(boolean offHeap, boolean copyOldToNew)` Constructor with parameters

### Method Summary

All Methods Instance Methods Concrete Methods
`WritableMemory` `request(WritableMemory currentWmem, long newCapacityBytes)` Request new WritableMemory with the given newCapacityBytes.
`void` `requestClose(WritableMemory memToClose, WritableMemory newMemory)` Request to close the resource, if applicable.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.apache.datasketches.memory.MemoryRequestServer

`requestClose`

### Constructor Detail

#### DefaultMemoryRequestServer

    public DefaultMemoryRequestServer()

Default constructor. Create new memory on-heap and do not copy old contents to new memory.

#### DefaultMemoryRequestServer

    public DefaultMemoryRequestServer(boolean offHeap,
                                      boolean copyOldToNew)

Constructor with parameters

Parameters:
  `offHeap` - if true, the returned new memory will be off heap
  `copyOldToNew` - if true, the data from the current memory will be copied to the new memory, starting at address 0, and through the currentMemory capacity.

### Method Detail

#### request

    public WritableMemory request(WritableMemory currentWmem,
                                  long newCapacityBytes)

Description copied from interface: `MemoryRequestServer`
Request new WritableMemory with the given newCapacityBytes. The current Writable Memory will be used to determine the byte order of the returned WritableMemory and other properties.

Specified by:
  `request` in interface `MemoryRequestServer`
Parameters:
  `currentWmem` - the current writableMemory of the client. It must be non-null.
  `newCapacityBytes` - The capacity being requested. It must be > the capacity of the currentWritableMemory.
Returns:
  new WritableMemory with the requested capacity.

#### requestClose

    public void requestClose(WritableMemory memToClose,
                             WritableMemory newMemory)

Description copied from interface: `MemoryRequestServer`
Request to close the resource, if applicable.

Specified by:
  `requestClose` in interface `MemoryRequestServer`
Parameters:
  `memToClose` - the relevant WritbleMemory to be considered for closing. It must be non-null.
  `newMemory` - the newly allocated WritableMemory. The newMemory reference is returned from the client for the convenience of the system that owns the responsibility of memory allocation. It may be null.