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);
     }
 

Reply via email to