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