GNUnet  0.11.x
gnunet_block_group_lib.h
Go to the documentation of this file.
1 /*
2  This file is part of GNUnet.
3  Copyright (C) 2010 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 
31 #ifndef GNUNET_BLOCK_GROUP_LIB_H
32 #define GNUNET_BLOCK_GROUP_LIB_H
33 
34 #include "gnunet_util_lib.h"
35 #include "gnunet_block_lib.h"
36 
37 #ifdef __cplusplus
38 extern "C"
39 {
40 #if 0 /* keep Emacsens' auto-indent happy */
41 }
42 #endif
43 #endif
44 
45 
59 size_t
60 GNUNET_BLOCK_GROUP_compute_bloomfilter_size (unsigned int entry_count,
61  unsigned int k);
62 
63 
77 struct GNUNET_BLOCK_Group *
79  size_t bf_size,
80  unsigned int bf_k,
82  uint32_t nonce,
83  const void *raw_data,
84  size_t raw_data_size);
85 
86 
97 int
99  const struct GNUNET_HashCode *hc);
100 
101 
102 #if 0 /* keep Emacsens' auto-indent happy */
103 {
104 #endif
105 #ifdef __cplusplus
106 }
107 #endif
108 
109 /* ifndef GNUNET_BLOCK_GROUP_LIB_H */
110 #endif
111  /* end of group */
113 
114 /* end of gnunet_block_group_lib.h */
GNUNET_BLOCK_Type
Blocks in the datastore and the datacache must have a unique type.
struct GNUNET_BLOCK_Group * GNUNET_BLOCK_GROUP_bf_create(void *cls, size_t bf_size, unsigned int bf_k, enum GNUNET_BLOCK_Type type, uint32_t nonce, const void *raw_data, size_t raw_data_size)
Create a new block group that filters duplicates using a Bloom filter.
Definition: bg_bf.c:174
size_t GNUNET_BLOCK_GROUP_compute_bloomfilter_size(unsigned int entry_count, unsigned int k)
How many bytes should a bloomfilter be if we have already seen entry_count responses? Sized so that do not have to re-size the filter too often (to keep it cheap).
Definition: bg_bf.c:250
A 512-bit hashcode.
Block group data.
enum GNUNET_TESTBED_UnderlayLinkModelType type
the type of this model
int GNUNET_BLOCK_GROUP_bf_test_and_set(struct GNUNET_BLOCK_Group *bg, const struct GNUNET_HashCode *hc)
Test if hc is contained in the Bloom filter of bg.
Definition: bg_bf.c:214