This is an automated email from the ASF dual-hosted git repository.
nizhikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 5181b2fee4c IGNITE-27558 Move BinaryObjectOffheapImpl to binary-impl
(#12631)
5181b2fee4c is described below
commit 5181b2fee4c12a02750f5eb7c2814b395f02ff77
Author: Nikolay <[email protected]>
AuthorDate: Wed Jan 14 14:20:45 2026 +0300
IGNITE-27558 Move BinaryObjectOffheapImpl to binary-impl (#12631)
---
.../org/apache/ignite/internal/binary/BinariesFactory.java | 9 +++++++++
.../java/org/apache/ignite/internal/binary/BinaryContext.java | 1 -
.../java/org/apache/ignite/internal/binary/BinaryObjectEx.java | 7 +++++++
.../java/org/apache/ignite/internal/binary/BinaryUtils.java | 10 +++++-----
.../org/apache/ignite/internal/binary/BinariesFactoryImpl.java | 6 ++++++
.../apache/ignite/internal/binary/BinaryObjectOffheapImpl.java | 6 ++----
6 files changed, 29 insertions(+), 10 deletions(-)
diff --git
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinariesFactory.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinariesFactory.java
index 7afe2574ea3..1e10c087b0f 100644
---
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinariesFactory.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinariesFactory.java
@@ -120,6 +120,15 @@ public interface BinariesFactory {
*/
public BinaryObjectEx binaryEnum(BinaryContext ctx, byte[] arr);
+ /**
+ * @param ctx Context.
+ * @param ptr Memory address.
+ * @param start Object start.
+ * @param size Memory size.
+ * @return Binary object based on offheap memory.
+ */
+ public BinaryObjectEx binaryOffheapObject(BinaryContext ctx, long ptr, int
start, int size);
+
/**
* @return Binary enum class.
*/
diff --git
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
index de5b20fbec9..dd12931440a 100644
---
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
@@ -258,7 +258,6 @@ public class BinaryContext {
registerPredefinedType(IgniteUuid.class, 63);
registerPredefinedType(BinaryObjectImpl.class, 0);
- registerPredefinedType(BinaryObjectOffheapImpl.class, 0);
registerPredefinedType(BinaryMetadata.class, 0);
registerPredefinedType(BinaryTreeMap.class, 0);
registerPredefinedType(BinaryArray.class, 0);
diff --git
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectEx.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectEx.java
index 66ef859ac68..8fb77c5c61e 100644
---
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectEx.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectEx.java
@@ -104,4 +104,11 @@ public interface BinaryObjectEx extends BinaryObject {
public default BinaryContext context() {
throw new UnsupportedOperationException("Context unknown");
}
+
+ /**
+ * @return Heap copy of the object.
+ */
+ public default BinaryObjectEx heapCopy() {
+ return this;
+ }
}
diff --git
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
index 6bfec8375eb..72bf15486b4 100644
---
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
+++
b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
@@ -574,8 +574,8 @@ public class BinaryUtils {
* @return Unwrapped value.
*/
public static Object unwrapTemporary(Object obj) {
- if (obj instanceof BinaryObjectOffheapImpl)
- return ((BinaryObjectOffheapImpl)obj).heapCopy();
+ if (obj instanceof BinaryObjectEx)
+ return ((BinaryObjectEx)obj).heapCopy();
return obj;
}
@@ -1506,7 +1506,7 @@ public class BinaryUtils {
int start = in.readInt();
- return new BinaryObjectOffheapImpl(ctx, in.offheapPointer() + pos,
start, len);
+ return binariesFactory.binaryOffheapObject(ctx,
in.offheapPointer() + pos, start, len);
}
else {
byte[] arr = doReadByteArray(in);
@@ -1866,7 +1866,7 @@ public class BinaryUtils {
int len = length(in, start);
- BinaryObjectExImpl po;
+ BinaryObjectEx po;
if (detach) {
BinaryObjectImpl binObj = new BinaryObjectImpl(ctx,
in.array(), start);
@@ -1879,7 +1879,7 @@ public class BinaryUtils {
if (in.offheapPointer() == 0)
po = new BinaryObjectImpl(ctx, in.array(), start);
else
- po = new BinaryObjectOffheapImpl(ctx,
in.offheapPointer(), start,
+ po = binariesFactory.binaryOffheapObject(ctx,
in.offheapPointer(), start,
in.remaining() + in.position());
}
diff --git
a/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinariesFactoryImpl.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinariesFactoryImpl.java
index e196d777560..9e1807b0dfe 100644
---
a/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinariesFactoryImpl.java
+++
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinariesFactoryImpl.java
@@ -157,6 +157,11 @@ public class BinariesFactoryImpl implements
BinariesFactory {
return new BinaryEnumObjectImpl(ctx, arr);
}
+ /** {@inheritDoc} */
+ @Override public BinaryObjectEx binaryOffheapObject(BinaryContext ctx,
long ptr, int start, int size) {
+ return new BinaryObjectOffheapImpl(ctx, ptr, start, size);
+ }
+
/** {@inheritDoc} */
@Override public Class<?> binaryEnumClass() {
return BinaryEnumObjectImpl.class;
@@ -167,6 +172,7 @@ public class BinariesFactoryImpl implements BinariesFactory
{
Map<Class<?>, Integer> predefinedTypes = new HashMap<>();
predefinedTypes.put(BinaryEnumObjectImpl.class, 0);
+ predefinedTypes.put(BinaryObjectOffheapImpl.class, 0);
return predefinedTypes;
}
diff --git
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
similarity index 99%
rename from
modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
rename to
modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
index c2a046c1d08..cce4f59dab7 100644
---
a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
+++
b/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
@@ -83,10 +83,8 @@ class BinaryObjectOffheapImpl extends BinaryObjectExImpl
implements Externalizab
this.size = size;
}
- /**
- * @return Heap-based copy.
- */
- public BinaryObject heapCopy() {
+ /** {@inheritDoc} */
+ @Override public BinaryObjectEx heapCopy() {
return new BinaryObjectImpl(ctx, GridUnsafe.copyMemory(ptr, size),
start);
}