GNUnet 0.28.0-dev.3-7-g31e20e2e6
 
Loading...
Searching...
No Matches
gnunet_fs_service.h
Go to the documentation of this file.
1/*
2 This file is part of GNUnet
3 Copyright (C) 2004--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 */
36#ifndef GNUNET_FS_LIB_H
37#define GNUNET_FS_LIB_H
38
39
40#include "gnunet_common.h"
41#include "gnunet_util_lib.h"
42
43#ifdef __cplusplus
44extern "C"
45{
46#if 0 /* keep Emacsens' auto-indent happy */
47}
48#endif
49#endif
50
72#define GNUNET_FS_VERSION 0x00090300
73
74#if GNUNET_FS_EXTRACTOR_ENABLED
75
76#include <extractor.h>
77
78#else
79
80/* definitions from extractor.h we need for the build */
81
112
140
141
159typedef int (*EXTRACTOR_MetaDataProcessor) (void *cls,
160 const char *plugin_name,
162 enum EXTRACTOR_MetaFormat format,
163 const char *data_mime_type,
164 const char *data,
165 size_t data_len);
166
167#endif
168
169#ifndef EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME
170/* hack for LE < 0.6.3 */
171#define EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME 180
172#endif
173
174
175/* ******************** URI API *********************** */
176
177#define GNUNET_FS_URI_PREFIX "gnunet://fs/"
178#define GNUNET_FS_URI_KSK_INFIX "ksk/"
179#define GNUNET_FS_URI_SKS_INFIX "sks/"
180#define GNUNET_FS_URI_CHK_INFIX "chk/"
181#define GNUNET_FS_URI_LOC_INFIX "loc/"
182
183
188#define GNUNET_FS_PROBE_UPDATE_FREQUENCY GNUNET_TIME_relative_multiply ( \
189 GNUNET_TIME_UNIT_MILLISECONDS, 250)
190
194struct GNUNET_FS_Uri;
195
200struct GNUNET_FS_MetaData;
201
202
211typedef int
212(*GNUNET_FS_KeywordIterator) (void *cls,
213 const char *keyword,
214 int is_mandatory);
215
216
225int
227 struct GNUNET_HashCode *key);
228
229
236char *
238
239
247char *
249
250
259void
261 const char *keyword,
262 int is_mandatory);
263
264
272void
274 const char *keyword);
275
276
284struct GNUNET_FS_Uri *
285GNUNET_FS_uri_parse (const char *uri,
286 char **emsg);
287
288
294void
296
297
304unsigned int
306
307
317int
320 void *iterator_cls);
321
322
330int
332 struct GNUNET_PeerIdentity *peer);
333
334
341struct GNUNET_FS_Uri *
343
344
353
354
367struct GNUNET_FS_Uri *
368GNUNET_FS_uri_loc_create (const struct GNUNET_FS_Uri *base_uri,
369 const struct GNUNET_CRYPTO_EddsaPrivateKey *sign_key,
370 struct GNUNET_TIME_Absolute expiration_time);
371
372
380struct GNUNET_FS_Uri *
381GNUNET_FS_uri_ksk_merge (const struct GNUNET_FS_Uri *u1,
382 const struct GNUNET_FS_Uri *u2);
383
384
391struct GNUNET_FS_Uri *
392GNUNET_FS_uri_dup (const struct GNUNET_FS_Uri *uri);
393
394
412struct GNUNET_FS_Uri *
414 char **emsg);
415
416
434struct GNUNET_FS_Uri *
435GNUNET_FS_uri_ksk_create_from_args (unsigned int argc,
436 const char **argv);
437
438
446int
448 const struct GNUNET_FS_Uri *u2);
449
450
457int
459
460
468struct GNUNET_FS_Uri *
470 const char *id);
471
472
481int
484;
485
486
493char *
495
496
503int
505
506
513int
515
516
524uint64_t
526
527
535const struct GNUNET_HashCode*
537
538
545int
547
548
557struct GNUNET_FS_Uri *
559 *md);
560
561
562/* ******************** command-line option parsing API *********************** */
563
575 const char *name,
576 const char *argumentHelp,
577 const char *description,
578 struct GNUNET_FS_Uri **topKeywords);
579
591 const char *name,
592 const char *argumentHelp,
593 const char *description,
594 struct GNUNET_FS_MetaData **meta);
595
608int
611 void *scls,
612 const char *option,
613 const char *value);
614
615
616/* ************************* sharing API ***************** */
617
618
631{
636
641
646
651
658
665
672
677
682
687
692
697
704
710
716
722
730
737
744
750
757
762
767
773
778
783
788
794
800
807
812
817
822
827
833
839
845
851
852
857
858
863
864
869
870
877
878
883
884
891
892
898{
902 union
903 {
907 struct GNUNET_FS_PublishStatusEvent
908 {
913
918
923 void *cctx;
924
929 void *pctx;
930
934 const char *filename;
935
942 uint64_t size;
943
950
956
960 uint64_t completed;
961
965 uint32_t anonymity;
966
970 union
971 {
976 struct GNUNET_FS_PublishProgressEvent
977 {
981 const void *data;
982
986 uint64_t offset;
987
991 uint64_t data_len;
992
997 unsigned int depth;
998 } progress;
999
1004 struct GNUNET_FS_PublishProgressDirectoryEvent
1005 {
1009 uint64_t completed;
1010
1014 uint64_t total;
1015
1022 struct GNUNET_TIME_Relative eta;
1023 } progress_directory;
1024
1029 struct GNUNET_FS_PublishResumeEvent
1030 {
1034 const char *message;
1035
1039 const struct GNUNET_FS_Uri *chk_uri;
1040
1044 const struct GNUNET_FS_Uri *sks_uri;
1045 } resume;
1046
1051 struct GNUNET_FS_PublishCompletedEvent
1052 {
1056 const struct GNUNET_FS_Uri *chk_uri;
1057
1061 const struct GNUNET_FS_Uri *sks_uri;
1062 } completed;
1063
1068 struct GNUNET_FS_PublishErrorEvent
1069 {
1073 const char *message;
1074 } error;
1075 } specifics;
1077
1078
1082 struct GNUNET_FS_DownloadStatusEvent
1083 {
1088
1094 void *cctx;
1095
1100 void *pctx;
1101
1108 void *sctx;
1109
1113 const struct GNUNET_FS_Uri *uri;
1114
1118 const char *filename;
1119
1125 uint64_t size;
1126
1132 struct GNUNET_TIME_Relative eta;
1133
1138
1142 uint64_t completed;
1143
1147 uint32_t anonymity;
1148
1153
1157 union
1158 {
1163 struct GNUNET_FS_DownloadProgressEvent
1164 {
1171 const void *data;
1172
1176 uint64_t offset;
1177
1181 uint64_t data_len;
1182
1187 struct GNUNET_TIME_Relative block_download_duration;
1188
1193 unsigned int depth;
1194
1202
1210 } progress;
1211
1216 struct GNUNET_FS_DownloadStartEvent
1217 {
1223
1228 struct GNUNET_FS_DownloadResumeEvent
1229 {
1233 const struct GNUNET_FS_MetaData *meta;
1234
1238 const char *message;
1239 } resume;
1240
1245 struct GNUNET_FS_DownloadErrorEvent
1246 {
1250 const char *message;
1251 } error;
1252 } specifics;
1254
1258 struct GNUNET_FS_SearchStatusEvent
1259 {
1267
1275 void *cctx;
1276
1284 void *pctx;
1285
1290 const struct GNUNET_FS_Uri *query;
1291
1298
1302 uint32_t anonymity;
1303
1307 union
1308 {
1313 struct GNUNET_FS_SearchResultEvent
1314 {
1318 const struct GNUNET_FS_MetaData *meta;
1319
1323 const struct GNUNET_FS_Uri *uri;
1324
1329
1336
1341 struct GNUNET_FS_SearchResumeResultEvent
1342 {
1346 const struct GNUNET_FS_MetaData *meta;
1347
1351 const struct GNUNET_FS_Uri *uri;
1352
1357
1363
1369
1375 uint32_t applicability_rank;
1376 } resume_result;
1377
1382 struct GNUNET_FS_SearchUpdateEvent
1383 {
1388 void *cctx;
1389
1393 const struct GNUNET_FS_MetaData *meta;
1394
1398 const struct GNUNET_FS_Uri *uri;
1399
1404 int32_t availability_rank;
1405
1410 uint32_t availability_certainty;
1411
1417 uint32_t applicability_rank;
1418
1422 struct GNUNET_TIME_Relative current_probe_time;
1423 } update;
1424
1434 struct GNUNET_FS_SearchSuspendResultEvent
1435 {
1440 void *cctx;
1441
1445 const struct GNUNET_FS_MetaData *meta;
1446
1450 const struct GNUNET_FS_Uri *uri;
1451 } result_suspend;
1452
1462 struct GNUNET_FS_SearchStoppedResultEvent
1463 {
1468 void *cctx;
1469
1473 const struct GNUNET_FS_MetaData *meta;
1474
1478 const struct GNUNET_FS_Uri *uri;
1479 } result_stopped;
1480
1485 struct GNUNET_GS_SearchResumeEvent
1486 {
1490 const char *message;
1491
1496 } resume;
1497
1502 struct GNUNET_FS_SearchErrorEvent
1503 {
1507 const char *message;
1508 } error;
1509
1513 struct GNUNET_GS_SearchResultNamespaceEvent
1514 {
1518 const char *name;
1519
1523 const char *root;
1524
1528 const struct GNUNET_FS_MetaData *meta;
1529
1535 } specifics;
1537
1541 struct GNUNET_FS_UnindexEvent
1542 {
1547
1553 void *cctx;
1554
1558 const char *filename;
1559
1563 uint64_t size;
1564
1570 struct GNUNET_TIME_Relative eta;
1571
1577
1581 uint64_t completed;
1582
1586 union
1587 {
1592 struct GNUNET_FS_UnindexProgressEvent
1593 {
1597 const void *data;
1598
1602 uint64_t offset;
1603
1607 uint64_t data_len;
1608
1613 unsigned int depth;
1614 } progress;
1615
1620 struct GNUNET_FS_UnindexResumeEvent
1621 {
1625 const char *message;
1626 } resume;
1627
1632 struct GNUNET_FS_UnindexErrorEvent
1633 {
1637 const char *message;
1638 } error;
1639 } specifics;
1642
1647
1652};
1653
1654
1670typedef void *
1671(*GNUNET_FS_ProgressCallback) (void *cls,
1672 const struct GNUNET_FS_ProgressInfo *info);
1673
1674
1698
1699
1725
1726
1768
1769
1773struct GNUNET_FS_Handle;
1774
1775
1787struct GNUNET_FS_Handle *
1789 const char *client_name,
1791 void *upcb_cls,
1793 ...);
1794
1795
1805void
1807
1808
1824typedef int
1826 struct GNUNET_FS_FileInformation *fi,
1827 uint64_t length,
1828 struct GNUNET_FS_MetaData *meta,
1829 struct GNUNET_FS_Uri **uri,
1830 struct GNUNET_FS_BlockOptions *bo,
1831 int *do_index,
1832 void **client_info);
1833
1834
1844const char *
1846
1847
1854const char *
1857
1858
1867void
1869 const char *filename);
1870
1871
1888 void *client_info,
1889 const char *filename,
1890 const struct
1892 const struct
1894 int do_index,
1895 const struct
1897
1898
1917 void *client_info,
1918 uint64_t length,
1919 void *data,
1920 const struct
1922 const struct
1924 int do_index,
1925 const struct
1927
1928
1949typedef size_t
1950(*GNUNET_FS_DataReader) (void *cls,
1951 uint64_t offset,
1952 size_t max,
1953 void *buf,
1954 char **emsg);
1955
1956
1975 void *client_info,
1976 uint64_t length,
1978 void *reader_cls,
1979 const struct GNUNET_FS_Uri
1980 *keywords,
1981 const struct
1983 int do_index,
1984 const struct
1986
1987
2002 void *client_info,
2003 const struct GNUNET_FS_Uri
2004 *keywords,
2005 const struct
2007 *meta,
2008 const struct
2010 const char *filename);
2011
2012
2019int
2021 *ent);
2022
2023
2035int
2037 struct GNUNET_FS_FileInformation *ent);
2038
2039
2054void
2057 void *proc_cls);
2058
2059
2070void
2073 void *cleaner_cls);
2074
2075
2093
2094
2111 const struct GNUNET_CRYPTO_EddsaPrivateKey *ns,
2112 const char *nid,
2113 const char *nuid,
2115
2116
2125void
2127
2128
2137typedef void
2138(*GNUNET_FS_PublishContinuation) (void *cls,
2139 const struct GNUNET_FS_Uri *uri,
2140 const char *emsg);
2141
2142
2147
2148
2164 const struct GNUNET_FS_Uri *ksk_uri,
2165 const struct GNUNET_FS_MetaData *meta,
2166 const struct GNUNET_FS_Uri *uri,
2167 const struct GNUNET_FS_BlockOptions *bo,
2170
2171
2177void
2179
2180
2185
2186
2204 const struct GNUNET_CRYPTO_EddsaPrivateKey *ns,
2205 const char *identifier,
2206 const char *update,
2207 const struct GNUNET_FS_MetaData *meta,
2208 const struct GNUNET_FS_Uri *uri,
2209 const struct GNUNET_FS_BlockOptions *bo,
2212
2213
2219void
2221
2222
2231typedef int
2232(*GNUNET_FS_IndexedFileProcessor) (void *cls,
2233 const char *filename,
2234 const struct GNUNET_HashCode *file_id);
2235
2236
2241
2242
2254 void *iterator_cls);
2255
2256
2262void
2264
2265
2276 const char *filename,
2277 void *cctx);
2278
2279
2285void
2287
2288
2298typedef void (*GNUNET_FS_IdentifierProcessor) (void *cls,
2299 const char *last_id,
2300 const struct
2301 GNUNET_FS_Uri *last_uri,
2302 const struct
2304 last_meta,
2305 const char *next_id);
2306
2307
2329void
2331 const struct
2333 const char *next_id,
2335 void *ip_cls);
2336
2337
2354
2355
2369 const struct GNUNET_FS_Uri *uri, uint32_t anonymity,
2370 enum GNUNET_FS_SearchOptions options, void *cctx);
2371
2372
2378void
2380
2381
2387void
2389
2390
2396void
2398
2399
2412 const struct GNUNET_FS_Uri *uri,
2413 const struct GNUNET_FS_MetaData *meta,
2414 void *client_info,
2415 uint32_t anonymity);
2416
2417
2425void *
2427
2428
2466
2467
2500 const struct GNUNET_FS_Uri *uri,
2501 const struct GNUNET_FS_MetaData *meta,
2502 const char *filename, const char *tempname,
2503 uint64_t offset, uint64_t length, uint32_t anonymity,
2504 enum GNUNET_FS_DownloadOptions options, void *cctx,
2506
2507
2544 struct GNUNET_FS_SearchResult *sr,
2545 const char *filename,
2546 const char *tempname, uint64_t offset,
2547 uint64_t length, uint32_t anonymity,
2549 void *cctx);
2550
2551
2558void
2560
2561
2567void
2569
2570
2576void
2578
2579
2580/* ******************** Directory API *********************** */
2581
2582
2583#define GNUNET_FS_DIRECTORY_MIME "application/gnunet-directory"
2584#define GNUNET_FS_DIRECTORY_MAGIC "\211GND\r\n\032\n"
2585#define GNUNET_FS_DIRECTORY_EXT ".gnd"
2586
2594int
2596 *md);
2597
2598
2605void
2607
2608
2615char *
2617 GNUNET_FS_MetaData *md);
2618
2619
2635typedef void (*GNUNET_FS_DirectoryEntryProcessor) (void *cls,
2636 const char *filename,
2637 const struct GNUNET_FS_Uri *
2638 uri,
2639 const struct
2641 meta, size_t length,
2642 const void *data);
2643
2644
2664int
2665GNUNET_FS_directory_list_contents (size_t size, const void *data,
2666 uint64_t offset,
2668 void *dep_cls);
2669
2670
2675
2676
2684 *mdir);
2685
2686
2697void
2699 const struct GNUNET_FS_Uri *uri,
2700 const struct GNUNET_FS_MetaData *md,
2701 const void *data);
2702
2703
2714int
2716 size_t *rsize, void **rdata);
2717
2718
2719/* ******************** DirScanner API *********************** */
2720
2758
2759
2771typedef void (*GNUNET_FS_DirScannerProgressCallback) (void *cls,
2772 const char *filename,
2773 int is_directory,
2774 enum
2776 reason);
2777
2778
2837
2838
2843
2844
2856struct GNUNET_FS_DirScanner *
2859 const char *ex,
2861 void *cb_cls);
2862
2863
2870void
2872
2873
2884
2885
2892void
2894
2895
2901void
2903
2911/* ****************** metadata ******************* */
2912
2913
2920struct GNUNET_FS_MetaData *
2922
2923
2931struct GNUNET_FS_MetaData *
2933 const struct GNUNET_FS_MetaData *md);
2934
2935
2942void
2944
2945
2957int
2959 const struct GNUNET_FS_MetaData *md1,
2960 const struct GNUNET_FS_MetaData *md2);
2961
2962
2981int
2983 const char *plugin_name,
2985 enum EXTRACTOR_MetaFormat format,
2986 const char *data_mime_type,
2987 const char *data,
2988 size_t data_size);
2989
2990
2999void
3001 const struct GNUNET_FS_MetaData *in);
3002
3003
3015int
3018 const char *data,
3019 size_t data_size);
3020
3021
3028void
3030
3031
3039void
3041 struct GNUNET_FS_MetaData *md);
3042
3043
3054int
3057 void *iter_cls);
3058
3059
3071char *
3073 const struct GNUNET_FS_MetaData *md,
3075
3076
3089char *
3091 const struct GNUNET_FS_MetaData *md,
3092 ...);
3093
3104size_t
3106 const struct GNUNET_FS_MetaData *md,
3107 unsigned char **thumb);
3108
3109
3135
3136
3152ssize_t
3154 const struct GNUNET_FS_MetaData *md,
3155 char **target,
3156 size_t max,
3158
3159
3167ssize_t
3169 const struct GNUNET_FS_MetaData *md);
3170
3171
3181struct GNUNET_FS_MetaData *
3182GNUNET_FS_meta_data_deserialize (const char *input, size_t size);
3183
3194 const char *what,
3195 const struct GNUNET_FS_MetaData *m);
3196
3206 struct GNUNET_FS_MetaData **result);
3207
3208
3218 const struct GNUNET_FS_MetaData *m);
3219
3230 const char *what,
3231 struct GNUNET_FS_MetaData **result);
3232
3233void
3235 const struct GNUNET_HashCode *hc,
3236 struct GNUNET_CRYPTO_AeadSecretKey *skey,
3237 struct GNUNET_CRYPTO_AeadNonce *nonce);
3238
3239#if 0 /* keep Emacsens' auto-indent happy */
3240{
3241#endif
3242#ifdef __cplusplus
3243}
3244#endif
3245
3246#endif
3247
/* end of group */
3249
/* end of group addition */
struct GNUNET_GETOPT_CommandLineOption options[]
Definition 002.c:5
static struct GNUNET_ARM_MonitorHandle * m
Monitor connection with ARM.
Definition gnunet-arm.c:103
static struct GNUNET_ARM_Handle * h
Connection with ARM.
Definition gnunet-arm.c:98
static int start
Set if we are to start default services (including ARM).
Definition gnunet-arm.c:38
static struct GNUNET_CONFIGURATION_Handle * cfg
Our configuration.
Definition gnunet-arm.c:108
static char * dir
Set to the directory where runtime files are stored.
Definition gnunet-arm.c:88
static int disable_extractor
Disable extractor option to use for publishing.
static char * plugin_name
Name of our plugin.
static char * data
The data to insert into the dht.
struct GNUNET_HashCode key
The key used in the DHT.
static unsigned int anonymity
static struct GNUNET_FS_Handle * ctx
static struct GNUNET_FS_DownloadContext * dc
static char * filename
static struct GNUNET_FS_GetIndexedContext * gic
Handle for the index listing operation.
Definition gnunet-fs.c:40
static char * name
Name (label) of the records to list.
static struct GNUNET_NAMECACHE_Handle * ns
Handle to the namecache.
static char * value
Value of the record to add/remove.
static uint32_t type
Type string converted to DNS type value.
static size_t data_size
Number of bytes in data.
static struct GNUNET_FS_Uri * uri
Value of URI provided on command-line (when not publishing a file but just creating UBlocks to refer ...
static struct GNUNET_FS_DirScanner * ds
Handle to the directory scanner (for recursive insertions).
static struct GNUNET_FS_MetaData * meta
Meta-data provided via command-line option.
static char * pseudonym
Command-line option identifying the pseudonym to use for the publication.
static struct GNUNET_FS_BlockOptions bo
Options we set for published blocks.
static char * next_id
Command-line option for namespace publishing: identifier for updates to this publication.
static struct GNUNET_FS_PublishContext * pc
Handle to FS-publishing operation.
static struct GNUNET_FS_Uri * topKeywords
Keywords provided via command-line option.
static int result
Global testing status.
#define info
static struct GNUNET_FS_SearchContext * sc
static struct GNUNET_FS_UnindexContext * uc
static struct GNUNET_TIME_Relative duration
Option '-d': duration of the mapping.
Definition gnunet-vpn.c:90
commonly used definitions; globals in this file are exempt from the rule that the module name ("commo...
struct GNUNET_FS_Uri * GNUNET_FS_uri_dup(const struct GNUNET_FS_Uri *uri)
Duplicate URI.
Definition fs_uri.c:987
#define EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME
GNUNET_FS_Flags
General (global) option flags for file-sharing.
GNUNET_FS_SearchOptions
Options for searching.
void GNUNET_FS_share_tree_free(struct GNUNET_FS_ShareTreeItem *toplevel)
Release memory of a share item tree.
struct GNUNET_TIME_Absolute GNUNET_FS_uri_loc_get_expiration(const struct GNUNET_FS_Uri *uri)
Obtain the expiration of the LOC URI.
Definition fs_uri.c:829
int(* GNUNET_FS_KeywordIterator)(void *cls, const char *keyword, int is_mandatory)
Iterator over keywords.
void GNUNET_FS_namespace_list_updateable(struct GNUNET_FS_Handle *h, const struct GNUNET_CRYPTO_EddsaPrivateKey *ns, const char *next_id, GNUNET_FS_IdentifierProcessor ip, void *ip_cls)
List all of the identifiers in the namespace for which we could produce an update.
const char * GNUNET_FS_file_information_get_filename(const struct GNUNET_FS_FileInformation *s)
Obtain the filename from the file information structure.
enum GNUNET_GenericReturnValue GNUNET_FS_write_meta_data(struct GNUNET_BIO_WriteHandle *h, const char *what, const struct GNUNET_FS_MetaData *m)
Write a metadata container.
Definition meta_data.c:1110
GNUNET_FS_DownloadOptions
Options for downloading.
int(* GNUNET_FS_FileInformationProcessor)(void *cls, struct GNUNET_FS_FileInformation *fi, uint64_t length, struct GNUNET_FS_MetaData *meta, struct GNUNET_FS_Uri **uri, struct GNUNET_FS_BlockOptions *bo, int *do_index, void **client_info)
Function called on entries in a struct GNUNET_FS_FileInformation iteration.
void GNUNET_FS_meta_data_make_directory(struct GNUNET_FS_MetaData *md)
Set the MIMETYPE information for the given metadata to "application/gnunet-directory".
int GNUNET_FS_directory_list_contents(size_t size, const void *data, uint64_t offset, GNUNET_FS_DirectoryEntryProcessor dep, void *dep_cls)
Iterate over all entries in a directory.
int GNUNET_FS_directory_builder_finish(struct GNUNET_FS_DirectoryBuilder *bld, size_t *rsize, void **rdata)
Finish building the directory.
void GNUNET_FS_uri_ksk_remove_keyword(struct GNUNET_FS_Uri *uri, const char *keyword)
Remove the given keyword from the set of keywords represented by the URI.
Definition fs_uri.c:780
void GNUNET_FS_publish_ksk_cancel(struct GNUNET_FS_PublishKskContext *pkc)
Abort the KSK publishing operation.
struct GNUNET_FS_GetIndexedContext * GNUNET_FS_get_indexed_files(struct GNUNET_FS_Handle *h, GNUNET_FS_IndexedFileProcessor iterator, void *iterator_cls)
Iterate over all indexed files.
void GNUNET_FS_search_continue(struct GNUNET_FS_SearchContext *sc)
Continue paused search.
Definition fs_search.c:1658
void * GNUNET_FS_probe_stop(struct GNUNET_FS_SearchResult *sr)
Stop probe activity.
Definition fs_search.c:540
char * GNUNET_FS_uri_sks_get_content_id(const struct GNUNET_FS_Uri *uri)
Get the content identifier of an SKS URI.
Definition fs_uri.c:1306
uint64_t GNUNET_FS_uri_chk_get_file_size(const struct GNUNET_FS_Uri *uri)
What is the size of the file that this URI refers to?
Definition fs_uri.c:1360
int GNUNET_FS_uri_test_ksk(const struct GNUNET_FS_Uri *uri)
Is this a keyword URI?
Definition fs_uri.c:1324
struct GNUNET_FS_Uri * GNUNET_FS_uri_loc_create(const struct GNUNET_FS_Uri *base_uri, const struct GNUNET_CRYPTO_EddsaPrivateKey *sign_key, struct GNUNET_TIME_Absolute expiration_time)
Construct a location URI (this peer will be used for the location).
Definition fs_uri.c:869
GNUNET_FS_OPTIONS
Options specified in the VARARGs portion of GNUNET_FS_start.
GNUNET_FS_Status
Possible status codes used in the callback for the various file-sharing operations.
size_t(* GNUNET_FS_DataReader)(void *cls, uint64_t offset, size_t max, void *buf, char **emsg)
Function that provides data.
struct GNUNET_FS_Uri * GNUNET_FS_uri_ksk_create(const char *keywords, char **emsg)
Create an FS URI from a single user-supplied string of keywords.
Definition fs_uri.c:1049
void GNUNET_FS_get_indexed_files_cancel(struct GNUNET_FS_GetIndexedContext *gic)
Cancel iteration over all indexed files.
int(* GNUNET_FS_IndexedFileProcessor)(void *cls, const char *filename, const struct GNUNET_HashCode *file_id)
Type of a function called by GNUNET_FS_get_indexed_files.
int GNUNET_FS_file_information_add(struct GNUNET_FS_FileInformation *dir, struct GNUNET_FS_FileInformation *ent)
Add an entry to a directory in a publish-structure.
int GNUNET_FS_uri_test_equal(const struct GNUNET_FS_Uri *u1, const struct GNUNET_FS_Uri *u2)
Test if two URIs are equal.
Definition fs_uri.c:1201
struct GNUNET_FS_PublishKskContext * GNUNET_FS_publish_ksk(struct GNUNET_FS_Handle *h, const struct GNUNET_FS_Uri *ksk_uri, const struct GNUNET_FS_MetaData *meta, const struct GNUNET_FS_Uri *uri, const struct GNUNET_FS_BlockOptions *bo, enum GNUNET_FS_PublishOptions options, GNUNET_FS_PublishContinuation cont, void *cont_cls)
Publish a KBlock on GNUnet.
void GNUNET_FS_file_information_inspect(struct GNUNET_FS_FileInformation *dir, GNUNET_FS_FileInformationProcessor proc, void *proc_cls)
Inspect a file or directory in a publish-structure.
struct GNUNET_FS_DownloadContext * GNUNET_FS_download_start(struct GNUNET_FS_Handle *h, const struct GNUNET_FS_Uri *uri, const struct GNUNET_FS_MetaData *meta, const char *filename, const char *tempname, uint64_t offset, uint64_t length, uint32_t anonymity, enum GNUNET_FS_DownloadOptions options, void *cctx, struct GNUNET_FS_DownloadContext *parent)
Download parts of a file.
enum GNUNET_GenericReturnValue GNUNET_FS_read_meta_data(struct GNUNET_BIO_ReadHandle *h, const char *what, struct GNUNET_FS_MetaData **result)
Read a metadata container.
Definition meta_data.c:1051
void GNUNET_FS_unindex_stop(struct GNUNET_FS_UnindexContext *uc)
Clean up after completion of an unindex operation.
Definition fs_unindex.c:838
void GNUNET_FS_hash_to_symmetric_key(const struct GNUNET_HashCode *hc, struct GNUNET_CRYPTO_AeadSecretKey *skey, struct GNUNET_CRYPTO_AeadNonce *nonce)
Definition fs_api.c:3342
int GNUNET_FS_uri_test_loc(const struct GNUNET_FS_Uri *uri)
Is this a location URI?
Definition fs_uri.c:1401
void(* GNUNET_FS_DirectoryEntryProcessor)(void *cls, const char *filename, const struct GNUNET_FS_Uri *uri, const struct GNUNET_FS_MetaData *meta, size_t length, const void *data)
Function used to process entries in a directory.
GNUNET_FS_PublishOptions
Options for publishing.
char * GNUNET_FS_uri_to_string(const struct GNUNET_FS_Uri *uri)
Convert a URI to a UTF-8 String.
Definition fs_uri.c:2034
void GNUNET_FS_download_resume(struct GNUNET_FS_DownloadContext *dc)
Resume a suspended download.
struct GNUNET_FS_FileInformation * GNUNET_FS_file_information_create_empty_directory(struct GNUNET_FS_Handle *h, void *client_info, const struct GNUNET_FS_Uri *keywords, const struct GNUNET_FS_MetaData *meta, const struct GNUNET_FS_BlockOptions *bo, const char *filename)
Create an entry for an empty directory in a publish-structure.
struct GNUNET_FS_SearchResult * GNUNET_FS_probe(struct GNUNET_FS_Handle *h, const struct GNUNET_FS_Uri *uri, const struct GNUNET_FS_MetaData *meta, void *client_info, uint32_t anonymity)
Start download probes for the given search result.
Definition fs_search.c:489
struct GNUNET_FS_Handle * GNUNET_FS_start(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *client_name, GNUNET_FS_ProgressCallback upcb, void *upcb_cls, enum GNUNET_FS_Flags flags,...)
Setup a connection to the file-sharing service.
Definition fs_api.c:3264
struct GNUNET_FS_Uri * GNUNET_FS_uri_ksk_create_from_args(unsigned int argc, const char **argv)
Create an FS URI from a user-supplied command line of keywords.
Definition fs_uri.c:1144
void GNUNET_FS_search_stop(struct GNUNET_FS_SearchContext *sc)
Stop search for content.
Definition fs_search.c:1766
struct GNUNET_FS_Uri * GNUNET_FS_uri_ksk_create_from_meta_data(const struct GNUNET_FS_MetaData *md)
Construct a keyword-URI from meta-data (take all entries in the meta-data and construct one large key...
Definition fs_uri.c:1788
int(* EXTRACTOR_MetaDataProcessor)(void *cls, const char *plugin_name, enum EXTRACTOR_MetaType type, enum EXTRACTOR_MetaFormat format, const char *data_mime_type, const char *data, size_t data_len)
Type of a function that libextractor calls for each meta data item found.
struct GNUNET_FS_ShareTreeItem * GNUNET_FS_directory_scan_get_result(struct GNUNET_FS_DirScanner *ds)
Obtain the result of the scan after the scan has signalled completion.
int GNUNET_FS_uri_ksk_get_keywords(const struct GNUNET_FS_Uri *uri, GNUNET_FS_KeywordIterator iterator, void *iterator_cls)
Iterate over all keywords in this keyword URI.
Definition fs_uri.c:720
void GNUNET_FS_uri_destroy(struct GNUNET_FS_Uri *uri)
Free URI.
Definition fs_uri.c:677
int GNUNET_FS_uri_test_sks(const struct GNUNET_FS_Uri *uri)
Is this a namespace URI?
Definition fs_uri.c:1271
struct GNUNET_FS_PublishContext * GNUNET_FS_publish_start(struct GNUNET_FS_Handle *h, struct GNUNET_FS_FileInformation *fi, const struct GNUNET_CRYPTO_EddsaPrivateKey *ns, const char *nid, const char *nuid, enum GNUNET_FS_PublishOptions options)
Publish a file or directory.
void GNUNET_FS_file_information_set_filename(struct GNUNET_FS_FileInformation *s, const char *filename)
Set the filename in the file information structure.
int GNUNET_FS_getopt_set_metadata(struct GNUNET_GETOPT_CommandLineProcessorContext *ctx, void *scls, const char *option, const char *value)
Command-line option parser function that allows the user to specify one or more '-m' options with met...
int GNUNET_FS_uri_sks_get_namespace(const struct GNUNET_FS_Uri *uri, struct GNUNET_CRYPTO_EddsaPublicKey *pseudonym)
Get the public key of a namespace from the given namespace URI.
Definition fs_uri.c:1286
struct GNUNET_FS_DownloadContext * GNUNET_FS_download_start_from_search(struct GNUNET_FS_Handle *h, struct GNUNET_FS_SearchResult *sr, const char *filename, const char *tempname, uint64_t offset, uint64_t length, uint32_t anonymity, enum GNUNET_FS_DownloadOptions options, void *cctx)
Download parts of a file based on a search result.
struct GNUNET_FS_DirScanner * GNUNET_FS_directory_scan_start(const char *filename, int disable_extractor, const char *ex, GNUNET_FS_DirScannerProgressCallback cb, void *cb_cls)
Start a directory scanner.
void GNUNET_FS_download_stop(struct GNUNET_FS_DownloadContext *dc, int do_delete)
Stop a download (aborts if download is incomplete).
struct GNUNET_FS_DirectoryBuilder * GNUNET_FS_directory_builder_create(const struct GNUNET_FS_MetaData *mdir)
Create a directory builder.
GNUNET_FS_DirScannerProgressUpdateReason
Progress reasons of the directory scanner.
struct GNUNET_FS_FileInformation * GNUNET_FS_file_information_create_from_data(struct GNUNET_FS_Handle *h, void *client_info, uint64_t length, void *data, const struct GNUNET_FS_Uri *keywords, const struct GNUNET_FS_MetaData *meta, int do_index, const struct GNUNET_FS_BlockOptions *bo)
Create an entry for a file in a publish-structure.
int GNUNET_FS_meta_data_test_for_directory(const struct GNUNET_FS_MetaData *md)
Does the meta-data claim that this is a directory? Checks if the mime-type is that of a GNUnet direct...
void(* GNUNET_FS_PublishContinuation)(void *cls, const struct GNUNET_FS_Uri *uri, const char *emsg)
Signature of a function called as the continuation of a KBlock or SBlock publication.
int GNUNET_FS_uri_test_chk(const struct GNUNET_FS_Uri *uri)
Is this a file (or directory) URI?
Definition fs_uri.c:1346
void(* GNUNET_FS_IdentifierProcessor)(void *cls, const char *last_id, const struct GNUNET_FS_Uri *last_uri, const struct GNUNET_FS_MetaData *last_meta, const char *next_id)
Function called on updateable identifiers.
struct GNUNET_FS_PublishSksContext * GNUNET_FS_publish_sks(struct GNUNET_FS_Handle *h, const struct GNUNET_CRYPTO_EddsaPrivateKey *ns, const char *identifier, const char *update, const struct GNUNET_FS_MetaData *meta, const struct GNUNET_FS_Uri *uri, const struct GNUNET_FS_BlockOptions *bo, enum GNUNET_FS_PublishOptions options, GNUNET_FS_PublishContinuation cont, void *cont_cls)
Publish an SBlock on GNUnet.
struct GNUNET_FS_FileInformation * GNUNET_FS_file_information_create_from_file(struct GNUNET_FS_Handle *h, void *client_info, const char *filename, const struct GNUNET_FS_Uri *keywords, const struct GNUNET_FS_MetaData *meta, int do_index, const struct GNUNET_FS_BlockOptions *bo)
Create an entry for a file in a publish-structure.
void GNUNET_FS_stop(struct GNUNET_FS_Handle *h)
Close our connection with the file-sharing service.
Definition fs_api.c:3330
unsigned int GNUNET_FS_uri_ksk_get_keyword_count(const struct GNUNET_FS_Uri *uri)
How many keywords are ANDed in this keyword URI?
Definition fs_uri.c:711
EXTRACTOR_MetaFormat
Format in which the extracted meta data is presented.
struct GNUNET_FS_Uri * GNUNET_FS_uri_parse(const char *uri, char **emsg)
Convert a UTF-8 String to a URI.
Definition fs_uri.c:637
int GNUNET_FS_file_information_is_directory(const struct GNUNET_FS_FileInformation *ent)
Test if a given entry represents a directory.
char * GNUNET_FS_uri_ksk_to_string_fancy(const struct GNUNET_FS_Uri *uri)
Convert keyword URI to a human readable format (i.e.
Definition fs_uri.c:148
struct GNUNET_FS_Uri * GNUNET_FS_uri_sks_create(const struct GNUNET_CRYPTO_EddsaPublicKey *ns, const char *id)
Create an SKS URI from a namespace ID and an identifier.
Definition fs_uri.c:908
struct GNUNET_GETOPT_CommandLineOption GNUNET_FS_GETOPT_METADATA(char shortName, const char *name, const char *argumentHelp, const char *description, struct GNUNET_FS_MetaData **meta)
Allow user to specify metadata.
Definition fs_getopt.c:250
struct GNUNET_BIO_ReadSpec GNUNET_FS_read_spec_meta_data(const char *what, struct GNUNET_FS_MetaData **result)
Create the specification to read a metadata container.
Definition meta_data.c:1185
void GNUNET_FS_publish_stop(struct GNUNET_FS_PublishContext *pc)
Stop a publication.
struct GNUNET_FS_UnindexContext * GNUNET_FS_unindex_start(struct GNUNET_FS_Handle *h, const char *filename, void *cctx)
Unindex a file.
Definition fs_unindex.c:796
void GNUNET_FS_search_pause(struct GNUNET_FS_SearchContext *sc)
Pause search.
Definition fs_search.c:1627
struct GNUNET_FS_FileInformation * GNUNET_FS_file_information_create_from_reader(struct GNUNET_FS_Handle *h, void *client_info, uint64_t length, GNUNET_FS_DataReader reader, void *reader_cls, const struct GNUNET_FS_Uri *keywords, const struct GNUNET_FS_MetaData *meta, int do_index, const struct GNUNET_FS_BlockOptions *bo)
Create an entry for a file in a publish-structure.
struct GNUNET_BIO_WriteSpec GNUNET_FS_write_spec_meta_data(const char *what, const struct GNUNET_FS_MetaData *m)
Create the specification to write a metadata container.
Definition meta_data.c:1223
struct GNUNET_FS_Uri * GNUNET_FS_uri_loc_get_uri(const struct GNUNET_FS_Uri *uri)
Obtain the URI of the content itself.
Definition fs_uri.c:843
char * GNUNET_FS_meta_data_suggest_filename(const struct GNUNET_FS_MetaData *md)
Suggest a filename based on given metadata.
Definition fs_misc.c:39
int GNUNET_FS_uri_to_key(const struct GNUNET_FS_Uri *uri, struct GNUNET_HashCode *key)
Get a unique key from a URI.
Definition fs_uri.c:96
void GNUNET_FS_directory_scan_abort(struct GNUNET_FS_DirScanner *ds)
Abort the scan.
const struct GNUNET_HashCode * GNUNET_FS_uri_chk_get_file_hash(const struct GNUNET_FS_Uri *uri)
What is the hash of the original file's content that this URI refers to?
Definition fs_uri.c:1385
EXTRACTOR_MetaType
Enumeration defining various sources of keywords.
void GNUNET_FS_file_information_destroy(struct GNUNET_FS_FileInformation *fi, GNUNET_FS_FileInformationProcessor cleaner, void *cleaner_cls)
Destroy publish-structure.
void GNUNET_FS_download_suspend(struct GNUNET_FS_DownloadContext *dc)
Suspend a download.
void GNUNET_FS_share_tree_trim(struct GNUNET_FS_ShareTreeItem *toplevel)
Process a share item tree, moving frequent keywords up and copying frequent metadata up.
struct GNUNET_GETOPT_CommandLineOption GNUNET_FS_GETOPT_KEYWORDS(char shortName, const char *name, const char *argumentHelp, const char *description, struct GNUNET_FS_Uri **topKeywords)
Allow user to specify keywords.
Definition fs_getopt.c:129
struct GNUNET_FS_Uri * GNUNET_FS_uri_ksk_merge(const struct GNUNET_FS_Uri *u1, const struct GNUNET_FS_Uri *u2)
Merge the sets of keywords from two KSK URIs.
Definition fs_uri.c:931
struct GNUNET_FS_SearchContext * GNUNET_FS_search_start(struct GNUNET_FS_Handle *h, const struct GNUNET_FS_Uri *uri, uint32_t anonymity, enum GNUNET_FS_SearchOptions options, void *cctx)
Start search for content.
Definition fs_search.c:1607
void GNUNET_FS_directory_builder_add(struct GNUNET_FS_DirectoryBuilder *bld, const struct GNUNET_FS_Uri *uri, const struct GNUNET_FS_MetaData *md, const void *data)
Add an entry to a directory.
int GNUNET_FS_uri_loc_get_peer_identity(const struct GNUNET_FS_Uri *uri, struct GNUNET_PeerIdentity *peer)
Obtain the identity of the peer offering the data.
Definition fs_uri.c:812
void GNUNET_FS_publish_sks_cancel(struct GNUNET_FS_PublishSksContext *psc)
Abort the SKS publishing operation.
void *(* GNUNET_FS_ProgressCallback)(void *cls, const struct GNUNET_FS_ProgressInfo *info)
Notification of FS to a client about the progress of an operation.
void(* GNUNET_FS_DirScannerProgressCallback)(void *cls, const char *filename, int is_directory, enum GNUNET_FS_DirScannerProgressUpdateReason reason)
Function called over time as the directory scanner makes progress on the job at hand.
const char * GNUNET_FS_file_information_get_id(struct GNUNET_FS_FileInformation *s)
Obtain the name under which this file information structure is stored on disk.
void GNUNET_FS_uri_ksk_add_keyword(struct GNUNET_FS_Uri *uri, const char *keyword, int is_mandatory)
Add the given keyword to the set of keywords represented by the URI.
Definition fs_uri.c:752
@ GNUNET_FS_FLAGS_PERSISTENCE
Is persistence of operations desired? (will create SUSPEND/RESUME events).
@ GNUNET_FS_FLAGS_DO_PROBES
Should we automatically trigger probes for search results to determine availability?...
@ GNUNET_FS_FLAGS_NONE
No special flags set.
@ GNUNET_FS_SEARCH_OPTION_LOOPBACK_ONLY
Only search the local host, do not search remote systems (no P2P)
@ GNUNET_FS_SEARCH_OPTION_NONE
No options (use defaults for everything).
@ GNUNET_FS_DOWNLOAD_OPTION_NONE
No options (use defaults for everything).
@ GNUNET_FS_DOWNLOAD_IS_PROBE
Internal option used to flag this download as a 'probe' for a search result.
@ GNUNET_FS_DOWNLOAD_OPTION_RECURSIVE
Do a recursive download (that is, automatically trigger the download of files in directories).
@ GNUNET_FS_DOWNLOAD_OPTION_LOOPBACK_ONLY
Only download from the local host, do not access remote systems (no P2P)
@ GNUNET_FS_DOWNLOAD_NO_TEMPORARIES
Do not append temporary data to the target file (for the IBlocks).
@ GNUNET_FS_OPTIONS_DOWNLOAD_PARALLELISM
Select the desired amount of parallelism (this option should be followed by an "unsigned int" giving ...
@ GNUNET_FS_OPTIONS_END
Last option in the VARARG list.
@ GNUNET_FS_OPTIONS_REQUEST_PARALLELISM
Maximum number of requests that should be pending at a given point in time (individual downloads may ...
@ GNUNET_FS_STATUS_UNINDEX_PROGRESS
Notification that we made progress unindexing a file.
@ GNUNET_FS_STATUS_SEARCH_UPDATE
We have additional data about the quality or availability of a search result.
@ GNUNET_FS_STATUS_DOWNLOAD_INACTIVE
Notification that this download is no longer actively being pursued (back in the queue).
@ GNUNET_FS_STATUS_SEARCH_RESULT_NAMESPACE
We have discovered a new namespace.
@ GNUNET_FS_STATUS_UNINDEX_RESUME
Notification that we resumed unindexing of a file.
@ GNUNET_FS_STATUS_DOWNLOAD_ERROR
Notification that this download encountered an error.
@ GNUNET_FS_STATUS_SEARCH_ERROR
Signals a problem with this search.
@ GNUNET_FS_STATUS_DOWNLOAD_COMPLETED
Notification that this download completed.
@ GNUNET_FS_STATUS_DOWNLOAD_RESUME
Notification that this download is being resumed.
@ GNUNET_FS_STATUS_SEARCH_RESULT_STOPPED
Event generated for each search result when the respective search is stopped.
@ GNUNET_FS_STATUS_UNINDEX_START
Notification that we started to unindex a file.
@ GNUNET_FS_STATUS_SEARCH_SUSPEND
Last event when a search is being suspended; note that "GNUNET_FS_SEARCH_STOPPED" will not be generat...
@ GNUNET_FS_STATUS_SEARCH_RESUME
Last event when a search is being resumed; note that "GNUNET_FS_SEARCH_START" will not be generated i...
@ GNUNET_FS_STATUS_SEARCH_RESUME_RESULT
Event generated for each search result when the respective search is resumed.
@ GNUNET_FS_STATUS_PUBLISH_STOPPED
Notification that we have stopped the process of uploading a file structure; no further events will b...
@ GNUNET_FS_STATUS_PUBLISH_ERROR
Notification that an error was encountered sharing a file structure.
@ GNUNET_FS_STATUS_UNINDEX_STOPPED
Notification that the unindexing of this file was stopped (final event for this action).
@ GNUNET_FS_STATUS_DOWNLOAD_SUSPEND
Notification that this download was suspended.
@ GNUNET_FS_STATUS_SEARCH_RESULT
This search has yielded a result.
@ GNUNET_FS_STATUS_PUBLISH_SUSPEND
Notification that we have suspended sharing a file structure.
@ GNUNET_FS_STATUS_SEARCH_CONTINUED
Signals that this search was continued (unpaused).
@ GNUNET_FS_STATUS_PUBLISH_PROGRESS
Notification that we are making progress sharing a file structure.
@ GNUNET_FS_STATUS_DOWNLOAD_START
Notification that we have started this download.
@ GNUNET_FS_STATUS_UNINDEX_COMPLETED
Notification that the unindexing of this file was completed.
@ GNUNET_FS_STATUS_SEARCH_PAUSED
Signals that this search was paused.
@ GNUNET_FS_STATUS_DOWNLOAD_PROGRESS
Notification about progress with this download.
@ GNUNET_FS_STATUS_DOWNLOAD_LOST_PARENT
Notification that this download is no longer part of a recursive download or search but now a 'stand-...
@ GNUNET_FS_STATUS_UNINDEX_SUSPEND
Notification that we suspended unindexing a file.
@ GNUNET_FS_STATUS_UNINDEX_ERROR
Notification that we encountered an error unindexing a file.
@ GNUNET_FS_STATUS_PUBLISH_PROGRESS_DIRECTORY
Notification that we are making progress sharing a directory.
@ GNUNET_FS_STATUS_PUBLISH_START
Notification that we have started to publish a file structure.
@ GNUNET_FS_STATUS_PUBLISH_COMPLETED
Notification that we completed sharing a file structure.
@ GNUNET_FS_STATUS_PUBLISH_RESUME
Notification that we have resumed sharing a file structure.
@ GNUNET_FS_STATUS_SEARCH_START
First event generated when a client requests a search to begin or when a namespace result automatical...
@ GNUNET_FS_STATUS_SEARCH_RESULT_SUSPEND
Event generated for each search result when the respective search is suspended.
@ GNUNET_FS_STATUS_DOWNLOAD_ACTIVE
Notification that this download is now actively being pursued (as opposed to waiting in the queue).
@ GNUNET_FS_STATUS_DOWNLOAD_STOPPED
Notification that this download was stopped (final event with respect to this action).
@ GNUNET_FS_STATUS_SEARCH_STOPPED
Last message from a search; this signals that there will be no further events associated with this se...
@ GNUNET_FS_PUBLISH_OPTION_SIMULATE_ONLY
Simulate publishing.
@ GNUNET_FS_PUBLISH_OPTION_NONE
No options (use defaults for everything).
@ GNUNET_FS_DIRSCANNER_INTERNAL_ERROR
There was an internal error.
@ GNUNET_FS_DIRSCANNER_FILE_IGNORED
We're having trouble accessing a file (soft-error); it will be ignored.
@ GNUNET_FS_DIRSCANNER_FINISHED
Last call to the progress function: we have finished scanning the directory.
@ GNUNET_FS_DIRSCANNER_EXTRACT_FINISHED
We've finished extracting meta data from a file.
@ GNUNET_FS_DIRSCANNER_ALL_COUNTED
We've found all files (in the pre-pass).
@ GNUNET_FS_DIRSCANNER_FILE_START
We've started processing a file or directory.
@ EXTRACTOR_METAFORMAT_BINARY
Some kind of binary format, see given Mime type.
@ EXTRACTOR_METAFORMAT_C_STRING
0-terminated string.
@ EXTRACTOR_METAFORMAT_UTF8
0-terminated, UTF-8 encoded string.
@ EXTRACTOR_METAFORMAT_UNKNOWN
Format is unknown.
@ EXTRACTOR_METATYPE_PUBLICATION_DATE
@ EXTRACTOR_METATYPE_URI
@ EXTRACTOR_METATYPE_JOURNAL_NAME
@ EXTRACTOR_METATYPE_BOOK_TITLE
@ EXTRACTOR_METATYPE_THUMBNAIL
@ EXTRACTOR_METATYPE_UNKNOWN
@ EXTRACTOR_METATYPE_AUTHOR_NAME
@ EXTRACTOR_METATYPE_COMMENT
@ EXTRACTOR_METATYPE_TITLE
@ EXTRACTOR_METATYPE_ARTIST
@ EXTRACTOR_METATYPE_ISRC
@ EXTRACTOR_METATYPE_KEYWORDS
@ EXTRACTOR_METATYPE_FILENAME
@ EXTRACTOR_METATYPE_MIMETYPE
@ EXTRACTOR_METATYPE_ALBUM
@ EXTRACTOR_METATYPE_ORIGINAL_TITLE
@ EXTRACTOR_METATYPE_PACKAGE_NAME
@ EXTRACTOR_METATYPE_SUBJECT
@ EXTRACTOR_METATYPE_RESERVED
@ EXTRACTOR_METATYPE_URL
@ EXTRACTOR_METATYPE_GNUNET_FULL_DATA
@ EXTRACTOR_METATYPE_DESCRIPTION
GNUNET_GenericReturnValue
Named constants for return values.
int GNUNET_FS_meta_data_iterate(const struct GNUNET_FS_MetaData *md, EXTRACTOR_MetaDataProcessor iter, void *iter_cls)
Iterate over MD entries.
Definition meta_data.c:418
char * GNUNET_FS_meta_data_get_by_type(const struct GNUNET_FS_MetaData *md, enum EXTRACTOR_MetaType type)
Get the first MD entry of the given type.
Definition meta_data.c:438
void GNUNET_FS_meta_data_add_publication_date(struct GNUNET_FS_MetaData *md)
Add the current time as the publication date to the meta-data.
Definition meta_data.c:391
ssize_t GNUNET_FS_meta_data_get_serialized_size(const struct GNUNET_FS_MetaData *md)
Get the size of the full meta-data in serialized form.
Definition meta_data.c:858
size_t GNUNET_FS_meta_data_get_thumbnail(const struct GNUNET_FS_MetaData *md, unsigned char **thumb)
Get a thumbnail from the meta-data (if present).
Definition meta_data.c:490
GNUNET_FS_MetaDataSerializationOptions
Options for metadata serialization.
ssize_t GNUNET_FS_meta_data_serialize(const struct GNUNET_FS_MetaData *md, char **target, size_t max, enum GNUNET_FS_MetaDataSerializationOptions opt)
Serialize meta-data to target.
Definition meta_data.c:637
struct GNUNET_FS_MetaData * GNUNET_FS_meta_data_create(void)
Create a fresh meta data container.
Definition meta_data.c:127
void GNUNET_FS_meta_data_merge(struct GNUNET_FS_MetaData *md, const struct GNUNET_FS_MetaData *in)
Extend metadata.
Definition meta_data.c:356
struct GNUNET_FS_MetaData * GNUNET_FS_meta_data_duplicate(const struct GNUNET_FS_MetaData *md)
Duplicate a MetaData token.
Definition meta_data.c:527
int GNUNET_FS_meta_data_insert(struct GNUNET_FS_MetaData *md, const char *plugin_name, enum EXTRACTOR_MetaType type, enum EXTRACTOR_MetaFormat format, const char *data_mime_type, const char *data, size_t data_size)
Extend metadata.
Definition meta_data.c:254
void GNUNET_FS_meta_data_destroy(struct GNUNET_FS_MetaData *md)
Free meta data.
Definition meta_data.c:166
int GNUNET_FS_meta_data_test_equal(const struct GNUNET_FS_MetaData *md1, const struct GNUNET_FS_MetaData *md2)
Test if two MDs are equal.
Definition meta_data.c:200
void GNUNET_FS_meta_data_clear(struct GNUNET_FS_MetaData *md)
Remove all items in the container.
Definition meta_data.c:183
int GNUNET_FS_meta_data_delete(struct GNUNET_FS_MetaData *md, enum EXTRACTOR_MetaType type, const char *data, size_t data_size)
Remove an item.
Definition meta_data.c:364
struct GNUNET_FS_MetaData * GNUNET_FS_meta_data_deserialize(const char *input, size_t size)
Deserialize meta-data.
Definition meta_data.c:885
char * GNUNET_FS_meta_data_get_first_by_types(const struct GNUNET_FS_MetaData *md,...)
Get the first matching MD entry of the given types.
Definition meta_data.c:456
@ GNUNET_FS_META_DATA_SERIALIZE_FULL
Serialize all of the data.
@ GNUNET_FS_META_DATA_SERIALIZE_PART
If not enough space is available, it is acceptable to only serialize some of the metadata.
@ GNUNET_FS_META_DATA_SERIALIZE_NO_COMPRESS
Speed is of the essence, do not allow compression.
#define max(x, y)
static unsigned int size
Size of the "table".
Definition peer.c:68
Handle for buffered reading.
Definition bio.c:69
Structure specifying a reading operation on an IO handle.
const char * what
What is being read (for error message creation)
Handle for buffered writing.
Definition bio.c:466
Structure specifying a writing operation on an IO handle.
const char * what
What is being read (for error message creation)
type for session keys
Private ECC key encoded for transmission.
Public ECC key (always for curve Ed25519) encoded in a format suitable for network transmission and E...
Settings for publishing a block (which may of course also apply to an entire directory or file).
uint32_t anonymity_level
At which anonymity level should the block be shared? (0: no anonymity, 1: normal GAP,...
uint32_t content_priority
How important is it for us to store the block? If we run out of space, the highest-priority,...
uint32_t replication_level
How often should we try to migrate the block to other peers? Only used if "CONTENT_PUSHING" is set to...
struct GNUNET_TIME_Absolute expiration_time
At what time should the block expire? Data blocks (DBLOCKS and IBLOCKS) may still be used even if the...
An opaque structure a pointer to which is returned to the caller to be used to control the scanner.
Internal state of a directory builder.
Context for controlling a download.
Definition fs_api.h:1757
uint64_t offset
What is the first offset that we're interested in?
Definition fs_api.h:1891
uint64_t length
How many bytes starting from offset are desired? This is NOT the overall length of the file!
Definition fs_api.h:1897
struct GNUNET_FS_DownloadContext * parent
Parent download (used when downloading files in directories).
Definition fs_api.h:1777
Information for a file or directory that is about to be published.
Definition fs_api.h:228
struct GNUNET_FS_Uri * keywords
Keywords to use for KBlocks.
Definition fs_api.h:258
GNUNET_FS_DataReader reader
Function that can be used to read the data for the file.
Definition fs_api.h:317
char * emsg
Error message (non-NULL if this operation failed).
Definition fs_api.h:297
void * client_info
Pointer kept for the client.
Definition fs_api.h:248
int do_index
Should the file be indexed or inserted?
Definition fs_api.h:339
void * reader_cls
Closure for reader.
Definition fs_api.h:322
Context for GNUNET_FS_get_indexed_files().
void * iterator_cls
Closure for iterator.
GNUNET_FS_IndexedFileProcessor iterator
Function to call for each indexed file.
Master context for most FS operations.
Definition fs_api.h:1083
enum GNUNET_FS_Flags flags
General flags.
Definition fs_api.h:1175
char * client_name
Name of our client.
Definition fs_api.h:1092
void * upcb_cls
Closure for upcb.
Definition fs_api.h:1102
GNUNET_FS_ProgressCallback upcb
Function to call with updates on our progress.
Definition fs_api.h:1097
Meta data to associate with a file, directory or namespace.
Definition meta_data.c:92
Argument given to the progress callback with information about what is going on.
struct GNUNET_FS_PublishContext * pc
Context for controlling the upload.
const char * root
Root identifier for the namespace, can be NULL.
void * cctx
Client context pointer (set the last time by the client for this operation; initially NULL on START/R...
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_DownloadStatusEvent download
unsigned int depth
Depth of the given block in the tree; 0 would be the lowest level (DBLOCKs).
union GNUNET_FS_ProgressInfo::@25 value
Values that depend on the event type.
int is_paused
Is this search currently paused?
const struct GNUNET_FS_MetaData * meta
Known metadata for the download.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_SearchStatusEvent search
struct GNUNET_FS_Handle * fsh
File-sharing handle that generated the event.
enum GNUNET_FS_Status status
Specific status code (determines the event type).
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_PublishStatusEvent publish
const void * data
Data block we just published.
void * sctx
Client context pointer for the associated search operation (specifically, context pointer for the spe...
void * pctx
Client context pointer for the parent operation (if this is a file in a directory or a subdirectory).
uint32_t anonymity
What anonymity level is used for this upload?
int32_t availability_rank
Current availability rank (negative: unavailable, positive: available)
uint32_t availability_certainty
On how many total queries is the given availability_rank based?
const char * filename
Name of the file being published; can be NULL.
uint64_t size
How large is the file overall? For directories, this is only the size of the directory itself,...
uint32_t num_transmissions
How often did we transmit the request? (estimate, because we might have the same request pending for ...
const struct GNUNET_FS_Uri * uri
URI used for this download.
const char * name
Short, human-readable name of the namespace.
uint64_t offset
At what offset in the file is "data"?
struct GNUNET_FS_DownloadContext * dc
Context for controlling the download.
struct GNUNET_FS_SearchContext * sc
Context for controlling the search, NULL for searches that were not explicitly triggered by the clien...
const struct GNUNET_FS_Uri * query
What query is used for this search (list of keywords or SKS identifier).
const char * message
Error message, NULL if no error was encountered so far.
int is_active
Is the download currently active.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_UnindexEvent unindex
uint64_t data_len
Length of the data block.
uint32_t applicability_rank
Applicability rank (the larger, the better the result fits the search criteria).
uint64_t completed
How many bytes have we completed?
const struct GNUNET_FS_FileInformation * fi
Information about the file that is being published.
uint64_t total
How big do we estimate the entire directory to be?
struct GNUNET_FS_UnindexContext * uc
Context for controlling the unindexing.
const struct GNUNET_FS_Uri * chk_uri
URI of the file (if the download had been completed)
struct GNUNET_FS_SearchResult * result
Handle to the result (for starting downloads).
const struct GNUNET_FS_Uri * sks_uri
SKS URI of the file (if the download had been completed)
uint32_t respect_offered
How much respect did we offer for downloading this block? (estimate, because we might have the same r...
Handle for controlling a publication process.
Definition fs_api.h:1193
char * nuid
ID for future updates, NULL if we have no namespace or no updates.
Definition fs_api.h:1222
struct GNUNET_FS_FileInformation * fi
File-structure that is being shared.
Definition fs_api.h:1207
char * nid
ID of the content in the namespace, NULL if we have no namespace.
Definition fs_api.h:1217
Context for the KSK publication.
struct GNUNET_FS_Uri * ksk_uri
Keywords to use.
void * cont_cls
Closure for cont.
GNUNET_FS_PublishContinuation cont
Function to call once we're done.
Context for the SKS publication.
GNUNET_FS_PublishContinuation cont
Function to call once we're done.
void * cont_cls
Closure for cont.
Handle for controlling a search.
Definition fs_api.h:1524
Information we store for each search result.
Definition fs_api.h:499
void * client_info
Client info for this search result.
Definition fs_api.h:534
A node of a directory tree (produced by dirscanner)
int is_directory
GNUNET_YES if this is a directory
struct GNUNET_FS_ShareTreeItem * parent
This is a doubly-linked tree NULL for top-level entries.
struct GNUNET_FS_ShareTreeItem * prev
This is a doubly-linked list.
struct GNUNET_FS_Uri * ksk_uri
Keywords for this file or directory (derived from metadata).
char * short_filename
Base name of the file/directory.
struct GNUNET_FS_ShareTreeItem * next
This is a doubly-linked list.
struct GNUNET_FS_ShareTreeItem * children_head
This is a doubly-linked tree NULL for files and empty directories.
struct GNUNET_FS_MetaData * meta
Metadata for this file or directory.
char * filename
Name of the file/directory.
struct GNUNET_FS_ShareTreeItem * children_tail
This is a doubly-linked tree NULL for files and empty directories.
Handle for controlling an unindexing operation.
Definition fs_api.h:1364
A Universal Resource Identifier (URI), opaque.
Definition fs_api.h:167
char ** keywords
Keywords start with a '+' if they are mandatory (in which case the '+' is NOT part of the keyword) an...
Definition fs_api.h:186
Definition of a command line option.
const char * description
Help text for the option (description)
const char * argumentHelp
Name of the argument for the user in help text.
const char shortName
Short name of the option.
General context for command line processors.
A 512-bit hashcode.
The identity of the host (wraps the signing key of the peer).
Time for absolute times used by GNUnet, in microseconds.
Time for relative time used by GNUnet, in microseconds.