You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by wl...@apache.org on 2022/11/03 17:12:11 UTC

[datasketches-memory] 01/02: Fixing memory/request server interdependency

This is an automated email from the ASF dual-hosted git repository.

wlauer pushed a commit to branch refactorInterfaces
in repository https://gitbox.apache.org/repos/asf/datasketches-memory.git

commit fd4041a27406848b7a274d2ca17debd6070cd275
Author: Will Lauer <wl...@yahooinc.com>
AuthorDate: Thu Nov 3 11:59:16 2022 -0500

    Fixing memory/request server interdependency
---
 .../datasketches/memory/DefaultMemoryFactory.java    |  6 +++++-
 .../memory/DefaultMemoryRequestServer.java           | 20 ++++++++++----------
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/src/main/java/org/apache/datasketches/memory/DefaultMemoryFactory.java b/src/main/java/org/apache/datasketches/memory/DefaultMemoryFactory.java
index 11619d3..e5998c5 100644
--- a/src/main/java/org/apache/datasketches/memory/DefaultMemoryFactory.java
+++ b/src/main/java/org/apache/datasketches/memory/DefaultMemoryFactory.java
@@ -34,10 +34,14 @@ import static org.apache.datasketches.memory.internal.Util.negativeCheck;
  */
 public class DefaultMemoryFactory implements MemoryFactory {
     
-    public final static MemoryFactory DEFAULT = DefaultMemoryRequestServer.DEFAULT.getFactory();
+    public final static MemoryFactory DEFAULT = new DefaultMemoryFactory();
     
     private final MemoryRequestServer memoryRequestServer;
     
+    public DefaultMemoryFactory() {
+        this(DefaultMemoryRequestServer.DEFAULT);
+    }
+    
     public DefaultMemoryFactory(MemoryRequestServer memoryRequestServer) {
         this.memoryRequestServer = memoryRequestServer;
     }
diff --git a/src/main/java/org/apache/datasketches/memory/DefaultMemoryRequestServer.java b/src/main/java/org/apache/datasketches/memory/DefaultMemoryRequestServer.java
index 1393d7c..3759dce 100644
--- a/src/main/java/org/apache/datasketches/memory/DefaultMemoryRequestServer.java
+++ b/src/main/java/org/apache/datasketches/memory/DefaultMemoryRequestServer.java
@@ -68,8 +68,8 @@ public final class DefaultMemoryRequestServer implements MemoryRequestServer {
     
   public static final DefaultMemoryRequestServer DEFAULT = new DefaultMemoryRequestServer();
     
-  private MemoryFactory factory = new DefaultMemoryFactory(this);
-
+  private MemoryFactory factory;
+  
   /**
    * {@inheritDoc}
    *
@@ -77,6 +77,9 @@ public final class DefaultMemoryRequestServer implements MemoryRequestServer {
    */
   @Override
   public WritableMemory request(final WritableMemory currentWritableMemory, final long capacityBytes) {
+    if (factory == null) {
+        factory = DefaultMemoryFactory.DEFAULT;
+    }
     final WritableMemory wmem = factory.allocate((int)capacityBytes, currentWritableMemory.getByteOrder());
     return wmem;
   }
@@ -92,15 +95,12 @@ public final class DefaultMemoryRequestServer implements MemoryRequestServer {
   public void requestClose(final WritableMemory memToRelease, final WritableMemory newMemory) {
     //do nothing
   }
-  
-  /**
-   * Get the associated {@link MemoryFactory}. This has package level access so that the default
-   * {@link DefaultMemoryFactory} can correctly initialize itself with a cross reference to this.
-   * 
-   * @return The current {@link MemoryFactory}
-   */
-  MemoryFactory getFactory() {
+
+  public MemoryFactory getFactory() {
     return factory;
   }
 
+  public void setFactory(MemoryFactory factory) {
+    this.factory = factory;
+  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org