You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by le...@apache.org on 2022/06/06 01:22:58 UTC
[datasketches-memory17] branch main updated: Code cleanup and simplification.
This is an automated email from the ASF dual-hosted git repository.
leerho pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datasketches-memory17.git
The following commit(s) were added to refs/heads/main by this push:
new 72b9d44 Code cleanup and simplification.
72b9d44 is described below
commit 72b9d44e34c4eeef4923d16dcfaa96e5554a005a
Author: Lee Rhodes <le...@users.noreply.github.com>
AuthorDate: Sun Jun 5 18:22:54 2022 -0700
Code cleanup and simplification.
---
.../org/apache/datasketches/memory/BaseState.java | 237 +++++++-----
.../org/apache/datasketches/memory/Buffer.java | 7 +-
.../memory/DefaultMemoryRequestServer.java | 2 +-
.../org/apache/datasketches/memory/Memory.java | 4 +-
.../apache/datasketches/memory/WritableBuffer.java | 2 +-
.../apache/datasketches/memory/WritableMemory.java | 4 +-
.../memory/internal/BaseBufferImpl.java | 6 +-
.../memory/internal/BaseStateImpl.java | 418 +++++++++++----------
.../memory/internal/BaseWritableBufferImpl.java | 96 ++---
.../memory/internal/BaseWritableMemoryImpl.java | 69 ++--
.../memory/internal/NativeWritableBufferImpl.java | 17 +-
.../memory/internal/NativeWritableMemoryImpl.java | 16 +-
.../internal/NonNativeWritableBufferImpl.java | 16 +-
.../internal/NonNativeWritableMemoryImpl.java | 16 +-
.../datasketches/memory/internal/Buffer2Test.java | 2 +-
.../datasketches/memory/internal/BufferTest.java | 2 +-
.../internal/ExampleMemoryRequestServerTest.java | 2 +-
.../datasketches/memory/internal/LeafImplTest.java | 16 +-
.../datasketches/memory/internal/MemoryTest.java | 8 +-
.../internal/NativeWritableBufferImplTest.java | 8 +-
.../internal/NonNativeWritableBufferImplTest.java | 16 +-
.../internal/NonNativeWritableMemoryImplTest.java | 2 +-
.../memory/internal/SpecificLeafTest.java | 101 ++---
.../memory/internal/WritableMemoryTest.java | 14 +-
24 files changed, 510 insertions(+), 571 deletions(-)
diff --git a/src/main/java/org/apache/datasketches/memory/BaseState.java b/src/main/java/org/apache/datasketches/memory/BaseState.java
index ff86e47..50e5cff 100644
--- a/src/main/java/org/apache/datasketches/memory/BaseState.java
+++ b/src/main/java/org/apache/datasketches/memory/BaseState.java
@@ -31,7 +31,7 @@ import jdk.incubator.foreign.ResourceScope;
*
* @author Lee Rhodes
*/
-public interface BaseState /* extends AutoCloseable */ {
+public interface BaseState {
/**
* The java line separator character as a String.
@@ -43,12 +43,42 @@ public interface BaseState /* extends AutoCloseable */ {
ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN
? ByteOrder.BIG_ENDIAN : ByteOrder.LITTLE_ENDIAN;
+ /**
+ * Returns a ByteBuffer view of this Memory object with the given ByteOrder.
+ * Some of the properties of the returned buffer are linked to the properties of this Memory object.
+ * For instance, if this Memory object is immutable (i.e., read-only, see isReadOnly()),
+ * then the resulting buffer is read-only (see Buffer.isReadOnly().
+ * Additionally, if this is a native memory segment, the resulting buffer is direct
+ * (see ByteBuffer.isDirect()). The endianness of the returned buffer will be set to
+ * the given ByteOrder.
+ * @param order the given ByteOrder.
+ * @return a ByteBuffer view of this Memory object with the given ByteOrder.
+ * @throws UnsupportedOperationException - if this segment cannot be mapped onto a ByteBuffer instance,
+ * e.g. because it models an heap-based segment that is not based on a byte[]),
+ * or if its size is greater than Integer.MAX_VALUE.
+ */
+ ByteBuffer asByteBufferView(ByteOrder order);
+
/**
* For off-heap segments, this closes the controlling ResourceScope. If the segment is
* not off-heap, this does nothing.
*/
void close();
+ /**
+ * Returns true if the given object is an instance of this class and has equal contents to
+ * this object in the given range of bytes. This will also check two distinct ranges within the
+ * same object for equals.
+ * @param thisOffsetBytes the starting offset in bytes for this object.
+ * @param that the given BaseState object
+ * @param thatOffsetBytes the starting offset in bytes for the given object
+ * @param lengthBytes the size of the range in bytes
+ * @return true if the given object has equal contents to this object in the given range of
+ * bytes.
+ */
+ boolean equalTo(long thisOffsetBytes, Object that,
+ long thatOffsetBytes, long lengthBytes);
+
/**
* Forces any changes made to the contents of this mapped segment to be written to the storage device described
* by the mapped segment's file descriptor. Please refer to
@@ -57,29 +87,35 @@ public interface BaseState /* extends AutoCloseable */ {
void force();
/**
- * Loads the contents of this mapped segment into physical memory. Please refer to
- * <a href="https://docs.oracle.com/en/java/javase/17/docs/api/jdk.incubator.foreign/jdk/incubator/foreign/MemorySegment.html#load()">load()</a>
+ * Gets the capacity of this object in bytes
+ * @return the capacity of this object in bytes
*/
- void load();
+ long getCapacity();
/**
- * Unloads the contents of this mapped segment from physical memory. Please refer to
- * <a href="https://docs.oracle.com/en/java/javase/17/docs/api/jdk.incubator.foreign/jdk/incubator/foreign/MemorySegment.html#unload()">unload()</a>
+ * Returns the configured MemoryRequestSever or null, if it has not been configured.
+ * @return the configured MemoryRequestSever or null, if it has not been configured.
*/
- void unload();
+ MemoryRequestServer getMemoryRequestServer();
/**
- * Tells whether or not the contents of this mapped segment is resident in physical memory. Please refer to
- * <a href="https://docs.oracle.com/en/java/javase/17/docs/api/jdk.incubator.foreign/jdk/incubator/foreign/MemorySegment.html#isLoaded()">isLoaded()</a>
- * @return true if it is likely that the contents of this segment is resident in physical memory.
+ * Gets the current Type ByteOrder.
+ * This may be different from the ByteOrder of the backing resource and of the Native Byte Order.
+ * @return the current Type ByteOrder.
*/
- boolean isLoaded();
+ ByteOrder getByteOrder();
/**
- * Returns the resource scope associated with this memory segment.
- * @return the resource scope associated with this memory segment.
+ * Returns true if this Memory is backed by a ByteBuffer.
+ * @return true if this Memory is backed by a ByteBuffer.
*/
- ResourceScope scope();
+ boolean hasByteBuffer();
+
+ /**
+ * Returns true if the MemoryRequestServer has been configured.
+ * @return true if the MemoryRequestServer has been configured.
+ */
+ boolean hasMemoryRequestServer();
/**
* Is the underlying resource scope alive?
@@ -88,11 +124,10 @@ public interface BaseState /* extends AutoCloseable */ {
boolean isAlive();
/**
- * Gets the current Type ByteOrder.
- * This may be different from the ByteOrder of the backing resource and of the Native Byte Order.
- * @return the current Type ByteOrder.
+ * Returns true if this instance is a Buffer or WritableBuffer instance.
+ * @return true if this instance is a Buffer or WritableBuffer instance.
*/
- ByteOrder getTypeByteOrder();
+ boolean isBuffer();
/**
* Returns true if the Native ByteOrder is the same as the ByteOrder of the
@@ -104,91 +139,45 @@ public interface BaseState /* extends AutoCloseable */ {
boolean isByteOrderCompatible(ByteOrder byteOrder);
/**
- * Returns true if the given object is an instance of this class and has equal contents to
- * this object in the given range of bytes. This will also check two distinct ranges within the
- * same object for equals.
- * @param thisOffsetBytes the starting offset in bytes for this object.
- * @param that the given BaseState object
- * @param thatOffsetBytes the starting offset in bytes for the given object
- * @param lengthBytes the size of the range in bytes
- * @return true if the given object has equal contents to this object in the given range of
- * bytes.
- */
- boolean equalTo(long thisOffsetBytes, Object that,
- long thatOffsetBytes, long lengthBytes);
-
- /**
- * Returns a ByteBuffer view of this Memory object with the given ByteOrder.
- * Some of the properties of the returned buffer are linked to the properties of this Memory object.
- * For instance, if this Memory object is immutable (i.e., read-only, see isReadOnly()),
- * then the resulting buffer is read-only (see Buffer.isReadOnly().
- * Additionally, if this is a native memory segment, the resulting buffer is direct
- * (see ByteBuffer.isDirect()). The endianness of the returned buffer will be set to
- * the given ByteOrder.
- * @param order the given ByteOrder.
- * @return a ByteBuffer view of this Memory object with the given ByteOrder.
- * @throws UnsupportedOperationException - if this segment cannot be mapped onto a ByteBuffer instance,
- * e.g. because it models an heap-based segment that is not based on a byte[]),
- * or if its size is greater than Integer.MAX_VALUE.
- */
- ByteBuffer asByteBufferView(ByteOrder order);
-
- /**
- * Returns a new ByteBuffer with a copy of the data from this Memory object.
- * This new ByteBuffer will be writable, on heap, and with the endianness specified
- * by the given ByteOrder.
- * @param order the given ByteOrder.
- * @return a new ByteBuffer with a copy of the data from this Memory object.
- */
- ByteBuffer toByteBuffer(ByteOrder order);
-
- /**
- * Returns a copy of the underlying MemorySegment.
- * The size is limited to <i>Integer.MAX_VALUE</i>.
- * @return a copy of the underlying MemorySegment
+ * Returns true if the backing resource is direct (off-heap) memory.
+ * This can be true for allocated direct memory, memory mapped files,
+ * or from a wrapped ByteBuffer that was allocated direct.
+ * @return true if the backing resource is direct (off-heap) memory.
*/
- MemorySegment toMemorySegment();
+ boolean isDirect();
/**
- * Gets the capacity of this object in bytes
- * @return the capacity of this object in bytes
+ * Returns true if this instance is a duplicate of a Buffer instance.
+ * @return true if this instance is a duplicate of a Buffer instance.
*/
- long getCapacity();
+ boolean isDuplicate();
/**
- * Returns the 64-bit hash of the sequence of bytes in this object specified by
- * <i>offsetBytes</i>, <i>lengthBytes</i> and a <i>seed</i>. Note that the sequence of bytes is
- * always processed in the same order independent of endianness.
- *
- * @param offsetBytes the given offset in bytes to the first byte of the byte sequence.
- * @param lengthBytes the given length in bytes of the byte sequence.
- * @param seed the given long seed.
- * @return the 64-bit hash of the sequence of bytes in this object specified by
- * <i>offsetBytes</i> and <i>lengthBytes</i>.
+ * Returns true if the backing resource is on the Java heap.
+ * This can be true for wrapped heap primitive arrays
+ * or from a wrapped ByteBuffer that was allocated on the Java heap.
+ * @return true if the backing resource is on the Java heap.
*/
- long xxHash64(long offsetBytes, long lengthBytes, long seed);
+ boolean isHeap();
/**
- * Returns a 64-bit hash from a single long. This method has been optimized for speed when only
- * a single hash of a long is required.
- * @param in A long.
- * @param seed A long valued seed.
- * @return the hash.
+ * Tells whether or not the contents of this mapped segment is resident in physical memory. Please refer to
+ * <a href="https://docs.oracle.com/en/java/javase/17/docs/api/jdk.incubator.foreign/jdk/incubator/foreign/MemorySegment.html#isLoaded()">isLoaded()</a>
+ * @return true if it is likely that the contents of this segment is resident in physical memory.
*/
- long xxHash64(long in, long seed);
+ boolean isLoaded();
/**
- * Returns true if this Memory is backed by a ByteBuffer.
- * @return true if this Memory is backed by a ByteBuffer.
+ * Returns true if this instance is of a memory mapped file.
+ * @return true if this instance is of a memory mapped file.
*/
- boolean hasByteBuffer();
+ boolean isMapped();
/**
- * Returns true if the backing resource is direct (off-heap) memory.
- * This is the case for allocated direct memory, memory mapped files,
- * @return true if the backing resource is direct (off-heap) memory.
+ * Returns true if this instance is of a Memory or WritableMemory instance
+ * @return true if this instance is of a Memory or WritableMemory instance
*/
- boolean isDirect();
+ boolean isMemory();
/**
* Returns true if this object or the backing resource is read-only.
@@ -196,6 +185,12 @@ public interface BaseState /* extends AutoCloseable */ {
*/
boolean isReadOnly();
+ /**
+ * Returns true if this instance is a region view of another Memory or Buffer
+ * @return true if this instance is a region view of another Memory or Buffer
+ */
+ boolean isRegion();
+
/**
* Returns true if the backing resource of <i>this</i> is identical with the backing resource
* of <i>that</i>. The capacities must be the same. If <i>this</i> is a region,
@@ -207,25 +202,32 @@ public interface BaseState /* extends AutoCloseable */ {
boolean isSameResource(Object that);
/**
- * Returns the configured MemoryRequestSever or null, if it has not been configured.
- * @return the configured MemoryRequestSever or null, if it has not been configured.
+ * Loads the contents of this mapped segment into physical memory. Please refer to
+ * <a href="https://docs.oracle.com/en/java/javase/17/docs/api/jdk.incubator.foreign/jdk/incubator/foreign/MemorySegment.html#load()">load()</a>
*/
- MemoryRequestServer getMemoryRequestServer();
+ void load();
/**
- * Returns true if the MemoryRequestServer has been configured.
- * @return true if the MemoryRequestServer has been configured.
+ * Returns the resource scope associated with this memory segment.
+ * @return the resource scope associated with this memory segment.
*/
- boolean hasMemoryRequestServer();
+ ResourceScope scope();
+
+ // /**
+ // * Sets the default MemoryRequestServer to be used in case of capacity overflow of off-heap
+ // * (Direct or Native) allocated Memory or of on-heap allocated Memory.
+ // * @param memReqSvr the given default MemoryRequestServer
+ // */
+ // void setMemoryRequestServer(MemoryRequestServer memReqSvr);
/**
- * Sets the default MemoryRequestServer to be used in case of capacity overflow of off-heap
- * (Direct or Native) allocated Memory or of on-heap allocated Memory.
- * @param memReqSvr the given default MemoryRequestServer
+ * Returns a new ByteBuffer with a copy of the data from this Memory object.
+ * This new ByteBuffer will be writable, on heap, and with the endianness specified
+ * by the given ByteOrder.
+ * @param order the given ByteOrder.
+ * @return a new ByteBuffer with a copy of the data from this Memory object.
*/
- void setMemoryRequestServer(MemoryRequestServer memReqSvr);
-
- //TO STRING
+ ByteBuffer toByteBuffer(ByteOrder order);
/**
* Returns a description of this object with an optional formatted hex string of the data
@@ -238,4 +240,41 @@ public interface BaseState /* extends AutoCloseable */ {
*/
String toHexString(String comment, long offsetBytes, int lengthBytes, boolean withData);
+ /**
+ * Returns a copy of the underlying MemorySegment.
+ * The size is limited to <i>Integer.MAX_VALUE</i>.
+ * @return a copy of the underlying MemorySegment
+ */
+ MemorySegment toMemorySegment();
+
+ /**
+ * Unloads the contents of this mapped segment from physical memory. Please refer to
+ * <a href="https://docs.oracle.com/en/java/javase/17/docs/api/jdk.incubator.foreign/jdk/incubator/foreign/MemorySegment.html#unload()">unload()</a>
+ */
+ void unload();
+
+ /**
+ * Returns a 64-bit hash from a single long. This method has been optimized for speed when only
+ * a single hash of a long is required.
+ * @param in A long.
+ * @param seed A long valued seed.
+ * @return the hash.
+ */
+ long xxHash64(long in, long seed);
+
+ //TO STRING
+
+ /**
+ * Returns the 64-bit hash of the sequence of bytes in this object specified by
+ * <i>offsetBytes</i>, <i>lengthBytes</i> and a <i>seed</i>. Note that the sequence of bytes is
+ * always processed in the same order independent of endianness.
+ *
+ * @param offsetBytes the given offset in bytes to the first byte of the byte sequence.
+ * @param lengthBytes the given length in bytes of the byte sequence.
+ * @param seed the given long seed.
+ * @return the 64-bit hash of the sequence of bytes in this object specified by
+ * <i>offsetBytes</i> and <i>lengthBytes</i>.
+ */
+ long xxHash64(long offsetBytes, long lengthBytes, long seed);
+
}
diff --git a/src/main/java/org/apache/datasketches/memory/Buffer.java b/src/main/java/org/apache/datasketches/memory/Buffer.java
index b73b70a..f6da017 100644
--- a/src/main/java/org/apache/datasketches/memory/Buffer.java
+++ b/src/main/java/org/apache/datasketches/memory/Buffer.java
@@ -84,10 +84,9 @@ public interface Buffer extends BaseBuffer {
* <i>start</i>, <i>position</i> and <i>end</i>.
*/
default Buffer duplicate() {
- return duplicate(getTypeByteOrder());
+ return duplicate(getByteOrder());
}
-
/**
* Returns a read-only duplicate view of this Buffer with the same but independent values of
* <i>start</i>, <i>position</i> and <i>end</i>, but with the specified byteOrder.
@@ -126,7 +125,7 @@ public interface Buffer extends BaseBuffer {
* <i>position</i> and <i>end</i>.
*/
default Buffer region() {
- return region(getPosition(), getEnd() - getPosition(), getTypeByteOrder());
+ return region(getPosition(), getEnd() - getPosition(), getByteOrder());
}
/**
@@ -158,7 +157,7 @@ public interface Buffer extends BaseBuffer {
* @return Memory
*/
default Memory asMemory() {
- return asMemory(getTypeByteOrder());
+ return asMemory(getByteOrder());
}
/**
diff --git a/src/main/java/org/apache/datasketches/memory/DefaultMemoryRequestServer.java b/src/main/java/org/apache/datasketches/memory/DefaultMemoryRequestServer.java
index 51c2d2b..f8f828c 100644
--- a/src/main/java/org/apache/datasketches/memory/DefaultMemoryRequestServer.java
+++ b/src/main/java/org/apache/datasketches/memory/DefaultMemoryRequestServer.java
@@ -73,7 +73,7 @@ public final class DefaultMemoryRequestServer implements MemoryRequestServer {
*/
@Override
public WritableMemory request(final WritableMemory currentWritableMemory, final long capacityBytes) {
- final WritableMemory wmem = WritableMemory.allocate((int)capacityBytes, currentWritableMemory.getTypeByteOrder());
+ final WritableMemory wmem = WritableMemory.allocate((int)capacityBytes, currentWritableMemory.getByteOrder());
return wmem;
}
diff --git a/src/main/java/org/apache/datasketches/memory/Memory.java b/src/main/java/org/apache/datasketches/memory/Memory.java
index 5222a01..1c25d80 100644
--- a/src/main/java/org/apache/datasketches/memory/Memory.java
+++ b/src/main/java/org/apache/datasketches/memory/Memory.java
@@ -138,7 +138,7 @@ public interface Memory extends BaseState {
* offsetBytes and capacityBytes.
*/
default Memory region(long offsetBytes, long capacityBytes) {
- return region(offsetBytes, capacityBytes, getTypeByteOrder());
+ return region(offsetBytes, capacityBytes, getByteOrder());
}
/**
@@ -170,7 +170,7 @@ public interface Memory extends BaseState {
* @return a new <i>Buffer</i>
*/
default Buffer asBuffer() {
- return asBuffer(getTypeByteOrder());
+ return asBuffer(getByteOrder());
}
/**
diff --git a/src/main/java/org/apache/datasketches/memory/WritableBuffer.java b/src/main/java/org/apache/datasketches/memory/WritableBuffer.java
index f3cae5d..a87b31e 100644
--- a/src/main/java/org/apache/datasketches/memory/WritableBuffer.java
+++ b/src/main/java/org/apache/datasketches/memory/WritableBuffer.java
@@ -123,7 +123,7 @@ public interface WritableBuffer extends Buffer {
* @return a new <i>WritableBuffer</i> representing the defined writable region.
*/
default WritableBuffer writableRegion() {
- return writableRegion(getPosition(), getEnd() - getPosition(), getTypeByteOrder());
+ return writableRegion(getPosition(), getEnd() - getPosition(), getByteOrder());
}
/**
diff --git a/src/main/java/org/apache/datasketches/memory/WritableMemory.java b/src/main/java/org/apache/datasketches/memory/WritableMemory.java
index a2a60d2..1e47296 100644
--- a/src/main/java/org/apache/datasketches/memory/WritableMemory.java
+++ b/src/main/java/org/apache/datasketches/memory/WritableMemory.java
@@ -187,7 +187,7 @@ public interface WritableMemory extends Memory {
* @return a new <i>WritableMemory</i> representing the defined writable region.
*/
default WritableMemory writableRegion(long offsetBytes, long capacityBytes) {
- return writableRegion(offsetBytes, capacityBytes, getTypeByteOrder());
+ return writableRegion(offsetBytes, capacityBytes, getByteOrder());
}
/**
@@ -221,7 +221,7 @@ public interface WritableMemory extends Memory {
* @return a new <i>WritableBuffer</i> with a view of this WritableMemory
*/
default WritableBuffer asWritableBuffer() {
- return asWritableBuffer(getTypeByteOrder());
+ return asWritableBuffer(getByteOrder());
}
/**
diff --git a/src/main/java/org/apache/datasketches/memory/internal/BaseBufferImpl.java b/src/main/java/org/apache/datasketches/memory/internal/BaseBufferImpl.java
index b85debf..4166ed6 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/BaseBufferImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/BaseBufferImpl.java
@@ -20,6 +20,7 @@
package org.apache.datasketches.memory.internal;
import org.apache.datasketches.memory.BaseBuffer;
+import org.apache.datasketches.memory.MemoryRequestServer;
import jdk.incubator.foreign.MemorySegment;
@@ -49,8 +50,9 @@ public abstract class BaseBufferImpl extends BaseStateImpl implements BaseBuffer
//Pass-through ctor
BaseBufferImpl(
final MemorySegment seg,
- final int typeId) {
- super(seg, typeId);
+ final int typeId,
+ final MemoryRequestServer memReqSvr) {
+ super(seg, typeId, memReqSvr);
capacity = end = seg.byteSize();
}
diff --git a/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java b/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java
index 97580d1..8783e68 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java
@@ -27,6 +27,8 @@ import java.util.Objects;
import org.apache.datasketches.memory.BaseState;
import org.apache.datasketches.memory.MemoryRequestServer;
+import org.apache.datasketches.memory.WritableBuffer;
+import org.apache.datasketches.memory.WritableMemory;
import jdk.incubator.foreign.MemoryAddress;
import jdk.incubator.foreign.MemorySegment;
@@ -74,10 +76,6 @@ public abstract class BaseStateImpl implements BaseState {
// X000 0000
public static final int BYTEBUF = 1 << 7;
- final MemorySegment seg;
- final int typeId;
- MemoryRequestServer memReqSvr;
-
static {
final String jdkVer = System.getProperty("java.version");
final int[] p = parseJavaVersion(jdkVer);
@@ -85,30 +83,17 @@ public abstract class BaseStateImpl implements BaseState {
JDK_MAJOR = (p[0] == 1) ? p[1] : p[0];
}
- public BaseStateImpl(final MemorySegment seg, final int typeId) {
+ final MemorySegment seg;
+ final int typeId;
+
+ MemoryRequestServer memReqSvr;
+
+ public BaseStateImpl(final MemorySegment seg, final int typeId, final MemoryRequestServer memReqSvr) {
this.seg = seg;
this.typeId = typeId;
+ this.memReqSvr = memReqSvr;
}
- @Override
- public void force() { seg.force(); }
-
- @Override
- public void load() { seg.load(); }
-
- @Override
- public void unload() { seg.unload(); }
-
- @Override
- public boolean isLoaded() { return seg.isLoaded(); }
-
- @Override
- public ResourceScope scope() { return seg.scope(); }
-
- @SuppressWarnings("resource")
- @Override
- public boolean isAlive() { return seg.scope().isAlive(); }
-
/**
* Check the requested offset and length against the allocated size.
* The invariants equation is: {@code 0 <= reqOff <= reqLen <= reqOff + reqLen <= allocSize}.
@@ -126,161 +111,33 @@ public abstract class BaseStateImpl implements BaseState {
}
}
- @SuppressWarnings("resource")
- @Override
- public void close() {
- if (seg != null && seg.scope().isAlive() && !seg.scope().isImplicit()) {
- if (seg.isNative() || seg.isMapped()) {
- seg.scope().close();
- }
+ public static void checkJavaVersion(final String jdkVer, final int p0) {
+ if ( p0 != 17 ) {
+ throw new IllegalArgumentException(
+ "Unsupported JDK Major Version, must be 17; " + jdkVer);
}
}
- @Override
- public final ByteOrder getTypeByteOrder() {
- return isNonNativeType() ? NON_NATIVE_BYTE_ORDER : ByteOrder.nativeOrder();
- }
-
- @Override
- public final boolean isByteOrderCompatible(final ByteOrder byteOrder) {
- final ByteOrder typeBO = getTypeByteOrder();
- return typeBO == ByteOrder.nativeOrder() && typeBO == byteOrder;
- }
-
- @Override
- public final boolean equalTo(final long thisOffsetBytes, final Object that,
- final long thatOffsetBytes, final long lengthBytes) {
- return that instanceof BaseStateImpl
- ? CompareAndCopy.equals(seg, thisOffsetBytes, ((BaseStateImpl) that).seg, thatOffsetBytes, lengthBytes)
- : false;
- }
-
- @Override
- public final ByteBuffer asByteBufferView(final ByteOrder order) {
- final ByteBuffer byteBuf = seg.asByteBuffer().order(order);
- return byteBuf;
- }
-
- @Override
- public ByteBuffer toByteBuffer(final ByteOrder order) {
- Objects.requireNonNull(order, "The input ByteOrder must not be null");
- return ByteBuffer.wrap(seg.toByteArray());
- }
-
- @Override
- public MemorySegment toMemorySegment() {
- final MemorySegment arrSeg = MemorySegment.ofArray(new byte[(int)seg.byteSize()]);
- arrSeg.copyFrom(seg);
- return arrSeg;
- }
-
- @Override
- public final long getCapacity() {
- return seg.byteSize();
- }
-
- @Override
- public MemoryRequestServer getMemoryRequestServer() {
- return memReqSvr;
- }
-
- @Override
- public boolean hasMemoryRequestServer() {
- return memReqSvr != null;
- }
-
- @Override
- public void setMemoryRequestServer(final MemoryRequestServer memReqSvr) {
- this.memReqSvr = memReqSvr;
- }
-
- int getTypeId() {
- return typeId;
- }
-
- @Override
- public final long xxHash64(final long offsetBytes, final long lengthBytes, final long seed) {
- return XxHash64.hash(seg, offsetBytes, lengthBytes, seed);
- }
-
- @Override
- public final long xxHash64(final long in, final long seed) {
- return XxHash64.hash(in, seed);
- }
-
- @Override
- public final boolean hasByteBuffer() {
- return isByteBufferType();
- }
-
- @Override
- public final boolean isDirect() {
- return seg.isNative();
- }
-
- @Override
- public final boolean isSameResource(final Object that) {
- if (this == that) { return true; }
- final MemoryAddress myAdd = seg.address();
- if (that instanceof BaseStateImpl) {
- final MemoryAddress thatAdd = ((BaseStateImpl)that).seg.address();
- return (myAdd.equals(thatAdd));
+ /**
+ * Returns first two number groups of the java version string.
+ * @param jdkVer the java version string from System.getProperty("java.version").
+ * @return first two number groups of the java version string.
+ * @throws IllegalArgumentException for an improper Java version string.
+ */
+ public static int[] parseJavaVersion(final String jdkVer) {
+ final int p0, p1;
+ try {
+ String[] parts = jdkVer.trim().split("\\.");//grab only number groups and "."
+ parts = parts[0].split("\\."); //split out the number groups
+ p0 = Integer.parseInt(parts[0]); //the first number group
+ p1 = (parts.length > 1) ? Integer.parseInt(parts[1]) : 0; //2nd number group, or 0
+ } catch (final NumberFormatException | ArrayIndexOutOfBoundsException e) {
+ throw new IllegalArgumentException("Improper Java -version string: " + jdkVer + "\n" + e);
}
- return false;
- }
-
- //TYPE ID Management
-
- @Override
- public final boolean isReadOnly() {
- return ((getTypeId() & READONLY) > 0) || seg.isReadOnly();
- }
-
- // final static int setReadOnlyType(final int type, final boolean readOnly) { //not used
- // return (type & ~READONLY) | (readOnly ? READONLY : 0);
- // }
-
- final boolean isRegionType() {
- return (getTypeId() & REGION) > 0;
- }
-
- final boolean isDuplicateType() {
- return (getTypeId() & DUPLICATE) > 0;
- }
-
- final boolean isMemoryType() {
- return (getTypeId() & BUFFER) == 0;
- }
-
- final boolean isBufferType() {
- return (getTypeId() & BUFFER) > 0;
- }
-
- final boolean isNativeType() {
- return (getTypeId() & NONNATIVE) == 0;
- }
-
- final boolean isNonNativeType() {
- return (getTypeId() & NONNATIVE) > 0;
- }
-
- final boolean isHeapType() { //test only
- return (getTypeId() >>> 3 & 3) == 0;
- }
-
- final boolean isDirectType() { //test only
- return (getTypeId() & DIRECT) > 0;
- }
-
- final boolean isMapType() { //test only
- return (getTypeId() & MAP) > 0;
- }
-
- final boolean isByteBufferType() {
- return (getTypeId() & BYTEBUF) > 0;
+ checkJavaVersion(jdkVer, p0);
+ return new int[] {p0, p1};
}
- //TO STRING
/**
* Decodes the resource type. This is primarily for debugging.
* @param typeId the given typeId
@@ -325,10 +182,38 @@ public abstract class BaseStateImpl implements BaseState {
return sb.toString();
}
- @Override
- public final String toHexString(final String comment, final long offsetBytes, final int lengthBytes,
- final boolean withData) {
- return toHex(this, comment, offsetBytes, lengthBytes, withData);
+ static final WritableBuffer selectBuffer(
+ final MemorySegment segment,
+ final int type,
+ final MemoryRequestServer memReqSvr,
+ final boolean byteBufferType,
+ final boolean mapType,
+ final boolean nativeBOType) {
+ final MemoryRequestServer memReqSvr2 = (byteBufferType || mapType) ? null : memReqSvr;
+ final WritableBuffer wbuf;
+ if (nativeBOType) {
+ wbuf = new NativeWritableBufferImpl(segment, type, memReqSvr2);
+ } else { //non-native BO
+ wbuf = new NonNativeWritableBufferImpl(segment, type, memReqSvr2);
+ }
+ return wbuf;
+ }
+
+ static final WritableMemory selectMemory(
+ final MemorySegment segment,
+ final int type,
+ final MemoryRequestServer memReqSvr,
+ final boolean byteBufferType,
+ final boolean mapType,
+ final boolean nativeBOType) {
+ final MemoryRequestServer memReqSvr2 = (byteBufferType || mapType) ? null : memReqSvr;
+ final WritableMemory wmem;
+ if (nativeBOType) {
+ wmem = new NativeWritableMemoryImpl(segment, type, memReqSvr2);
+ } else { //non-native BO
+ wmem = new NonNativeWritableMemoryImpl(segment, type, memReqSvr2);
+ }
+ return wmem;
}
/**
@@ -362,7 +247,7 @@ public abstract class BaseStateImpl implements BaseState {
sb.append("MemoryAddress hashCode : ").append(addHCStr).append(LS);
sb.append("MemReqSvr, hashCode : ").append(memReqStr).append(LS);
sb.append("Read Only : ").append(state.isReadOnly()).append(LS);
- sb.append("Type Byte Order : ").append(state.getTypeByteOrder().toString()).append(LS);
+ sb.append("Type Byte Order : ").append(state.getByteOrder().toString()).append(LS);
sb.append("Native Byte Order : ").append(ByteOrder.nativeOrder().toString()).append(LS);
sb.append("JDK Runtime Version : ").append(JDK).append(LS);
//Data detail
@@ -382,31 +267,166 @@ public abstract class BaseStateImpl implements BaseState {
return sb.toString();
}
- /**
- * Returns first two number groups of the java version string.
- * @param jdkVer the java version string from System.getProperty("java.version").
- * @return first two number groups of the java version string.
- * @throws IllegalArgumentException for an improper Java version string.
- */
- public static int[] parseJavaVersion(final String jdkVer) {
- final int p0, p1;
- try {
- String[] parts = jdkVer.trim().split("\\.");//grab only number groups and "."
- parts = parts[0].split("\\."); //split out the number groups
- p0 = Integer.parseInt(parts[0]); //the first number group
- p1 = (parts.length > 1) ? Integer.parseInt(parts[1]) : 0; //2nd number group, or 0
- } catch (final NumberFormatException | ArrayIndexOutOfBoundsException e) {
- throw new IllegalArgumentException("Improper Java -version string: " + jdkVer + "\n" + e);
+ @Override
+ public final ByteBuffer asByteBufferView(final ByteOrder order) {
+ final ByteBuffer byteBuf = seg.asByteBuffer().order(order);
+ return byteBuf;
+ }
+
+ @SuppressWarnings("resource")
+ @Override
+ public void close() {
+ if (seg != null && seg.scope().isAlive() && !seg.scope().isImplicit()) {
+ if (seg.isNative() || seg.isMapped()) {
+ seg.scope().close();
+ }
}
- checkJavaVersion(jdkVer, p0);
- return new int[] {p0, p1};
}
- public static void checkJavaVersion(final String jdkVer, final int p0) {
- if ( p0 != 17 ) {
- throw new IllegalArgumentException(
- "Unsupported JDK Major Version, must be 17; " + jdkVer);
+ @Override
+ public final boolean equalTo(final long thisOffsetBytes, final Object that,
+ final long thatOffsetBytes, final long lengthBytes) {
+ return that instanceof BaseStateImpl
+ ? CompareAndCopy.equals(seg, thisOffsetBytes, ((BaseStateImpl) that).seg, thatOffsetBytes, lengthBytes)
+ : false;
+ }
+
+ @Override
+ public void force() { seg.force(); }
+
+ @Override
+ public final long getCapacity() {
+ return seg.byteSize();
+ }
+
+ @Override
+ public MemoryRequestServer getMemoryRequestServer() {
+ return memReqSvr;
+ }
+
+ @Override
+ public final ByteOrder getByteOrder() {
+ return (typeId & NONNATIVE) > 0 ? NON_NATIVE_BYTE_ORDER : ByteOrder.nativeOrder();
+ }
+
+ @Override
+ public final boolean hasByteBuffer() {
+ return (typeId & BYTEBUF) > 0;
+ }
+
+ @Override
+ public boolean hasMemoryRequestServer() {
+ return memReqSvr != null;
+ }
+
+ @SuppressWarnings("resource")
+ @Override
+ public boolean isAlive() { return seg.scope().isAlive(); }
+
+ @Override
+ public final boolean isByteOrderCompatible(final ByteOrder byteOrder) {
+ final ByteOrder typeBO = getByteOrder();
+ return typeBO == ByteOrder.nativeOrder() && typeBO == byteOrder;
+ }
+
+ @Override
+ public final boolean isBuffer() {
+ return (typeId & BUFFER) > 0;
+ }
+
+ @Override
+ public final boolean isDirect() {
+ assert seg.isNative() == (typeId & DIRECT) > 0;
+ return seg.isNative();
+ }
+
+ @Override
+ public final boolean isDuplicate() {
+ return (typeId & DUPLICATE) > 0;
+ }
+
+ @Override
+ public final boolean isHeap() {
+ return !isDirect() && !isMapped();
+ }
+
+ @Override
+ public boolean isLoaded() { return seg.isLoaded(); }
+
+ @Override
+ public boolean isMapped() {
+ assert seg.isMapped() == (typeId & MAP) > 0;
+ return seg.isMapped();
+ }
+
+ @Override
+ public final boolean isMemory() {
+ return (typeId & BUFFER) == 0;
+ }
+
+ @Override
+ public final boolean isReadOnly() {
+ assert seg.isReadOnly() == (typeId & READONLY) > 0;
+ return seg.isReadOnly();
+ }
+
+ @Override
+ public final boolean isRegion() {
+ return (typeId & REGION) > 0;
+ }
+
+ @Override
+ public final boolean isSameResource(final Object that) {
+ if (this == that) { return true; }
+ final MemoryAddress myAdd = seg.address();
+ if (that instanceof BaseStateImpl) {
+ final MemoryAddress thatAdd = ((BaseStateImpl)that).seg.address();
+ return (myAdd.equals(thatAdd));
}
+ return false;
+ }
+
+ @Override
+ public void load() { seg.load(); }
+
+ @Override
+ public ResourceScope scope() { return seg.scope(); }
+
+ // @Override
+ // public void setMemoryRequestServer(final MemoryRequestServer memReqSvr) {
+ // this.memReqSvr = memReqSvr;
+ // }
+
+ @Override
+ public ByteBuffer toByteBuffer(final ByteOrder order) {
+ Objects.requireNonNull(order, "The input ByteOrder must not be null");
+ return ByteBuffer.wrap(seg.toByteArray());
+ }
+
+ @Override
+ public final String toHexString(final String comment, final long offsetBytes, final int lengthBytes,
+ final boolean withData) {
+ return toHex(this, comment, offsetBytes, lengthBytes, withData);
+ }
+
+ @Override
+ public MemorySegment toMemorySegment() {
+ final MemorySegment arrSeg = MemorySegment.ofArray(new byte[(int)seg.byteSize()]);
+ arrSeg.copyFrom(seg);
+ return arrSeg;
+ }
+
+ @Override
+ public void unload() { seg.unload(); }
+
+ @Override
+ public final long xxHash64(final long in, final long seed) {
+ return XxHash64.hash(in, seed);
+ }
+
+ @Override
+ public final long xxHash64(final long offsetBytes, final long lengthBytes, final long seed) {
+ return XxHash64.hash(seg, offsetBytes, lengthBytes, seed);
}
}
diff --git a/src/main/java/org/apache/datasketches/memory/internal/BaseWritableBufferImpl.java b/src/main/java/org/apache/datasketches/memory/internal/BaseWritableBufferImpl.java
index 180c09a..e8ba9db 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/BaseWritableBufferImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/BaseWritableBufferImpl.java
@@ -25,6 +25,7 @@ import java.util.Objects;
import org.apache.datasketches.memory.Buffer;
import org.apache.datasketches.memory.Memory;
+import org.apache.datasketches.memory.MemoryRequestServer;
import org.apache.datasketches.memory.ReadOnlyException;
import org.apache.datasketches.memory.WritableBuffer;
import org.apache.datasketches.memory.WritableMemory;
@@ -55,8 +56,9 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
//Pass-through constructor
BaseWritableBufferImpl(
final MemorySegment seg,
- final int typeId) {
- super(seg, typeId);
+ final int typeId,
+ final MemoryRequestServer memReqSvr) {
+ super(seg, typeId, memReqSvr);
}
//NO WRAP HEAP ARRAY RESOURCE
@@ -74,13 +76,13 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
| (localReadOnly ? READONLY : 0)
| (seg.isNative() ? DIRECT : 0)
| (seg.isMapped() ? MAP : 0);
+ final WritableBuffer wbuf;
if (byteOrder == NON_NATIVE_BYTE_ORDER) {
type |= NONNATIVE;
- final WritableBuffer wbuf = NonNativeWritableBufferImpl.notMemoryExtendable(seg, type);
- wbuf.setStartPositionEnd(0, byteBuffer.position(), byteBuffer.limit());
- return wbuf;
+ wbuf = new NonNativeWritableBufferImpl(seg, type, null);
+ } else {
+ wbuf = new NativeWritableBufferImpl(seg, type, null);
}
- final WritableBuffer wbuf = NativeWritableBufferImpl.notMemoryExtendable(seg, type);
wbuf.setStartPositionEnd(0, byteBuffer.position(), byteBuffer.limit());
return wbuf;
}
@@ -114,11 +116,11 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
final MemorySegment slice = (readOnly && !seg.isReadOnly())
? seg.asSlice(offsetBytes, capacityBytes).asReadOnly()
: seg.asSlice(offsetBytes, capacityBytes);
- final boolean duplicateType = isDuplicateType();
+ final boolean duplicateType = isDuplicate();
final boolean mapType = seg.isMapped();
final boolean directType = seg.isNative();
final boolean nativeBOType = byteOrder == ByteOrder.nativeOrder();
- final boolean byteBufferType = isByteBufferType();
+ final boolean byteBufferType = hasByteBuffer();
final int type = BUFFER | REGION
| (readOnly ? READONLY : 0)
| (duplicateType ? DUPLICATE : 0)
@@ -126,32 +128,21 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
| (directType ? DIRECT : 0)
| (nativeBOType ? NATIVE : NONNATIVE)
| (byteBufferType ? BYTEBUF : 0);
- if (byteBufferType) {
- if (nativeBOType) { return NativeWritableBufferImpl.notMemoryExtendable(slice, type); }
- return NonNativeWritableBufferImpl.notMemoryExtendable(slice, type);
- }
- if (mapType) {
- if (nativeBOType) { return NativeWritableBufferImpl.notMemoryExtendable(slice, type); }
- return NonNativeWritableBufferImpl.notMemoryExtendable(slice, type);
- }
- if (directType) {
- if (nativeBOType) { return NativeWritableBufferImpl.memoryExtendable(slice, type, memReqSvr); }
- return NonNativeWritableBufferImpl.memoryExtendable(slice, type, memReqSvr);
- }
- //else heap type
- if (nativeBOType) { return NativeWritableBufferImpl.memoryExtendable(slice, type, memReqSvr); }
- return NonNativeWritableBufferImpl.memoryExtendable(slice, type, memReqSvr);
+
+ final WritableBuffer wbuf = selectBuffer(slice, type, memReqSvr, byteBufferType, mapType, nativeBOType);
+ wbuf.setStartPositionEnd(0, 0, wbuf.getCapacity());
+ return wbuf;
}
//DUPLICATES
@Override
public Buffer duplicate() {
- return toWritableDuplicateImpl(true, getTypeByteOrder());
+ return duplicateImpl(true, getByteOrder());
}
@Override
public Buffer duplicate(final ByteOrder byteOrder) {
- return toWritableDuplicateImpl(true, byteOrder);
+ return duplicateImpl(true, byteOrder);
}
@Override
@@ -159,7 +150,7 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
if (isReadOnly()) {
throw new ReadOnlyException("Cannot create a writable duplicate from a read-only Buffer.");
}
- return toWritableDuplicateImpl(false, getTypeByteOrder());
+ return duplicateImpl(false, getByteOrder());
}
@Override
@@ -167,44 +158,27 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
if (isReadOnly()) {
throw new ReadOnlyException("Cannot create a writable duplicate from a read-only Buffer.");
}
- return toWritableDuplicateImpl(false, byteOrder);
+ return duplicateImpl(false, byteOrder);
}
- private WritableBuffer toWritableDuplicateImpl(final boolean localReadOnly, final ByteOrder byteOrder) {
+ private WritableBuffer duplicateImpl(final boolean localReadOnly, final ByteOrder byteOrder) {
if (!this.isAlive()) { throw new IllegalStateException("This Memory is not alive."); }
final boolean readOnly = isReadOnly() || localReadOnly;
final MemorySegment seg2 = (readOnly && !seg.isReadOnly()) ? seg.asReadOnly() : seg;
- final boolean regionType = isRegionType();
- final boolean duplicateType = true;
+ final boolean regionType = isRegion();
final boolean mapType = seg.isMapped();
final boolean directType = seg.isNative();
final boolean nativeBOType = byteOrder == ByteOrder.nativeOrder();
- final boolean byteBufferType = isByteBufferType();
- final int type = BUFFER
+ final boolean byteBufferType = hasByteBuffer();
+ final int type = BUFFER | DUPLICATE
| (readOnly ? READONLY : 0)
| (regionType ? REGION : 0)
- | (duplicateType ? DUPLICATE : 0)
| (mapType ? MAP : 0)
| (directType ? DIRECT : 0)
| (nativeBOType ? NATIVE : NONNATIVE)
| (byteBufferType ? BYTEBUF : 0);
- WritableBuffer wbuf;
- if (byteBufferType) {
- if (nativeBOType) { wbuf = NativeWritableBufferImpl.notMemoryExtendable(seg2, type); }
- else { wbuf = NonNativeWritableBufferImpl.notMemoryExtendable(seg2, type); }
- }
- if (mapType) {
- if (nativeBOType) { wbuf = NativeWritableBufferImpl.notMemoryExtendable(seg2, type); }
- else { wbuf = NonNativeWritableBufferImpl.notMemoryExtendable(seg2, type); }
- }
- if (directType) {
- if (nativeBOType) { wbuf = NativeWritableBufferImpl.memoryExtendable(seg2, type, memReqSvr); }
- else { wbuf = NonNativeWritableBufferImpl.memoryExtendable(seg2, type, memReqSvr); }
- }
- //else heap type
- if (nativeBOType) { wbuf = NativeWritableBufferImpl.memoryExtendable(seg2, type, memReqSvr); }
- else { wbuf = NonNativeWritableBufferImpl.memoryExtendable(seg2, type, memReqSvr); }
+ final WritableBuffer wbuf = selectBuffer(seg2, type, memReqSvr, byteBufferType, mapType, nativeBOType);
wbuf.setStartPositionEnd(getStart(), getPosition(), getEnd());
return wbuf;
}
@@ -230,12 +204,12 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
Objects.requireNonNull(byteOrder, "byteOrder must be non-null");
final boolean readOnly = isReadOnly() || localReadOnly;
final MemorySegment seg2 = (readOnly && !seg.isReadOnly()) ? seg.asReadOnly() : seg;
- final boolean regionType = isRegionType();
- final boolean duplicateType = isDuplicateType();
+ final boolean regionType = isRegion();
+ final boolean duplicateType = isDuplicate();
final boolean mapType = seg.isMapped();
final boolean directType = seg.isNative();
final boolean nativeBOType = byteOrder == ByteOrder.nativeOrder();
- final boolean byteBufferType = isByteBufferType();
+ final boolean byteBufferType = hasByteBuffer();
final int type = MEMORY
| (readOnly ? READONLY : 0)
| (regionType ? REGION : 0)
@@ -244,22 +218,8 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
| (directType ? DIRECT : 0)
| (nativeBOType ? NATIVE : NONNATIVE)
| (byteBufferType ? BYTEBUF : 0);
- WritableMemory wmem;
- if (byteBufferType) {
- if (nativeBOType) { wmem = NativeWritableMemoryImpl.notMemoryExtendable(seg2, type); }
- else { wmem = NonNativeWritableMemoryImpl.notMemoryExtendable(seg2, type); }
- }
- if (mapType) {
- if (nativeBOType) { wmem = NativeWritableMemoryImpl.notMemoryExtendable(seg2, type); }
- else { wmem = NonNativeWritableMemoryImpl.notMemoryExtendable(seg2, type); }
- }
- if (directType) {
- if (nativeBOType) { wmem = NativeWritableMemoryImpl.memoryExtendable(seg2, type, memReqSvr); }
- else { wmem = NonNativeWritableMemoryImpl.memoryExtendable(seg2, type, memReqSvr); }
- }
- //else heap type
- if (nativeBOType) { wmem = NativeWritableMemoryImpl.memoryExtendable(seg2, type, memReqSvr); }
- else { wmem = NonNativeWritableMemoryImpl.memoryExtendable(seg2, type, memReqSvr); }
+
+ final WritableMemory wmem = selectMemory(seg2, type, memReqSvr, byteBufferType, mapType, nativeBOType);
return wmem;
}
diff --git a/src/main/java/org/apache/datasketches/memory/internal/BaseWritableMemoryImpl.java b/src/main/java/org/apache/datasketches/memory/internal/BaseWritableMemoryImpl.java
index 296b059..ae5bb9c 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/BaseWritableMemoryImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/BaseWritableMemoryImpl.java
@@ -63,8 +63,9 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
//Pass-through constructor
BaseWritableMemoryImpl(
final MemorySegment seg,
- final int typeId) {
- super(seg, typeId);
+ final int typeId,
+ final MemoryRequestServer memReqSvr) {
+ super(seg, typeId, memReqSvr);
}
//WRAP HEAP ARRAY RESOURCE
@@ -77,9 +78,9 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
| (seg.isReadOnly() ? READONLY : 0);
if (byteOrder == NON_NATIVE_BYTE_ORDER) {
type |= NONNATIVE;
- return NonNativeWritableMemoryImpl.memoryExtendable(seg, type, memReqSvr);
+ return new NonNativeWritableMemoryImpl(seg, type, memReqSvr);
}
- return NativeWritableMemoryImpl.memoryExtendable(seg, type, memReqSvr);
+ return new NativeWritableMemoryImpl(seg, type, memReqSvr);
}
//BYTE BUFFER RESOURCE
@@ -97,9 +98,9 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
| (seg.isMapped() ? MAP : 0);
if (byteOrder == NON_NATIVE_BYTE_ORDER) {
type |= NONNATIVE;
- return NonNativeWritableMemoryImpl.notMemoryExtendable(seg, type);
+ return new NonNativeWritableMemoryImpl(seg, type, null);
}
- return NativeWritableMemoryImpl.notMemoryExtendable(seg, type);
+ return new NativeWritableMemoryImpl(seg, type, null);
}
//MAP RESOURCE
@@ -148,8 +149,8 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
| (localReadOnly ? READONLY : 0)
| (nativeBOType ? NATIVE : NONNATIVE);
return nativeBOType
- ? NativeWritableMemoryImpl.notMemoryExtendable(seg, type)
- : NonNativeWritableMemoryImpl.notMemoryExtendable(seg, type);
+ ? new NativeWritableMemoryImpl(seg, type, null)
+ : new NonNativeWritableMemoryImpl(seg, type, null);
}
//DIRECT RESOURCE
@@ -180,8 +181,8 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
final int type = MEMORY | DIRECT
| (nativeBOType ? NATIVE : NONNATIVE);
return nativeBOType
- ? NativeWritableMemoryImpl.memoryExtendable(seg, type, memReqSvr)
- : NonNativeWritableMemoryImpl.memoryExtendable(seg, type, memReqSvr);
+ ? new NativeWritableMemoryImpl(seg, type, memReqSvr)
+ : new NonNativeWritableMemoryImpl(seg, type, memReqSvr);
}
//REGION DERIVED
@@ -210,11 +211,11 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
final MemorySegment slice = (readOnly && !seg.isReadOnly())
? seg.asSlice(offsetBytes, capacityBytes).asReadOnly()
: seg.asSlice(offsetBytes, capacityBytes);
- final boolean duplicateType = isDuplicateType();
+ final boolean duplicateType = isDuplicate();
final boolean mapType = seg.isMapped();
final boolean directType = seg.isNative();
final boolean nativeBOType = byteOrder == ByteOrder.nativeOrder();
- final boolean byteBufferType = isByteBufferType();
+ final boolean byteBufferType = hasByteBuffer();
final int type = MEMORY | REGION
| (readOnly ? READONLY : 0)
| (duplicateType ? DUPLICATE : 0)
@@ -222,21 +223,9 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
| (directType ? DIRECT : 0)
| (nativeBOType ? NATIVE : NONNATIVE)
| (byteBufferType ? BYTEBUF : 0);
- if (byteBufferType) {
- if (nativeBOType) { return NativeWritableMemoryImpl.notMemoryExtendable(slice, type); }
- return NonNativeWritableMemoryImpl.notMemoryExtendable(slice, type);
- }
- if (mapType) {
- if (nativeBOType) { return NativeWritableMemoryImpl.notMemoryExtendable(slice, type); }
- return NonNativeWritableMemoryImpl.notMemoryExtendable(slice, type);
- }
- if (directType) {
- if (nativeBOType) { return NativeWritableMemoryImpl.memoryExtendable(slice, type, memReqSvr); }
- return NonNativeWritableMemoryImpl.memoryExtendable(slice, type, memReqSvr);
- }
- //else heap type
- if (nativeBOType) { return NativeWritableMemoryImpl.memoryExtendable(slice, type, memReqSvr); }
- return NonNativeWritableMemoryImpl.memoryExtendable(slice, type, memReqSvr);
+
+ final WritableMemory wmem = selectMemory(slice, type, memReqSvr, byteBufferType, mapType, nativeBOType);
+ return wmem;
}
//AS BUFFER DERIVED
@@ -260,12 +249,12 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
Objects.requireNonNull(byteOrder, "byteOrder must be non-null");
final boolean readOnly = isReadOnly() || localReadOnly;
final MemorySegment seg2 = (readOnly && !seg.isReadOnly()) ? seg.asReadOnly() : seg;
- final boolean regionType = isRegionType();
- final boolean duplicateType = isDuplicateType();
+ final boolean regionType = isRegion();
+ final boolean duplicateType = isDuplicate();
final boolean mapType = seg.isMapped();
final boolean directType = seg.isNative();
final boolean nativeBOType = byteOrder == ByteOrder.nativeOrder();
- final boolean byteBufferType = isByteBufferType();
+ final boolean byteBufferType = hasByteBuffer();
final int type = BUFFER
| (readOnly ? READONLY : 0)
| (regionType ? REGION : 0)
@@ -274,23 +263,9 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
| (mapType ? MAP : 0)
| (nativeBOType ? NATIVE : NONNATIVE)
| (byteBufferType ? BYTEBUF : 0);
- WritableBuffer wbuf;
- if (byteBufferType) {
- if (nativeBOType) { wbuf = NativeWritableBufferImpl.notMemoryExtendable(seg2, type); }
- else { wbuf = NonNativeWritableBufferImpl.notMemoryExtendable(seg2, type); }
- }
- if (mapType) {
- if (nativeBOType) { wbuf = NativeWritableBufferImpl.notMemoryExtendable(seg2, type); }
- else { wbuf = NonNativeWritableBufferImpl.notMemoryExtendable(seg2, type); }
- }
- if (directType) {
- if (nativeBOType) { wbuf = NativeWritableBufferImpl.memoryExtendable(seg2, type, memReqSvr); }
- else { wbuf = NonNativeWritableBufferImpl.memoryExtendable(seg2, type, memReqSvr); }
- }
- //else heap type
- if (nativeBOType) { wbuf = NativeWritableBufferImpl.memoryExtendable(seg2, type, memReqSvr); }
- else { wbuf = NonNativeWritableBufferImpl.memoryExtendable(seg2, type, memReqSvr); }
- wbuf.setStartPositionEnd(0, 0, getCapacity());
+
+ final WritableBuffer wbuf = selectBuffer(seg2, type, memReqSvr, byteBufferType, mapType, nativeBOType);
+ wbuf.setStartPositionEnd(0, 0, wbuf.getCapacity());
return wbuf;
}
diff --git a/src/main/java/org/apache/datasketches/memory/internal/NativeWritableBufferImpl.java b/src/main/java/org/apache/datasketches/memory/internal/NativeWritableBufferImpl.java
index aed07c7..f9f45f7 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/NativeWritableBufferImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/NativeWritableBufferImpl.java
@@ -48,27 +48,12 @@ final class NativeWritableBufferImpl extends BaseWritableBufferImpl {
//Pass-through ctor
NativeWritableBufferImpl(
- final MemorySegment seg,
- final int typeId) {
- super(seg, typeId);
- }
-
- static NativeWritableBufferImpl memoryExtendable(
final MemorySegment seg,
final int typeId,
final MemoryRequestServer memReqSvr) {
- final NativeWritableBufferImpl impl = new NativeWritableBufferImpl(seg, typeId);
- if (memReqSvr != null) { impl.setMemoryRequestServer(memReqSvr); }
- return impl;
+ super(seg, typeId, memReqSvr);
}
- static NativeWritableBufferImpl notMemoryExtendable(
- final MemorySegment seg,
- final int typeId) {
- return new NativeWritableBufferImpl(seg, typeId);
- }
-
-
//PRIMITIVE getX() and getXArray()
@Override
public char getChar() {
diff --git a/src/main/java/org/apache/datasketches/memory/internal/NativeWritableMemoryImpl.java b/src/main/java/org/apache/datasketches/memory/internal/NativeWritableMemoryImpl.java
index 5f279a7..9f3feea 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/NativeWritableMemoryImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/NativeWritableMemoryImpl.java
@@ -47,24 +47,10 @@ final class NativeWritableMemoryImpl extends BaseWritableMemoryImpl {
//Pass-through ctor
NativeWritableMemoryImpl(
- final MemorySegment seg,
- final int typeId) {
- super(seg, typeId);
- }
-
- static NativeWritableMemoryImpl memoryExtendable(
final MemorySegment seg,
final int typeId,
final MemoryRequestServer memReqSvr) {
- final NativeWritableMemoryImpl impl = new NativeWritableMemoryImpl(seg, typeId);
- if (memReqSvr != null) { impl.setMemoryRequestServer(memReqSvr); }
- return impl;
- }
-
- static NativeWritableMemoryImpl notMemoryExtendable(
- final MemorySegment seg,
- final int typeId) {
- return new NativeWritableMemoryImpl(seg, typeId);
+ super(seg, typeId, memReqSvr);
}
///PRIMITIVE getX() and getXArray()
diff --git a/src/main/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImpl.java b/src/main/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImpl.java
index 63b7862..25e773c 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImpl.java
@@ -48,24 +48,10 @@ final class NonNativeWritableBufferImpl extends BaseWritableBufferImpl {
//Pass-through ctor
NonNativeWritableBufferImpl(
- final MemorySegment seg,
- final int typeId) {
- super(seg, typeId);
- }
-
- static NonNativeWritableBufferImpl memoryExtendable(
final MemorySegment seg,
final int typeId,
final MemoryRequestServer memReqSvr) {
- final NonNativeWritableBufferImpl impl = new NonNativeWritableBufferImpl(seg, typeId);
- if (memReqSvr != null) { impl.setMemoryRequestServer(memReqSvr); }
- return impl;
- }
-
- static NonNativeWritableBufferImpl notMemoryExtendable(
- final MemorySegment seg,
- final int typeId) {
- return new NonNativeWritableBufferImpl(seg, typeId);
+ super(seg, typeId, memReqSvr);
}
//PRIMITIVE getX() and getXArray()
diff --git a/src/main/java/org/apache/datasketches/memory/internal/NonNativeWritableMemoryImpl.java b/src/main/java/org/apache/datasketches/memory/internal/NonNativeWritableMemoryImpl.java
index 87393d1..31fe94e 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/NonNativeWritableMemoryImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/NonNativeWritableMemoryImpl.java
@@ -47,24 +47,10 @@ final class NonNativeWritableMemoryImpl extends BaseWritableMemoryImpl {
//Pass-through ctor
NonNativeWritableMemoryImpl(
- final MemorySegment seg,
- final int typeId) {
- super(seg, typeId);
- }
-
- static NonNativeWritableMemoryImpl memoryExtendable(
final MemorySegment seg,
final int typeId,
final MemoryRequestServer memReqSvr) {
- final NonNativeWritableMemoryImpl impl = new NonNativeWritableMemoryImpl(seg, typeId);
- if (memReqSvr != null) { impl.setMemoryRequestServer(memReqSvr); }
- return impl;
- }
-
- static NonNativeWritableMemoryImpl notMemoryExtendable(
- final MemorySegment seg,
- final int typeId) {
- return new NonNativeWritableMemoryImpl(seg, typeId);
+ super(seg, typeId, memReqSvr);
}
///PRIMITIVE getX() and getXArray()
diff --git a/src/test/java/org/apache/datasketches/memory/internal/Buffer2Test.java b/src/test/java/org/apache/datasketches/memory/internal/Buffer2Test.java
index 1317271..9edd87c 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/Buffer2Test.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/Buffer2Test.java
@@ -321,7 +321,7 @@ public class Buffer2Test {
for (int i = 0; i < n; i++) { arr[i] = i; }
Memory mem = Memory.wrap(arr);
Buffer buf = mem.asBuffer();
- Buffer reg = buf.region(n2 * 8, n2 * 8, buf.getTypeByteOrder()); //top half
+ Buffer reg = buf.region(n2 * 8, n2 * 8, buf.getByteOrder()); //top half
for (int i = 0; i < n2; i++) {
long v = reg.getLong(i * 8);
long e = i + n2;
diff --git a/src/test/java/org/apache/datasketches/memory/internal/BufferTest.java b/src/test/java/org/apache/datasketches/memory/internal/BufferTest.java
index 49797ec..084e352 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/BufferTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/BufferTest.java
@@ -207,7 +207,7 @@ public class BufferTest {
ByteBuffer bb = ByteBuffer.allocate(n * 8);
bb.order(BaseState.NON_NATIVE_BYTE_ORDER);
Buffer buf = Buffer.wrap(bb);
- assertEquals(buf.getTypeByteOrder(), ByteOrder.nativeOrder());
+ assertEquals(buf.getByteOrder(), ByteOrder.nativeOrder());
}
@Test
diff --git a/src/test/java/org/apache/datasketches/memory/internal/ExampleMemoryRequestServerTest.java b/src/test/java/org/apache/datasketches/memory/internal/ExampleMemoryRequestServerTest.java
index 9646968..eacc079 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/ExampleMemoryRequestServerTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/ExampleMemoryRequestServerTest.java
@@ -104,7 +104,7 @@ public class ExampleMemoryRequestServerTest {
@SuppressWarnings("resource")
@Override
public WritableMemory request(WritableMemory currentWMem, long newCapacityBytes) {
- ByteOrder order = currentWMem.getTypeByteOrder();
+ ByteOrder order = currentWMem.getByteOrder();
WritableMemory wmem;
if (offHeap) {
wmem = WritableMemory.allocateDirect(newCapacityBytes, 8, ResourceScope.newConfinedScope(), order, this);
diff --git a/src/test/java/org/apache/datasketches/memory/internal/LeafImplTest.java b/src/test/java/org/apache/datasketches/memory/internal/LeafImplTest.java
index 6c60379..8105dc6 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/LeafImplTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/LeafImplTest.java
@@ -86,7 +86,7 @@ public class LeafImplTest {
WritableMemory mem = WritableMemory.writableWrap(bb, NBO);
assertEquals(bb.isDirect(), mem.isDirect());
- checkCombinations(mem, off, cap, mem.isDirect(), mem.getTypeByteOrder(), true, false);
+ checkCombinations(mem, off, cap, mem.isDirect(), mem.getByteOrder(), true, false);
//BB off heap, native order, has ByteBuffer, has MemReqSvr
ByteBuffer dbb = ByteBuffer.allocateDirect((int)cap);
@@ -95,7 +95,7 @@ public class LeafImplTest {
mem = WritableMemory.writableWrap(dbb, NBO);
assertEquals(dbb.isDirect(), mem.isDirect());
- checkCombinations(mem, off, cap, mem.isDirect(), mem.getTypeByteOrder(), true, false);
+ checkCombinations(mem, off, cap, mem.isDirect(), mem.getByteOrder(), true, false);
//BB on heap, non native order, has ByteBuffer, has MemReqSvr
bb = ByteBuffer.allocate((int)cap);
@@ -104,7 +104,7 @@ public class LeafImplTest {
mem = WritableMemory.writableWrap(bb, NNBO);
assertEquals(bb.isDirect(), mem.isDirect());
- checkCombinations(mem, off, cap, mem.isDirect(), mem.getTypeByteOrder(), true, false);
+ checkCombinations(mem, off, cap, mem.isDirect(), mem.getByteOrder(), true, false);
//BB off heap, non native order, has ByteBuffer, has MemReqSvr
dbb = ByteBuffer.allocateDirect((int)cap);
@@ -113,7 +113,7 @@ public class LeafImplTest {
mem = WritableMemory.writableWrap(dbb, NNBO);
assertEquals(dbb.isDirect(), mem.isDirect());
- checkCombinations(mem, off, cap, mem.isDirect(), mem.getTypeByteOrder(), true, false);
+ checkCombinations(mem, off, cap, mem.isDirect(), mem.getByteOrder(), true, false);
}
@Test
@@ -170,7 +170,7 @@ public class LeafImplTest {
assertEquals(mem.writableRegion(off, cap, oo).getShort(0), 256);
assertEquals(mem.asWritableBuffer(bo).getShort(0), 1);
assertEquals(mem.asWritableBuffer(oo).getShort(0), 256);
- assertTrue(mem.getTypeByteOrder() == bo);
+ assertTrue(mem.getByteOrder() == bo);
if (fromByteBuffer) { assertTrue(mem.hasByteBuffer()); }
else { assertFalse(mem.hasByteBuffer()); }
@@ -194,7 +194,7 @@ public class LeafImplTest {
assertEquals(buf.writableRegion(off, cap, oo).getShort(0), 256);
assertEquals(buf.writableDuplicate(bo).getShort(0), 1);
assertEquals(buf.writableDuplicate(oo).getShort(0), 256);
- assertTrue(buf.getTypeByteOrder() == bo);
+ assertTrue(buf.getByteOrder() == bo);
if (fromByteBuffer) { assertTrue(buf.hasByteBuffer()); }
@@ -218,7 +218,7 @@ public class LeafImplTest {
assertEquals(nnMem.asWritableBuffer(bo).getShort(0), 1);
assertEquals(nnMem.asWritableBuffer(oo).getShort(0), 256);
- assertTrue(nnMem.getTypeByteOrder() == oo);
+ assertTrue(nnMem.getByteOrder() == oo);
if (fromByteBuffer) { assertTrue(nnMem.hasByteBuffer()); }
@@ -242,7 +242,7 @@ public class LeafImplTest {
assertEquals(nnBuf.writableDuplicate(bo).getShort(0), 1);
assertEquals(nnBuf.writableDuplicate(oo).getShort(0), 256);
- assertTrue(nnBuf.getTypeByteOrder() == oo);
+ assertTrue(nnBuf.getByteOrder() == oo);
if (fromByteBuffer) { assertTrue(nnBuf.hasByteBuffer()); }
diff --git a/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java b/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java
index 533b162..9e287a2 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java
@@ -239,12 +239,12 @@ public class MemoryTest {
ByteBuffer bb = ByteBuffer.allocate(n * 8);
bb.order(ByteOrder.BIG_ENDIAN); //ignored
Memory mem = Memory.wrap(bb); //Defaults to LE
- assertTrue(mem.getTypeByteOrder() == ByteOrder.nativeOrder());
- assertEquals(mem.getTypeByteOrder(), ByteOrder.LITTLE_ENDIAN);
+ assertTrue(mem.getByteOrder() == ByteOrder.nativeOrder());
+ assertEquals(mem.getByteOrder(), ByteOrder.LITTLE_ENDIAN);
//Now explicitly set it
mem = Memory.wrap(bb, BaseState.NON_NATIVE_BYTE_ORDER);
- assertFalse(mem.getTypeByteOrder() == ByteOrder.nativeOrder());
- assertEquals(mem.getTypeByteOrder(), ByteOrder.BIG_ENDIAN);
+ assertFalse(mem.getByteOrder() == ByteOrder.nativeOrder());
+ assertEquals(mem.getByteOrder(), ByteOrder.BIG_ENDIAN);
}
@Test
diff --git a/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java b/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java
index dcca8b7..272b4ec 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java
@@ -218,7 +218,7 @@ public class NativeWritableBufferImplTest {
try (ResourceScope scope = ResourceScope.newConfinedScope()) {
WritableMemory wmem = WritableMemory.allocateDirect(memCapacity, scope, memReqSvr);
WritableBuffer wbuf = wmem.asWritableBuffer();
- wbuf.writableRegion(1, 64, wbuf.getTypeByteOrder()); //wrong!
+ wbuf.writableRegion(1, 64, wbuf.getByteOrder()); //wrong!
}
}
@@ -525,13 +525,13 @@ public class NativeWritableBufferImplTest {
ByteBuffer bb = ByteBuffer.allocate(64);
WritableBuffer wbuf = WritableBuffer.writableWrap(bb);
@SuppressWarnings("unused")
- WritableBuffer wreg = wbuf.writableRegion(0, 1, wbuf.getTypeByteOrder());
+ WritableBuffer wreg = wbuf.writableRegion(0, 1, wbuf.getByteOrder());
try {
Buffer buf = Buffer.wrap(bb);
wbuf = (WritableBuffer) buf;
@SuppressWarnings("unused")
- WritableBuffer wreg2 = wbuf.writableRegion(0, 1, wbuf.getTypeByteOrder());
+ WritableBuffer wreg2 = wbuf.writableRegion(0, 1, wbuf.getByteOrder());
Assert.fail();
} catch (ReadOnlyException expected) {
// ignore
@@ -542,7 +542,7 @@ public class NativeWritableBufferImplTest {
public void checkZeroBuffer() {
WritableMemory wmem = WritableMemory.allocate(8);
WritableBuffer wbuf = wmem.asWritableBuffer();
- WritableBuffer reg = wbuf.writableRegion(0, 0, wbuf.getTypeByteOrder());
+ WritableBuffer reg = wbuf.writableRegion(0, 0, wbuf.getByteOrder());
assertEquals(reg.getCapacity(), 0);
}
diff --git a/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImplTest.java b/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImplTest.java
index 155409b..ab42ba6 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImplTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImplTest.java
@@ -240,10 +240,10 @@ public class NonNativeWritableBufferImplTest {
WritableMemory wmem = WritableMemory.writableWrap(bArr, ByteOrder.BIG_ENDIAN);
WritableBuffer wbuf = wmem.asWritableBuffer();
WritableBuffer wdup = wbuf.writableDuplicate();
- assertEquals(wdup.getTypeByteOrder(), ByteOrder.BIG_ENDIAN);
+ assertEquals(wdup.getByteOrder(), ByteOrder.BIG_ENDIAN);
WritableBuffer wreg = wbuf.writableRegion();
- assertEquals(wreg.getTypeByteOrder(), ByteOrder.BIG_ENDIAN);
+ assertEquals(wreg.getByteOrder(), ByteOrder.BIG_ENDIAN);
}
@Test
@@ -251,27 +251,27 @@ public class NonNativeWritableBufferImplTest {
byte[] bArr = new byte[8];
bArr[1] = 1;
WritableMemory wmem = WritableMemory.writableWrap(bArr, ByteOrder.BIG_ENDIAN);
- assertEquals(wmem.getTypeByteOrder(), ByteOrder.BIG_ENDIAN);
+ assertEquals(wmem.getByteOrder(), ByteOrder.BIG_ENDIAN);
assertEquals(wmem.getChar(0), 1);
Buffer buf = wmem.asBuffer();
- assertEquals(buf.getTypeByteOrder(), ByteOrder.BIG_ENDIAN); //
+ assertEquals(buf.getByteOrder(), ByteOrder.BIG_ENDIAN); //
assertEquals(buf.getChar(0), 1);
Buffer dup = buf.duplicate();
- assertEquals(dup.getTypeByteOrder(), ByteOrder.BIG_ENDIAN);
+ assertEquals(dup.getByteOrder(), ByteOrder.BIG_ENDIAN);
assertEquals(dup.getChar(0), 1);
Buffer reg = buf.region();
- assertEquals(reg.getTypeByteOrder(), ByteOrder.BIG_ENDIAN);
+ assertEquals(reg.getByteOrder(), ByteOrder.BIG_ENDIAN);
assertEquals(reg.getChar(0), 1);
Memory mem = reg.asMemory();
- assertEquals(mem.getTypeByteOrder(), ByteOrder.BIG_ENDIAN);
+ assertEquals(mem.getByteOrder(), ByteOrder.BIG_ENDIAN);
assertEquals(mem.getChar(0), 1);
Memory mreg = mem.region(0, 8);
- assertEquals(mreg.getTypeByteOrder(), ByteOrder.BIG_ENDIAN);
+ assertEquals(mreg.getByteOrder(), ByteOrder.BIG_ENDIAN);
assertEquals(mreg.getChar(0), 1);
}
diff --git a/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableMemoryImplTest.java b/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableMemoryImplTest.java
index fcfff82..5746390 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableMemoryImplTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableMemoryImplTest.java
@@ -170,7 +170,7 @@ public class NonNativeWritableMemoryImplTest {
@Test
public void checkRegion() {
WritableMemory wreg = wmem.writableRegion(0, wmem.getCapacity());
- assertEquals(wreg.getTypeByteOrder(), ByteOrder.BIG_ENDIAN);
+ assertEquals(wreg.getByteOrder(), ByteOrder.BIG_ENDIAN);
}
}
diff --git a/src/test/java/org/apache/datasketches/memory/internal/SpecificLeafTest.java b/src/test/java/org/apache/datasketches/memory/internal/SpecificLeafTest.java
index 4401e01..5876e03 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/SpecificLeafTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/SpecificLeafTest.java
@@ -19,6 +19,7 @@
package org.apache.datasketches.memory.internal;
+import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
@@ -52,23 +53,23 @@ public class SpecificLeafTest {
Memory mem = Memory.wrap(bb).region(0, bytes, ByteOrder.nativeOrder());
assertTrue(mem.hasByteBuffer());
assertTrue(mem.isReadOnly());
- assertTrue(((BaseStateImpl)mem).isMemoryType());
- assertFalse(((BaseStateImpl)mem).isDirectType());
- assertFalse(((BaseStateImpl)mem).isMapType());
+ assertTrue(mem.isMemory());
+ assertFalse(mem.isDirect());
+ assertFalse(mem.isMapped());
checkCrossLeafTypeIds(mem);
Buffer buf = mem.asBuffer().region(0, bytes, ByteOrder.nativeOrder());
- assertTrue(((BaseStateImpl)buf).isNativeType());
+ assertEquals(buf.getByteOrder(), BaseState.NATIVE_BYTE_ORDER);
bb.order(BaseState.NON_NATIVE_BYTE_ORDER);
Memory mem2 = Memory.wrap(bb).region(0, bytes, BaseState.NON_NATIVE_BYTE_ORDER);
Buffer buf2 = mem2.asBuffer().region(0, bytes, BaseState.NON_NATIVE_BYTE_ORDER);
Buffer buf3 = buf2.duplicate();
- assertTrue(((BaseStateImpl)mem).isRegionType());
- assertTrue(((BaseStateImpl)mem2).isRegionType());
- assertTrue(((BaseStateImpl)buf).isRegionType());
- assertTrue(((BaseStateImpl)buf2).isRegionType());
- assertTrue(((BaseStateImpl)buf3).isDuplicateType());
+ assertTrue(mem.isRegion());
+ assertTrue(mem2.isRegion());
+ assertTrue(buf.isRegion());
+ assertTrue(buf2.isRegion());
+ assertTrue(buf3.isDuplicate());
}
@Test
@@ -77,8 +78,8 @@ public class SpecificLeafTest {
try (ResourceScope scope = ResourceScope.newConfinedScope()) {
WritableMemory wmem = WritableMemory.allocateDirect(bytes, scope, memReqSvr);
assertFalse(((BaseStateImpl)wmem).isReadOnly());
- assertTrue(((BaseStateImpl)wmem).isDirectType());
- assertFalse(((BaseStateImpl)wmem).isHeapType());
+ assertTrue(wmem.isDirect());
+ assertFalse(wmem.isHeap());
assertFalse(wmem.isReadOnly());
checkCrossLeafTypeIds(wmem);
WritableMemory nnwmem = wmem.writableRegion(0, bytes, BaseState.NON_NATIVE_BYTE_ORDER);
@@ -91,12 +92,12 @@ public class SpecificLeafTest {
Buffer buf2 = mem2.asBuffer().region(0, bytes, BaseState.NON_NATIVE_BYTE_ORDER);
Buffer buf3 = buf2.duplicate();
- assertTrue(((BaseStateImpl)mem).isRegionType());
- assertTrue(((BaseStateImpl)mem2).isRegionType());
- assertTrue(((BaseStateImpl)mem2).isMemoryType());
- assertTrue(((BaseStateImpl)buf).isRegionType());
- assertTrue(((BaseStateImpl)buf2).isRegionType());
- assertTrue(((BaseStateImpl)buf3).isDuplicateType());
+ assertTrue(mem.isRegion());
+ assertTrue(mem2.isRegion());
+ assertTrue(buf.isRegion());
+ assertTrue(buf2.isRegion());
+ assertTrue(buf3.isDuplicate());
+ assertTrue(mem2.isMemory());
}
}
@@ -114,7 +115,7 @@ public class SpecificLeafTest {
final long bytes = 128;
try (ResourceScope scope = ResourceScope.newConfinedScope()) {
WritableMemory mem = WritableMemory.writableMap(file, 0L, bytes, scope, ByteOrder.nativeOrder());
- assertTrue(((BaseStateImpl)mem).isMapType());
+ assertTrue(mem.isMapped());
assertFalse(mem.isReadOnly());
checkCrossLeafTypeIds(mem);
Memory nnreg = mem.region(0, bytes, BaseState.NON_NATIVE_BYTE_ORDER);
@@ -127,14 +128,14 @@ public class SpecificLeafTest {
Buffer buf2 = reg2.asBuffer().region(0, bytes, BaseState.NON_NATIVE_BYTE_ORDER);
Buffer buf3 = buf2.duplicate();
- assertTrue(((BaseStateImpl)reg).isRegionType());
- assertTrue(((BaseStateImpl)reg2).isRegionType());
- assertFalse(((BaseStateImpl)reg2).isNativeType());
- assertTrue(((BaseStateImpl)buf).isRegionType());
- assertFalse(((BaseStateImpl)buf).isMemoryType());
- assertTrue(((BaseStateImpl)buf2).isRegionType());
- assertTrue(((BaseStateImpl)buf3).isDuplicateType());
- assertTrue(((BaseStateImpl)buf4).isDuplicateType());
+ assertTrue(reg.isRegion());
+ assertTrue(reg2.isRegion());
+ assertEquals(reg2.getByteOrder(), BaseState.NON_NATIVE_BYTE_ORDER);
+ assertTrue(buf.isRegion());
+ assertFalse(buf.isMemory());
+ assertTrue(buf2.isRegion());
+ assertTrue(buf3.isDuplicate());
+ assertTrue(buf4.isDuplicate());
}
}
@@ -142,7 +143,7 @@ public class SpecificLeafTest {
public void checkHeapLeafs() {
int bytes = 128;
Memory mem = Memory.wrap(new byte[bytes]);
- assertTrue(((BaseStateImpl)mem).isHeapType());
+ assertTrue(mem.isHeap());
assertTrue(((BaseStateImpl)mem).isReadOnly());
checkCrossLeafTypeIds(mem);
Memory nnreg = mem.region(0, bytes, BaseState.NON_NATIVE_BYTE_ORDER);
@@ -155,47 +156,47 @@ public class SpecificLeafTest {
Buffer buf2 = reg2.asBuffer().region(0, bytes, BaseState.NON_NATIVE_BYTE_ORDER);
Buffer buf3 = buf2.duplicate();
- assertFalse(((BaseStateImpl)mem).isRegionType());
- assertTrue(((BaseStateImpl)reg2).isRegionType());
- assertTrue(((BaseStateImpl)buf).isRegionType());
- assertTrue(((BaseStateImpl)buf2).isRegionType());
- assertTrue(((BaseStateImpl)buf3).isDuplicateType());
- assertTrue(((BaseStateImpl)buf4).isDuplicateType());
+ assertFalse(mem.isRegion());
+ assertTrue(reg2.isRegion());
+ assertTrue(buf.isRegion());
+ assertTrue(buf2.isRegion());
+ assertTrue(buf3.isDuplicate());
+ assertTrue(buf4.isDuplicate());
}
private static void checkCrossLeafTypeIds(Memory mem) {
Memory reg1 = mem.region(0, mem.getCapacity());
- assertTrue(((BaseStateImpl)reg1).isRegionType());
+ assertTrue(reg1.isRegion());
Buffer buf1 = reg1.asBuffer();
- assertTrue(((BaseStateImpl)buf1).isRegionType()); //fails
- assertTrue(((BaseStateImpl)buf1).isBufferType());
+ assertTrue(buf1.isRegion());
+ assertTrue(buf1.isBuffer());
assertTrue(buf1.isReadOnly());
Buffer buf2 = buf1.duplicate();
- assertTrue(((BaseStateImpl)buf2).isRegionType());
- assertTrue(((BaseStateImpl)buf2).isBufferType());
- assertTrue(((BaseStateImpl)buf2).isDuplicateType());
+ assertTrue(buf2.isRegion());
+ assertTrue(buf2.isBuffer());
+ assertTrue(buf2.isDuplicate());
assertTrue(buf2.isReadOnly());
Memory mem2 = buf1.asMemory(); //
- assertTrue(((BaseStateImpl)mem2).isRegionType());
- assertFalse(((BaseStateImpl)mem2).isBufferType());
- assertFalse(((BaseStateImpl)mem2).isDuplicateType());
+ assertTrue(mem2.isRegion());
+ assertFalse(mem2.isBuffer());
+ assertFalse(mem2.isDuplicate());
assertTrue(mem2.isReadOnly());
Buffer buf3 = buf1.duplicate(BaseState.NON_NATIVE_BYTE_ORDER);
- assertTrue(((BaseStateImpl)buf3).isRegionType());
- assertTrue(((BaseStateImpl)buf3).isBufferType());
- assertTrue(((BaseStateImpl)buf3).isDuplicateType());
- assertTrue(((BaseStateImpl)buf3).isNonNativeType());
+ assertTrue(buf3.isRegion());
+ assertTrue(buf3.isBuffer());
+ assertTrue(buf3.isDuplicate());
+ assertEquals(buf3.getByteOrder(), BaseState.NON_NATIVE_BYTE_ORDER);
assertTrue(buf3.isReadOnly());
Memory mem3 = buf3.asMemory();
- assertTrue(((BaseStateImpl)mem3).isRegionType());
- assertFalse(((BaseStateImpl)mem3).isBufferType());
- assertTrue(((BaseStateImpl)mem3).isDuplicateType());
- assertTrue(((BaseStateImpl)mem3).isNonNativeType());
+ assertTrue(mem3.isRegion());
+ assertFalse(mem3.isBuffer());
+ assertTrue(mem3.isDuplicate());
+ assertEquals(mem3.getByteOrder(), BaseState.NON_NATIVE_BYTE_ORDER);
assertTrue(mem3.isReadOnly());
}
diff --git a/src/test/java/org/apache/datasketches/memory/internal/WritableMemoryTest.java b/src/test/java/org/apache/datasketches/memory/internal/WritableMemoryTest.java
index ee104fa..6c24668 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/WritableMemoryTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/WritableMemoryTest.java
@@ -37,9 +37,9 @@ public class WritableMemoryTest {
public void wrapBigEndian() {
ByteBuffer bb = ByteBuffer.allocate(64); //big endian
WritableMemory wmem = WritableMemory.writableWrap(bb);
- assertEquals(wmem.getTypeByteOrder(), ByteOrder.LITTLE_ENDIAN); //ignore BB endianness
+ assertEquals(wmem.getByteOrder(), ByteOrder.LITTLE_ENDIAN); //ignore BB endianness
wmem = WritableMemory.writableWrap(bb, ByteOrder.nativeOrder());
- assertEquals(wmem.getTypeByteOrder(), ByteOrder.LITTLE_ENDIAN);
+ assertEquals(wmem.getByteOrder(), ByteOrder.LITTLE_ENDIAN);
}
@Test
@@ -53,11 +53,11 @@ public class WritableMemoryTest {
@Test
public void allocateWithByteOrder() {
WritableMemory wmem = WritableMemory.allocate(64, ByteOrder.BIG_ENDIAN);
- assertEquals(wmem.getTypeByteOrder(), ByteOrder.BIG_ENDIAN);
+ assertEquals(wmem.getByteOrder(), ByteOrder.BIG_ENDIAN);
wmem = WritableMemory.allocate(64, ByteOrder.LITTLE_ENDIAN);
- assertEquals(wmem.getTypeByteOrder(), ByteOrder.LITTLE_ENDIAN);
+ assertEquals(wmem.getByteOrder(), ByteOrder.LITTLE_ENDIAN);
wmem = WritableMemory.writableWrap(new byte[64], 32, 32, ByteOrder.BIG_ENDIAN);
- assertEquals(wmem.getTypeByteOrder(), ByteOrder.BIG_ENDIAN);
+ assertEquals(wmem.getByteOrder(), ByteOrder.BIG_ENDIAN);
}
@Test
@@ -148,11 +148,11 @@ public class WritableMemoryTest {
@Test
public void checkWrapWithBO() {
WritableMemory wmem = WritableMemory.writableWrap(new byte[0], ByteOrder.BIG_ENDIAN);
- boolean nativeBO = wmem.getTypeByteOrder() == ByteOrder.nativeOrder();
+ boolean nativeBO = wmem.getByteOrder() == ByteOrder.nativeOrder();
assertFalse(nativeBO);
println("" + nativeBO);
wmem = WritableMemory.writableWrap(new byte[8], ByteOrder.BIG_ENDIAN);
- nativeBO = wmem.getTypeByteOrder() == ByteOrder.nativeOrder();
+ nativeBO = wmem.getByteOrder() == ByteOrder.nativeOrder();
assertFalse(nativeBO);
println("" + nativeBO);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org