GNUnet 0.21.1
gnunet_datastore_plugin.h
Go to the documentation of this file.
1/*
2 This file is part of GNUnet
3 Copyright (C) 2009, 2011 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
34#ifndef PLUGIN_DATASTORE_H
35#define PLUGIN_DATASTORE_H
36
37
38#include "gnunet_block_lib.h"
43
44
49#define GNUNET_DATASTORE_ENTRY_OVERHEAD 256
50
51
60typedef void
62 int delta);
63
64
71{
76
81
85 void *cls;
86};
87
88
105typedef enum GNUNET_GenericReturnValue
106(*PluginDatumProcessor)(void *cls,
107 const struct GNUNET_HashCode *key,
108 uint32_t size,
109 const void *data,
111 uint32_t priority,
112 uint32_t anonymity,
113 uint32_t replication,
115 uint64_t uid);
116
117
129typedef void
130(*PluginEstimateSize) (void *cls,
131 unsigned long long *estimate);
132
133
144typedef void
145(*PluginPutCont) (void *cls,
146 const struct GNUNET_HashCode *key,
147 uint32_t size,
148 int status,
149 const char *msg);
150
151
170typedef void
171(*PluginPut) (void *cls,
172 const struct GNUNET_HashCode *key,
173 bool absent,
174 uint32_t size,
175 const void *data,
177 uint32_t priority,
178 uint32_t anonymity,
179 uint32_t replication,
181 PluginPutCont cont,
182 void *cont_cls);
183
184
192typedef void
193(*PluginKeyProcessor) (void *cls,
194 const struct GNUNET_HashCode *key,
195 unsigned int count);
196
197
205typedef void
206(*PluginGetKeys) (void *cls,
208 void *proc_cls);
209
210
224typedef void
225(*PluginGetKey) (void *cls,
226 uint64_t next_uid,
227 bool random,
228 const struct GNUNET_HashCode *key,
231 void *proc_cls);
232
233
244typedef void
245(*PluginRemoveCont) (void *cls,
246 const struct GNUNET_HashCode *key,
247 uint32_t size,
248 int status,
249 const char *msg);
250
251
262typedef void
263(*PluginRemoveKey) (void *cls,
264 const struct GNUNET_HashCode *key,
265 uint32_t size,
266 const void *data,
267 PluginRemoveCont cont,
268 void *cont_cls);
269
270
281typedef void
282(*PluginGetRandom) (void *cls,
284 void *proc_cls);
285
286
298typedef void
299(*PluginGetType) (void *cls,
300 uint64_t next_uid,
303 void *proc_cls);
304
305
311typedef void
312(*PluginDrop) (void *cls);
313
314
320{
325 void *cls;
326
332
337
342
347
356
363
369
374
379};
380
381#endif
382 /* end of group */
384 /* end of group addition */
struct GNUNET_MessageHeader * msg
Definition: 005.c:2
static unsigned int replication
Desired replication level.
static char * data
The data to insert into the dht.
struct GNUNET_HashCode key
The key used in the DHT.
static struct GNUNET_TIME_Relative expiration
User supplied expiration value.
static unsigned int anonymity
static uint32_t type
Type string converted to DNS type value.
static int status
The program status; 0 for success.
Definition: gnunet-nse.c:39
Library for data block manipulation.
Configuration API.
API to schedule computations using continuation passing style.
API to create, modify and access statistics.
void(* PluginGetKeys)(void *cls, PluginKeyProcessor proc, void *proc_cls)
Get all of the keys in the datastore.
enum GNUNET_GenericReturnValue(* PluginDatumProcessor)(void *cls, const struct GNUNET_HashCode *key, uint32_t size, const void *data, enum GNUNET_BLOCK_Type type, uint32_t priority, uint32_t anonymity, uint32_t replication, struct GNUNET_TIME_Absolute expiration, uint64_t uid)
An processor over a set of items stored in the datastore.
void(* PluginGetKey)(void *cls, uint64_t next_uid, bool random, const struct GNUNET_HashCode *key, enum GNUNET_BLOCK_Type type, PluginDatumProcessor proc, void *proc_cls)
Get one of the results for a particular key in the datastore.
void(* PluginDrop)(void *cls)
Drop database.
void(* PluginGetRandom)(void *cls, PluginDatumProcessor proc, void *proc_cls)
Get a random item (additional constraints may apply depending on the specific implementation).
void(* PluginEstimateSize)(void *cls, unsigned long long *estimate)
Get an estimate of how much space the database is currently using.
void(* PluginRemoveKey)(void *cls, const struct GNUNET_HashCode *key, uint32_t size, const void *data, PluginRemoveCont cont, void *cont_cls)
Remove a particular key in the datastore.
void(* PluginGetType)(void *cls, uint64_t next_uid, enum GNUNET_BLOCK_Type type, PluginDatumProcessor proc, void *proc_cls)
Select a single item from the datastore (among those applicable).
void(* PluginPutCont)(void *cls, const struct GNUNET_HashCode *key, uint32_t size, int status, const char *msg)
Put continuation.
void(* PluginKeyProcessor)(void *cls, const struct GNUNET_HashCode *key, unsigned int count)
An processor over a set of keys stored in the datastore.
void(* GNUNET_DATASTORE_DiskUtilizationChange)(void *cls, int delta)
Function invoked to notify service of disk utilization changes.
void(* PluginRemoveCont)(void *cls, const struct GNUNET_HashCode *key, uint32_t size, int status, const char *msg)
Remove continuation.
void(* PluginPut)(void *cls, const struct GNUNET_HashCode *key, bool absent, uint32_t size, const void *data, enum GNUNET_BLOCK_Type type, uint32_t priority, uint32_t anonymity, uint32_t replication, struct GNUNET_TIME_Absolute expiration, PluginPutCont cont, void *cont_cls)
Store an item in the datastore.
GNUNET_GenericReturnValue
Named constants for return values.
static unsigned int size
Size of the "table".
Definition: peer.c:68
static struct GNUNET_TIME_Relative delta
Definition: speedup.c:36
GNUNET_BLOCK_Type
WARNING: This header is generated! In order to add DHT block types, you must register them in GANA,...
The datastore service will pass a pointer to a struct of this type as the first and only argument to ...
const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration to use.
GNUNET_DATASTORE_DiskUtilizationChange duc
Function to call on disk utilization change.
Each plugin is required to return a pointer to a struct of this type as the return value from its ent...
PluginGetKey get_key
Get a particular datum matching a given hash from the datastore.
PluginGetRandom get_expiration
Function to get a random expired item or, if none are expired, either the oldest entry or one with a ...
PluginEstimateSize estimate_size
Calculate the current on-disk size of the SQ store.
PluginGetKeys get_keys
Iterate over all keys in the database.
PluginGetRandom get_replication
Function to get a random item with high replication score from the database, lowering the item's repl...
PluginPut put
Function to store an item in the datastore.
void * cls
Closure to use for all of the following callbacks (except "next_request").
PluginGetType get_zero_anonymity
Get datum (of the specified type) with anonymity level zero.
PluginDrop drop
Delete the database.
PluginRemoveKey remove_key
Function to remove an item from the database.
A 512-bit hashcode.
Time for absolute times used by GNUnet, in microseconds.