session time out for http client/server
[oweals/gnunet.git] / src / set / ibf.c
index 4aeebc365670803095faf04b4848f866048b86a2..4d40f1f353647fc3537714f7e6985f8a460994d3 100644 (file)
@@ -4,7 +4,7 @@
 
       GNUnet is free software; you can redistribute it and/or modify
       it under the terms of the GNU General Public License as published
-      by the Free Software Foundation; either version 2, or (at your
+      by the Free Software Foundation; either version 3, or (at your
       option) any later version.
 
       GNUnet is distributed in the hope that it will be useful, but
@@ -134,7 +134,7 @@ ibf_insert_into  (struct InvertibleBloomFilter *ibf,
 
 
 /**
- * Insert an element into an IBF.
+ * Insert a key into an IBF.
  *
  * @param ibf the IBF
  * @param key the element's hash code
@@ -148,6 +148,23 @@ ibf_insert (struct InvertibleBloomFilter *ibf, struct IBF_Key key)
   ibf_insert_into (ibf, key, buckets, 1);
 }
 
+
+/**
+ * Remove a key from an IBF.
+ *
+ * @param ibf the IBF
+ * @param key the element's hash code
+ */
+void
+ibf_remove (struct InvertibleBloomFilter *ibf, struct IBF_Key key)
+{
+  int buckets[ibf->hash_num];
+  GNUNET_assert (ibf->hash_num <= ibf->size);
+  ibf_get_indices (ibf, key, buckets);
+  ibf_insert_into (ibf, key, buckets, -1);
+}
+
+
 /**
  * Test is the IBF is empty, i.e. all counts, keys and key hashes are zero.
  */
@@ -236,7 +253,7 @@ ibf_decode (struct InvertibleBloomFilter *ibf,
 /**
  * Write buckets from an ibf to a buffer.
  * Exactly (IBF_BUCKET_SIZE*ibf->size) bytes are written to buf.
- * 
+ *
  * @param ibf the ibf to write
  * @param start with which bucket to start
  * @param count how many buckets to write
@@ -294,7 +311,6 @@ ibf_read_slice (const void *buf, uint32_t start, uint32_t count, struct Invertib
   /* copy counts */
   count_src = (struct IBF_Count *) key_hash_src;
   memcpy (ibf->count + start, count_src, count * sizeof *count_src);
-  count_src += count;
 }