Author: raffaeleguidi
Date: Thu Dec  8 14:26:28 2011
New Revision: 1211907

URL: http://svn.apache.org/viewvc?rev=1211907&view=rev
Log:
Added NIO support to the Cache implementation as well

Modified:
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/Cache.java
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheService.java
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheServiceImpl.java
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBuffer.java
    
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/test/NIOTests.java
    incubator/directmemory/trunk/pom.xml

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/Cache.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/Cache.java?rev=1211907&r1=1211906&r2=1211907&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/Cache.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/Cache.java
 Thu Dec  8 14:26:28 2011
@@ -132,5 +132,9 @@ public class Cache {
   public static MemoryManagerService getMemoryManager(){
     return cacheService.getMemoryManager();
   }
+
+public static Pointer allocate(String key, int size) {
+       return cacheService.allocate(key, size);
+}
        
 }

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheService.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheService.java?rev=1211907&r1=1211906&r2=1211907&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheService.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheService.java
 Thu Dec  8 14:26:28 2011
@@ -83,4 +83,6 @@ public interface CacheService {
 
   public void setMemoryManager(MemoryManagerService memoryManager);
 
+  public Pointer allocate(String key, int size);
+
 }

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheServiceImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheServiceImpl.java?rev=1211907&r1=1211906&r2=1211907&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheServiceImpl.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheServiceImpl.java
 Thu Dec  8 14:26:28 2011
@@ -21,6 +21,7 @@ package org.apache.directmemory.cache;
 
 import java.io.EOFException;
 import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.ConcurrentMap;
@@ -166,6 +167,10 @@ public class CacheServiceImpl implements
       }
       return null;
     } else {
+      if (ptr.clazz == ByteBuffer.class) {
+         // skip serialization if it is a bytebuffer
+         return ptr.directBuffer;
+      }
       try {
         return serializer.deserialize(memoryManager.retrieve(ptr), ptr.clazz);
       } catch (EOFException e) {
@@ -275,4 +280,12 @@ public class CacheServiceImpl implements
   public void setMemoryManager(MemoryManagerService memoryManager) {
     this.memoryManager = memoryManager;
   }
+
+  @Override
+  public Pointer allocate(String key, int size) {
+    Pointer ptr = memoryManager.allocate(size, -1, -1);
+    map.put(key, ptr);
+    ptr.clazz = ByteBuffer.class;
+    return ptr;
+  }
 }

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBuffer.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBuffer.java?rev=1211907&r1=1211906&r2=1211907&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBuffer.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBuffer.java
 Thu Dec  8 14:26:28 2011
@@ -105,24 +105,23 @@ public class OffHeapMemoryBuffer {
        }
        
        public byte[] retrieve(Pointer pointer) {
-//             if (!pointer.expired()) {
-                       pointer.lastHit = System.currentTimeMillis();
-                       pointer.hits++;
-                       
-                       ByteBuffer buf = null;
+               pointer.lastHit = System.currentTimeMillis();
+               pointer.hits++;
+               
+               ByteBuffer buf = null;
+               if (pointer.clazz == ByteBuffer.class) {
+                       buf = pointer.directBuffer;
+                       buf.position(0);
+               } else {
                        synchronized (buffer) {
                                buf = buffer.duplicate();
+                               buf.position(pointer.start);
                        }
-                       buf.position(pointer.start);
-                       // not needed for reads
-                       // buf.limit(pointer.end+pointer.start);
-                       final byte[] swp = new byte[pointer.end-pointer.start];
-                       buf.get(swp);
-                       return swp;
-//             } else {
-//                     free(pointer);
-//                     return null;
-//             }
+               }
+               
+               final byte[] swp = new byte[pointer.end-pointer.start];
+               buf.get(swp);
+               return swp;
        }
        
 
@@ -310,6 +309,7 @@ public class OffHeapMemoryBuffer {
                
                fresh.directBuffer = buf.slice();
                fresh.directBuffer.limit(size);
+               fresh.clazz = ByteBuffer.class;
                pointers.add(fresh);
                return fresh;   
        }

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/test/NIOTests.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/test/NIOTests.java?rev=1211907&r1=1211906&r2=1211907&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/test/NIOTests.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/test/NIOTests.java
 Thu Dec  8 14:26:28 2011
@@ -73,9 +73,11 @@ public class NIOTests {
                assertEquals(0, b.position());
                assertEquals(size, b.limit());
                
-               //assertEquals(size,p.end);
+               byte[] check = MemoryManager.retrieve(p);
+               
+               assertNotNull(check);
+               
                assertEquals(size,p.end-p.start); 
-//             assertEquals(size, MemoryManager.getActiveBuffer().used());
                logger.info("end");
        }
 

Modified: incubator/directmemory/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/pom.xml?rev=1211907&r1=1211906&r2=1211907&view=diff
==============================================================================
--- incubator/directmemory/trunk/pom.xml (original)
+++ incubator/directmemory/trunk/pom.xml Thu Dec  8 14:26:28 2011
@@ -368,6 +368,7 @@ under the License.
           </execution>
         </executions>
       </plugin>
+
       <plugin>
         <groupId>org.apache.rat</groupId>
         <artifactId>apache-rat-plugin</artifactId>


Reply via email to