You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directmemory.apache.org by no...@apache.org on 2012/11/01 13:15:07 UTC

svn commit: r1404554 - /directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractMemoryManager.java

Author: noctarius
Date: Thu Nov  1 12:15:06 2012
New Revision: 1404554

URL: http://svn.apache.org/viewvc?rev=1404554&view=rev
Log:
DIRECTMEMORY-49 MemoryManagerService.update does not reuse the same pointer

Modified:
    directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractMemoryManager.java

Modified: directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractMemoryManager.java
URL: http://svn.apache.org/viewvc/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractMemoryManager.java?rev=1404554&r1=1404553&r2=1404554&view=diff
==============================================================================
--- directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractMemoryManager.java (original)
+++ directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractMemoryManager.java Thu Nov  1 12:15:06 2012
@@ -39,8 +39,19 @@ public abstract class AbstractMemoryMana
 
     public Pointer<V> update( Pointer<V> pointer, byte[] payload )
     {
-        free( pointer );
-        return store( payload );
+        if ( pointer.getCapacity() >= payload.length )
+        {
+            pointer.reset();
+            pointer.setFree( false );
+            pointer.getMemoryBuffer().writeBytes( payload );
+            pointer.hit();
+            return pointer;
+        }
+        else
+        {
+            free( pointer );
+            return store( payload );
+        }
     }
 
     public long used()