client_manager: add API for async operations
[oweals/gnunet.git] / src / include / gnunet_datacache_plugin.h
index 0810a41d9ade596d61f5db421d2d87a3428473f4..bd915bdc04bf038b8787fc5e3d63ad508eedb4e9 100644 (file)
@@ -133,7 +133,7 @@ struct GNUNET_DATACACHE_PluginFunctions
    * @return the number of results found
    */
   unsigned int (*get) (void *cls,
-                       const struct GNUNET_HashCode * key,
+                       const struct GNUNET_HashCode *key,
                        enum GNUNET_BLOCK_Type type,
                        GNUNET_DATACACHE_Iterator iter,
                        void *iter_cls);
@@ -160,6 +160,25 @@ struct GNUNET_DATACACHE_PluginFunctions
                               void *iter_cls);
 
 
+  /**
+   * Iterate over the results that are "close" to a particular key in
+   * the datacache.  "close" is defined as numerically larger than @a
+   * key (when interpreted as a circular address space), with small
+   * distance.
+   *
+   * @param cls closure (internal context for the plugin)
+   * @param key area of the keyspace to look into
+   * @param num_results number of results that should be returned to @a iter
+   * @param iter maybe NULL (to just count)
+   * @param iter_cls closure for @a iter
+   * @return the number of results found
+   */
+  unsigned int (*get_closest) (void *cls,
+                               const struct GNUNET_HashCode *key,
+                               unsigned int num_results,
+                               GNUNET_DATACACHE_Iterator iter,
+                               void *iter_cls);
+
 };