session time out for http client/server
[oweals/gnunet.git] / src / set / ibf.h
index a020c713f7ba68a1dbc43e05e62074dfae880bbc..c62ecac43ba99589c44622e8f0dbb19a33375a1b 100644 (file)
@@ -39,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).
  *
@@ -103,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
@@ -158,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
@@ -167,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.
@@ -202,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.