Author: j16sdiz
Date: 2008-08-20 08:30:40 +0000 (Wed, 20 Aug 2008)
New Revision: 22048

Modified:
   
branches/saltedhashstore/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
   branches/saltedhashstore/freenet/src/freenet/store/FreenetStore.java
   branches/saltedhashstore/freenet/src/freenet/store/RAMFreenetStore.java
Log:
backport r22047
bug 2516: probablyInStore() for BerkeleyDBFreenetStore/RAMFreenetStore

Modified: 
branches/saltedhashstore/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
--- 
branches/saltedhashstore/freenet/src/freenet/store/BerkeleyDBFreenetStore.java  
    2008-08-20 08:20:43 UTC (rev 22047)
+++ 
branches/saltedhashstore/freenet/src/freenet/store/BerkeleyDBFreenetStore.java  
    2008-08-20 08:30:40 UTC (rev 22048)
@@ -2309,4 +2309,27 @@
        public long getBloomFalsePositive() {
                return -1;
        }
+       
+    public boolean probablyInStore(byte[] routingKey) {
+       DatabaseEntry routingkeyDBE = new DatabaseEntry(routingKey);
+               DatabaseEntry blockDBE = new DatabaseEntry();
+               synchronized (this) {
+                       if (closed)
+                               return false;
+               }
+
+       Cursor c = null;
+               try {
+                       return keysDB.get(null, routingkeyDBE, blockDBE, 
LockMode.READ_UNCOMMITTED) == OperationStatus.SUCCESS;
+               } catch (DatabaseException e) {
+                       return false;
+               } finally {
+                       try {
+                               if (c != null)
+                                       c.close();
+                       } catch (DatabaseException e) {
+                               // ignore
+                       }
+               }
+       }
 }

Modified: branches/saltedhashstore/freenet/src/freenet/store/FreenetStore.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/store/FreenetStore.java        
2008-08-20 08:20:43 UTC (rev 22047)
+++ branches/saltedhashstore/freenet/src/freenet/store/FreenetStore.java        
2008-08-20 08:30:40 UTC (rev 22048)
@@ -55,4 +55,12 @@
        public long keyCount();

        public long getBloomFalsePositive();
+       
+       /**
+        * Check if a routing key probably
+        * 
+        * @param routingkey
+        * @return <code>false</code> <b>only</b> if the key does not exist in 
store.
+        */
+       public boolean probablyInStore(byte[] routingKey);
 }

Modified: 
branches/saltedhashstore/freenet/src/freenet/store/RAMFreenetStore.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/store/RAMFreenetStore.java     
2008-08-20 08:20:43 UTC (rev 22047)
+++ branches/saltedhashstore/freenet/src/freenet/store/RAMFreenetStore.java     
2008-08-20 08:30:40 UTC (rev 22048)
@@ -125,4 +125,9 @@
        public long getBloomFalsePositive() {
                return -1;
        }
+       
+       public boolean probablyInStore(byte[] routingKey) {
+               ByteArrayWrapper key = new ByteArrayWrapper(routingKey);
+               return blocksByRoutingKey.get(key) != null;
+       }
 }


Reply via email to