session time out for http client/server
[oweals/gnunet.git] / src / set / ibf.h
index 2bf3ef7c78ae29b507e8692158b6f30a09777aad..c62ecac43ba99589c44622e8f0dbb19a33375a1b 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
@@ -19,7 +19,7 @@
 */
 
 /**
- * @file consensus/ibf.h
+ * @file set/ibf.h
  * @brief invertible bloom filter
  * @author Florian Dold
  */
@@ -28,7 +28,6 @@
 #define GNUNET_CONSENSUS_IBF_H
 
 #include "platform.h"
-#include "gnunet_common.h"
 #include "gnunet_util_lib.h"
 
 #ifdef __cplusplus
@@ -40,27 +39,40 @@ extern "C"
 #endif
 
 
+/**
+ * Keys that can be inserted into and removed from an IBF.
+ */
 struct IBF_Key
 {
   uint64_t key_val;
 };
 
+
+/**
+ * Hash of an IBF key.
+ */
 struct IBF_KeyHash
 {
   uint32_t key_hash_val;
 };
 
+
+/**
+ * Type of the count field of IBF buckets.
+ */
 struct IBF_Count
 {
   int8_t count_val;
 };
 
+
 /**
  * Size of one ibf bucket in bytes
  */
 #define IBF_BUCKET_SIZE (sizeof (struct IBF_Count) + sizeof (struct IBF_Key) + \
     sizeof (struct IBF_KeyHash))
 
+
 /**
  * Invertible bloom filter (IBF).
  *
@@ -104,7 +116,7 @@ struct InvertibleBloomFilter
 /**
  * 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
@@ -159,7 +171,7 @@ ibf_create (uint32_t size, uint8_t hash_num);
 
 
 /**
- * Insert an element into an IBF.
+ * Insert a key into an IBF.
  *
  * @param ibf the IBF
  * @param key the element's hash code
@@ -168,6 +180,16 @@ void
 ibf_insert (struct InvertibleBloomFilter *ibf, struct IBF_Key key);
 
 
+/**
+ * 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);
+
+
 /**
  * Subtract ibf2 from ibf1, storing the result in ibf1.
  * The two IBF's must have the same parameters size and hash_num.
@@ -203,6 +225,7 @@ ibf_decode (struct InvertibleBloomFilter *ibf, int *ret_side, struct IBF_Key *re
 struct InvertibleBloomFilter *
 ibf_dup (const struct InvertibleBloomFilter *ibf);
 
+
 /**
  * Destroy all resources associated with the invertible bloom filter.
  * No more ibf_*-functions may be called on ibf after calling destroy.