Implement data ack in CADET MQ API
[oweals/gnunet.git] / src / include / gnunet_datacache_plugin.h
index 0810a41d9ade596d61f5db421d2d87a3428473f4..166c7bc3b63cf7bcca1a3fec914bc1d890f9151b 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet
-     Copyright (C) 2006, 2009, 2015 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2006, 2009, 2015 GNUnet e.V.
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
 */
 
 /**
- * @file include/gnunet_datacache_plugin.h
- * @brief API for database backends for the datacache
  * @author Christian Grothoff
+ *
+ * @file
+ * API for database backends for the datacache
+ *
+ * @defgroup datacache-plugin  Data Cache plugin API
+ * API for database backends for the datacache
+ * @{
  */
 #ifndef PLUGIN_DATACACHE_H
 #define PLUGIN_DATACACHE_H
@@ -133,7 +138,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 +165,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);
+
 };
 
 
@@ -170,5 +194,6 @@ struct GNUNET_DATACACHE_PluginFunctions
 }
 #endif
 
-/* end of gnunet_datacache_plugin.h */
 #endif
+
+/** @} */  /* end of group */