gnunet-android

GNUnet for Android
Log | Files | Refs | README

gnunet_namecache_plugin.h (3101B)


      1 /*
      2      This file is part of GNUnet
      3      Copyright (C) 2012, 2013 GNUnet e.V.
      4 
      5      GNUnet is free software: you can redistribute it and/or modify it
      6      under the terms of the GNU Affero General Public License as published
      7      by the Free Software Foundation, either version 3 of the License,
      8      or (at your option) any later version.
      9 
     10      GNUnet is distributed in the hope that it will be useful, but
     11      WITHOUT ANY WARRANTY; without even the implied warranty of
     12      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13      Affero General Public License for more details.
     14 
     15      You should have received a copy of the GNU Affero General Public License
     16      along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 
     18      SPDX-License-Identifier: AGPL3.0-or-later
     19  */
     20 
     21 /**
     22  * @addtogroup GNS
     23  * @{
     24  *
     25  * @author Christian Grothoff
     26  *
     27  * @file
     28  * Plugin API for the namecache database backend
     29  *
     30  * @defgroup namecache-plugin  Name Cache service plugin API
     31  * Plugin API for the namecache database backend.
     32  *
     33  * @see [Documentation](https://gnunet.org/namecache-plugin-api)
     34  *
     35  * @{
     36  */
     37 #ifndef GNUNET_NAMECACHE_PLUGIN_H
     38 #define GNUNET_NAMECACHE_PLUGIN_H
     39 
     40 
     41 #include "gnunet_util_lib.h"
     42 #include "gnunet_namecache_service.h"
     43 #include "gnunet_namestore_service.h"
     44 
     45 #ifdef __cplusplus
     46 extern "C"
     47 {
     48 #if 0                           /* keep Emacsens' auto-indent happy */
     49 }
     50 #endif
     51 #endif
     52 
     53 
     54 /**
     55  * Function called for matching blocks.
     56  *
     57  * @param cls closure
     58  * @param block lookup result
     59  */
     60 typedef void (*GNUNET_NAMECACHE_BlockCallback) (void *cls,
     61                                                 const struct
     62                                                 GNUNET_GNSRECORD_Block *block);
     63 
     64 
     65 /**
     66  * @brief struct returned by the initialization function of the plugin
     67  */
     68 struct GNUNET_NAMECACHE_PluginFunctions
     69 {
     70   /**
     71    * Closure to pass to all plugin functions.
     72    */
     73   void *cls;
     74 
     75   /**
     76    * Cache a block in the datastore. Overwrites existing blocks
     77    * for the same zone and label.
     78    *
     79    * @param cls closure (internal context for the plugin)
     80    * @param block block to cache
     81    * @return #GNUNET_OK on success, else #GNUNET_SYSERR
     82    */
     83   int (*cache_block) (void *cls,
     84                       const struct GNUNET_GNSRECORD_Block *block);
     85 
     86 
     87   /**
     88    * Get the block for a particular zone and label in the
     89    * datastore.  Will return at most one result to the iterator.
     90    *
     91    * @param cls closure (internal context for the plugin)
     92    * @param query hash of public key derived from the zone and the label
     93    * @param iter function to call with the result
     94    * @param iter_cls closure for @a iter
     95    * @return #GNUNET_OK on success, #GNUNET_NO if there were no results, #GNUNET_SYSERR on error
     96    */
     97   int (*lookup_block) (void *cls,
     98                        const struct GNUNET_HashCode *query,
     99                        GNUNET_NAMECACHE_BlockCallback iter, void *iter_cls);
    100 };
    101 
    102 
    103 #if 0                           /* keep Emacsens' auto-indent happy */
    104 {
    105 #endif
    106 #ifdef __cplusplus
    107 }
    108 #endif
    109 
    110 #endif
    111 
    112 /** @} */  /* end of group */
    113 
    114 /** @} */ /* end of group addition */