client_manager: add API for async operations
[oweals/gnunet.git] / src / include / gnunet_datacache_plugin.h
index 34cf8feccd1509cdebbbec0c6854d8e591d729a0..bd915bdc04bf038b8787fc5e3d63ad508eedb4e9 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet
-     Copyright (C) 2006, 2009 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2006, 2009, 2015 Christian Grothoff (and other contributing authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -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);
+
 };