33 #ifndef GNUNET_FS_LIB_H 34 #define GNUNET_FS_LIB_H 67 #define GNUNET_FS_VERSION 0x00090300 72 #define GNUNET_FS_URI_PREFIX "gnunet://fs/" 73 #define GNUNET_FS_URI_KSK_INFIX "ksk/" 74 #define GNUNET_FS_URI_SKS_INFIX "sks/" 75 #define GNUNET_FS_URI_CHK_INFIX "chk/" 76 #define GNUNET_FS_URI_LOC_INFIX "loc/" 83 #define GNUNET_FS_PROBE_UPDATE_FREQUENCY GNUNET_TIME_relative_multiply ( \ 84 GNUNET_TIME_UNIT_MILLISECONDS, 250) 163 const char *keyword);
784 struct GNUNET_FS_PublishStatusEvent
853 struct GNUNET_FS_PublishProgressEvent
881 struct GNUNET_FS_PublishProgressDirectoryEvent
906 struct GNUNET_FS_PublishResumeEvent
928 struct GNUNET_FS_PublishCompletedEvent
945 struct GNUNET_FS_PublishErrorEvent
959 struct GNUNET_FS_DownloadStatusEvent
1040 struct GNUNET_FS_DownloadProgressEvent
1093 struct GNUNET_FS_DownloadStartEvent
1105 struct GNUNET_FS_DownloadResumeEvent
1122 struct GNUNET_FS_DownloadErrorEvent
1135 struct GNUNET_FS_SearchStatusEvent
1190 struct GNUNET_FS_SearchResultEvent
1218 struct GNUNET_FS_SearchResumeResultEvent
1259 struct GNUNET_FS_SearchUpdateEvent
1311 struct GNUNET_FS_SearchSuspendResultEvent
1339 struct GNUNET_FS_SearchStoppedResultEvent
1362 struct GNUNET_GS_SearchResumeEvent
1379 struct GNUNET_FS_SearchErrorEvent
1390 struct GNUNET_GS_SearchResultNamespaceEvent
1418 struct GNUNET_FS_UnindexEvent
1469 struct GNUNET_FS_UnindexProgressEvent
1497 struct GNUNET_FS_UnindexResumeEvent
1509 struct GNUNET_FS_UnindexErrorEvent
1548 (*GNUNET_FS_ProgressCallback) (
void *cls,
1709 void **client_info);
2081 const char *identifier,
2152 const char *filename,
2175 const char *last_id,
2378 const char *filename,
const char *tempname,
2379 uint64_t offset, uint64_t length, uint32_t
anonymity,
2421 const char *filename,
2422 const char *tempname, uint64_t offset,
2459 #define GNUNET_FS_DIRECTORY_MIME "application/gnunet-directory" 2460 #define GNUNET_FS_DIRECTORY_MAGIC "\211GND\r\n\032\n" 2461 #define GNUNET_FS_DIRECTORY_EXT ".gnd" 2517 meta,
size_t length,
2592 size_t *rsize,
void **rdata);
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.
static int iterator(void *cls, const struct GNUNET_PeerIdentity *key, void *value)
Iterator over hash map entries.
void * client_info
Client info for this search result.
unsigned int depth
Depth of the given block in the tree; 0 would be the lowest level (DBLOCKs).
General context for command line processors.
char * nid
ID of the content in the namespace, NULL if we have no namespace.
Notification that we have started this download.
int GNUNET_FS_uri_test_ksk(const struct GNUNET_FS_Uri *uri)
Is this a keyword URI?
char * GNUNET_FS_meta_data_suggest_filename(const struct GNUNET_CONTAINER_MetaData *md)
Suggest a filename based on given metadata.
const char * name
Short, human-readable name of the namespace.
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...
int GNUNET_FS_directory_builder_finish(struct GNUNET_FS_DirectoryBuilder *bld, size_t *rsize, void **rdata)
Finish building the directory.
static char * dir
Set to the directory where runtime files are stored.
GNUNET_FS_PublishContinuation cont
Function to call once we're done.
No options (use defaults for everything).
int32_t availability_rank
Current availability rank (negative: unavailable, positive: available)
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_CONTAINER_MetaData *meta, const struct GNUNET_FS_BlockOptions *bo, const char *filename)
Create an entry for an empty directory in a publish-structure.
void GNUNET_FS_publish_stop(struct GNUNET_FS_PublishContext *pc)
Stop a publication.
void GNUNET_FS_unindex_stop(struct GNUNET_FS_UnindexContext *uc)
Clean up after completion of an unindex operation.
int(* GNUNET_FS_FileInformationProcessor)(void *cls, struct GNUNET_FS_FileInformation *fi, uint64_t length, struct GNUNET_CONTAINER_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.
Context for controlling a download.
void * iterator_cls
Closure for iterator.
struct GNUNET_FS_UnindexContext * uc
Context for controlling the unindexing.
const char * argumentHelp
Name of the argument for the user in help text.
struct GNUNET_TIME_Absolute GNUNET_FS_uri_loc_get_expiration(const struct GNUNET_FS_Uri *uri)
Obtain the expiration of the LOC URI.
static const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration we are using.
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.
GNUNET_FS_Flags
General (global) option flags for file-sharing.
This search has yielded a result.
Notification that we started to unindex a file.
Last message from a search; this signals that there will be no further events associated with this se...
uint64_t total
How big do we estimate the entire directory to be?
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.
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).
void GNUNET_FS_meta_data_make_directory(struct GNUNET_CONTAINER_MetaData *md)
Set the MIMETYPE information for the given metadata to "application/gnunet-directory".
Notification that we are making progress sharing a file structure.
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.
struct GNUNET_FS_PublishContext * GNUNET_FS_publish_start(struct GNUNET_FS_Handle *h, struct GNUNET_FS_FileInformation *fi, const struct GNUNET_CRYPTO_EcdsaPrivateKey *ns, const char *nid, const char *nuid, enum GNUNET_FS_PublishOptions options)
Publish a file or directory.
struct GNUNET_GETOPT_CommandLineOption options[]
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.
Context for the SKS publication.
Notification that this download was suspended.
const struct GNUNET_CONTAINER_MetaData * meta
Known metadata for the download.
Event generated for each search result when the respective search is stopped.
struct GNUNET_FS_Uri * GNUNET_FS_uri_parse(const char *uri, char **emsg)
Convert a UTF-8 String to a URI.
Notification that we made progress unindexing a file.
void GNUNET_FS_search_continue(struct GNUNET_FS_SearchContext *sc)
Continue paused search.
const char * description
Help text for the option (description)
Master context for most FS operations.
struct GNUNET_FS_ShareTreeItem * prev
This is a doubly-linked list.
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.
void GNUNET_FS_get_indexed_files_cancel(struct GNUNET_FS_GetIndexedContext *gic)
Cancel iteration over all indexed files.
void GNUNET_FS_publish_ksk_cancel(struct GNUNET_FS_PublishKskContext *pkc)
Abort the KSK publishing operation.
void * pctx
Client context pointer for the parent operation (if this is a file in a directory or a subdirectory)...
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_PublishStatusEvent::@26::GNUNET_FS_PublishErrorEvent error
struct GNUNET_TIME_Relative duration
How long has this upload been actively running (excludes times where the upload was suspended)...
int(* GNUNET_FS_KeywordIterator)(void *cls, const char *keyword, int is_mandatory)
Iterator over keywords.
struct GNUNET_FS_SearchResult * result
Handle to the result (for starting downloads).
struct GNUNET_FS_ShareTreeItem * parent
This is a doubly-linked tree NULL for top-level entries.
struct GNUNET_FS_PublishSksContext * GNUNET_FS_publish_sks(struct GNUNET_FS_Handle *h, const struct GNUNET_CRYPTO_EcdsaPrivateKey *ns, const char *identifier, const char *update, const struct GNUNET_CONTAINER_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_data(struct GNUNET_FS_Handle *h, void *client_info, uint64_t length, void *data, const struct GNUNET_FS_Uri *keywords, const struct GNUNET_CONTAINER_MetaData *meta, int do_index, const struct GNUNET_FS_BlockOptions *bo)
Create an entry for a file in a publish-structure.
struct GNUNET_FS_ShareTreeItem * children_tail
This is a doubly-linked tree NULL for files and empty directories.
struct GNUNET_FS_SearchResult * GNUNET_FS_probe(struct GNUNET_FS_Handle *h, const struct GNUNET_FS_Uri *uri, const struct GNUNET_CONTAINER_MetaData *meta, void *client_info, uint32_t anonymity)
Start download probes for the given search result.
struct GNUNET_FS_DownloadContext * parent
Parent download (used when downloading files in directories).
GNUNET_FS_SearchOptions
Options for searching.
Last option in the VARARG list.
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_CONTAINER_MetaData *meta, int do_index, const struct GNUNET_FS_BlockOptions *bo)
Create an entry for a file in a publish-structure.
const char * message
Error message, NULL if no error was encountered so far.
struct GNUNET_FS_Uri * ksk_uri
Keywords for this file or directory (derived from metadata).
struct GNUNET_TIME_Relative block_download_duration
How much time passed between us asking for this block and actually getting it? GNUNET_TIME_UNIT_FOREV...
struct GNUNET_TIME_Relative eta
At what time do we expect to finish the upload? (will be a value in the past for completed uploads)...
First event generated when a client requests a search to begin or when a namespace result automatical...
Internal state of a directory builder.
uint32_t availability_certainty
On how many total queries is the given availability_rank based?
An opaque structure a pointer to which is returned to the caller to be used to control the scanner...
int is_active
Is the download currently active.
char * GNUNET_FS_uri_ksk_to_string_fancy(const struct GNUNET_FS_Uri *uri)
Convert keyword URI to a human readable format (i.e.
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 of a command line option.
Private ECC key encoded for transmission.
uint64_t offset
At what offset in the file is "data"?
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_PublishStatusEvent::@26::GNUNET_FS_PublishProgressDirectoryEvent progress_directory
int GNUNET_FS_uri_test_sks(const struct GNUNET_FS_Uri *uri)
Is this a namespace URI?
Notification that we suspended unindexing a file.
We have discovered a new namespace.
void GNUNET_FS_stop(struct GNUNET_FS_Handle *h)
Close our connection with the file-sharing service.
void GNUNET_FS_namespace_list_updateable(struct GNUNET_FS_Handle *h, const struct GNUNET_CRYPTO_EcdsaPrivateKey *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.
int GNUNET_FS_uri_sks_get_namespace(const struct GNUNET_FS_Uri *uri, struct GNUNET_CRYPTO_EcdsaPublicKey *pseudonym)
Get the public key of a namespace from the given namespace URI.
const char shortName
Short name of the option.
struct GNUNET_GETOPT_CommandLineOption GNUNET_FS_GETOPT_METADATA(char shortName, const char *name, const char *argumentHelp, const char *description, struct GNUNET_CONTAINER_MetaData **meta)
Allow user to specify metadata.
Handle for controlling an unindexing operation.
We've found all files (in the pre-pass).
struct GNUNET_FS_Uri * GNUNET_FS_uri_sks_create(const struct GNUNET_CRYPTO_EcdsaPublicKey *ns, const char *id)
Create an SKS URI from a namespace ID and an identifier.
struct GNUNET_FS_DownloadContext * GNUNET_FS_download_start(struct GNUNET_FS_Handle *h, const struct GNUNET_FS_Uri *uri, const struct GNUNET_CONTAINER_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.
const struct GNUNET_FS_FileInformation * fi
Information about the file that is being published.
struct GNUNET_FS_Uri * GNUNET_FS_uri_dup(const struct GNUNET_FS_Uri *uri)
Duplicate URI.
GNUNET_FS_PublishContinuation cont
Function to call once we're done.
static struct GNUNET_ARM_Handle * h
Connection with ARM.
static struct GNUNET_DNSSTUB_Context * ctx
Context for DNS resolution.
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.
int GNUNET_FS_uri_to_key(const struct GNUNET_FS_Uri *uri, struct GNUNET_HashCode *key)
Get a unique key from a URI.
Notification that we have stopped the process of uploading a file structure; no further events will b...
int GNUNET_FS_uri_test_loc(const struct GNUNET_FS_Uri *uri)
Is this a location URI?
char * GNUNET_FS_uri_to_string(const struct GNUNET_FS_Uri *uri)
Convert a URI to a UTF-8 String.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_SearchStatusEvent search
struct GNUNET_TIME_Relative current_probe_time
How long has the current probe been active?
uint32_t anonymity
What anonymity level is used for this upload?
struct GNUNET_FS_SearchContext * sc
Context for controlling the search, NULL for searches that were not explicitly triggered by the clien...
Do not append temporary data to the target file (for the IBlocks).
static struct GNUNET_FS_Uri * uri
Value of URI provided on command-line (when not publishing a file but just creating UBlocks to refer ...
uint32_t anonymity_level
At which anonymity level should the block be shared? (0: no anonymity, 1: normal GAP, >1: with cover traffic).
struct GNUNET_FS_PublishKskContext * GNUNET_FS_publish_ksk(struct GNUNET_FS_Handle *h, const struct GNUNET_FS_Uri *ksk_uri, const struct GNUNET_CONTAINER_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_set_filename(struct GNUNET_FS_FileInformation *s, const char *filename)
Set the filename in the file information structure.
const char * root
Root identifier for the namespace, can be NULL.
struct GNUNET_FS_ShareTreeItem * next
This is a doubly-linked list.
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.
Notification that we have started to publish a file structure.
Notification that this download completed.
void GNUNET_FS_directory_builder_add(struct GNUNET_FS_DirectoryBuilder *bld, const struct GNUNET_FS_Uri *uri, const struct GNUNET_CONTAINER_MetaData *md, const void *data)
Add an entry to a directory.
union GNUNET_FS_ProgressInfo::@25 value
Values that depend on the event type.
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.
char ** keywords
Keywords start with a '+' if they are mandatory (in which case the '+' is NOT part of the keyword) an...
static struct GNUNET_FS_Uri * topKeywords
Keywords provided via command-line option.
A node of a directory tree (produced by dirscanner)
void * GNUNET_FS_probe_stop(struct GNUNET_FS_SearchResult *sr)
Stop probe activity.
Notification that we are making progress sharing a directory.
static char * value
Value of the record to add/remove.
struct GNUNET_FS_ShareTreeItem * children_head
This is a doubly-linked tree NULL for files and empty directories.
uint64_t size
How large is the file overall? For directories, this is only the size of the directory itself...
struct GNUNET_FS_UnindexContext * GNUNET_FS_unindex_start(struct GNUNET_FS_Handle *h, const char *filename, void *cctx)
Unindex a file.
Information we store for each search result.
Should we automatically trigger probes for search results to determine availability? (will create GNUNET_FS_STATUS_SEARCH_UPDATE events).
Only download from the local host, do not access remote systems (no P2P)
void *(* GNUNET_FS_ProgressCallback)(void *cls, const struct GNUNET_FS_ProgressInfo *info)
Notification of FS to a client about the progress of an 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.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_PublishStatusEvent::@26::GNUNET_FS_PublishProgressEvent progress
char * nuid
ID for future updates, NULL if we have no namespace or no updates.
enum GNUNET_FS_Status status
Specific status code (determines the event type).
Internal option used to flag this download as a 'probe' for a search result.
void(* GNUNET_FS_IdentifierProcessor)(void *cls, const char *last_id, const struct GNUNET_FS_Uri *last_uri, const struct GNUNET_CONTAINER_MetaData *last_meta, const char *next_id)
Function called on updateable identifiers.
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.
void GNUNET_FS_publish_sks_cancel(struct GNUNET_FS_PublishSksContext *psc)
Abort the SKS publishing operation.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_UnindexEvent unindex
const struct GNUNET_FS_Uri * uri
URI used for this download.
static struct GNUNET_NAMESTORE_Handle * ns
Handle to the namestore.
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.
Last event when a search is being resumed; note that "GNUNET_FS_SEARCH_START" will not be generated i...
void GNUNET_FS_download_stop(struct GNUNET_FS_DownloadContext *dc, int do_delete)
Stop a download (aborts if download is incomplete).
static int disable_extractor
Disable extractor option to use for publishing.
static char * option
Name of the option.
No options (use defaults for everything).
char * client_name
Name of our client.
uint32_t applicability_rank
Applicability rank (the larger, the better the result fits the search criteria).
GNUNET_FS_PublishOptions
Options for publishing.
Context for the KSK publication.
GNUNET_FS_OPTIONS
Options specified in the VARARGs portion of GNUNET_FS_start.
void(* GNUNET_FS_DirectoryEntryProcessor)(void *cls, const char *filename, const struct GNUNET_FS_Uri *uri, const struct GNUNET_CONTAINER_MetaData *meta, size_t length, const void *data)
Function used to process entries in a directory.
void GNUNET_FS_directory_scan_abort(struct GNUNET_FS_DirScanner *ds)
Abort the scan.
void GNUNET_FS_uri_destroy(struct GNUNET_FS_Uri *uri)
Free URI.
There was an internal error.
Handle for controlling a publication process.
Signals that this search was continued (unpaused).
const char * GNUNET_FS_file_information_get_filename(struct GNUNET_FS_FileInformation *s)
Obtain the filename from the file information structure.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_PublishStatusEvent publish
int GNUNET_FS_uri_test_chk(const struct GNUNET_FS_Uri *uri)
Is this a file (or directory) URI?
GNUNET_FS_DirScannerProgressUpdateReason
Progress reasons of the directory scanner.
const void * data
Data block we just published.
uint64_t completed
How many bytes have we completed?
Notification that this download is no longer actively being pursued (back in the queue).
char * short_filename
Base name of the file/directory.
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.
Last event when a search is being suspended; note that "GNUNET_FS_SEARCH_STOPPED" will not be generat...
struct GNUNET_TESTBED_Peer * peer
The peer associated with this model.
struct GNUNET_HashCode key
The key used in the DHT.
Notification that the unindexing of this file was stopped (final event for this action).
Notification about progress with this download.
GNUNET_FS_DownloadOptions
Options for downloading.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_DownloadStatusEvent::@27::GNUNET_FS_DownloadStartEvent start
Select the desired amount of parallelism (this option should be followed by an "unsigned int" giving ...
Notification that this download is now actively being pursued (as opposed to waiting in the queue)...
Last call to the progress function: we have finished scanning the directory.
uint32_t respect_offered
How much respect did we offer for downloading this block? (estimate, because we might have the same r...
Settings for publishing a block (which may of course also apply to an entire directory or file)...
Notification that the unindexing of this file was completed.
Notification that we completed sharing a file structure.
union GNUNET_FS_ProgressInfo::@25::GNUNET_FS_PublishStatusEvent::@26 specifics
Additional values for specific events.
int is_directory
GNUNET_YES if this is a directory
char * filename
Name of the file/directory.
Maximum number of requests that should be pending at a given point in time (invidivual downloads may ...
Notification that this download is being resumed.
int GNUNET_FS_meta_data_test_for_directory(const struct GNUNET_CONTAINER_MetaData *md)
Does the meta-data claim that this is a directory? Checks if the mime-type is that of a GNUnet direct...
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.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_SearchStatusEvent::@28::GNUNET_FS_SearchSuspendResultEvent result_suspend
struct GNUNET_CONTAINER_MetaData * meta
Metadata for this file or directory.
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.
int GNUNET_FS_file_information_is_directory(const struct GNUNET_FS_FileInformation *ent)
Test if a given entry represents a directory.
struct GNUNET_FS_Handle * fsh
File-sharing handle that generated the event.
We've started processing a file or directory.
void * sctx
Client context pointer for the associated search operation (specifically, context pointer for the spe...
Notification that this download is no longer part of a recursive download or search but now a 'stand-...
uint32_t replication_level
How often should we try to migrate the block to other peers? Only used if "CONTENT_PUSHING" is set to...
Event generated for each search result when the respective search is resumed.
Notification that we have resumed sharing a file structure.
struct GNUNET_FS_Uri * GNUNET_FS_uri_ksk_create_from_meta_data(const struct GNUNET_CONTAINER_MetaData *md)
Construct a keyword-URI from meta-data (take all entries in the meta-data and construct one large key...
Private ECC key encoded for transmission.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_PublishStatusEvent::@26::GNUNET_FS_PublishResumeEvent resume
size_t(* GNUNET_FS_DataReader)(void *cls, uint64_t offset, size_t max, void *buf, char **emsg)
Function that provides data.
The identity of the host (wraps the signing key of the peer).
Event generated for each search result when the respective search is suspended.
Notification that an error was encountered sharing a file structure.
GNUNET_FS_ProgressCallback upcb
Function to call with updates on our progress.
Notification that we have suspended sharing a file structure.
static char * next_id
Command-line option for namespace publishing: identifier for updates to this publication.
Do a recursive download (that is, automatically trigger the download of files in directories).
const struct GNUNET_FS_Uri * query
What query is used for this search (list of keywords or SKS identifier).
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?
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.
void GNUNET_FS_share_tree_free(struct GNUNET_FS_ShareTreeItem *toplevel)
Release memory of a share item tree.
A Universal Resource Identifier (URI), opaque.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_SearchStatusEvent::@28::GNUNET_FS_SearchStoppedResultEvent result_stopped
Handle for controlling a search.
static struct GNUNET_CONTAINER_MetaData * meta
Meta-data provided via command-line option.
Public ECC key (always for Curve25519) encoded in a format suitable for network transmission and ECDS...
void * upcb_cls
Closure for upcb.
We've finished extracting meta data from a file.
void GNUNET_FS_file_information_destroy(struct GNUNET_FS_FileInformation *fi, GNUNET_FS_FileInformationProcessor cleaner, void *cleaner_cls)
Destroy publish-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...
struct GNUNET_FS_Uri * GNUNET_FS_uri_loc_get_uri(const struct GNUNET_FS_Uri *uri)
Obtain the URI of the content itself.
uint32_t content_priority
How important is it for us to store the block? If we run out of space, the highest-priority, non-expired blocks will be kept.
Only search the local host, do not search remote systems (no P2P)
unsigned int GNUNET_FS_uri_ksk_get_keyword_count(const struct GNUNET_FS_Uri *uri)
How many keywords are ANDed in this keyword URI?
Signals a problem with this search.
void * cont_cls
Closure for cont.
Context for GNUNET_FS_get_indexed_files().
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_CONTAINER_MetaData *meta, int do_index, const struct GNUNET_FS_BlockOptions *bo)
Create an entry for a file in a publish-structure.
void GNUNET_FS_download_suspend(struct GNUNET_FS_DownloadContext *dc)
Suspend a download.
GNUNET_FS_Status
Possible status codes used in the callback for the various file-sharing operations.
We have additional data about the quality or availability of a search result.
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.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_SearchStatusEvent::@28::GNUNET_FS_SearchUpdateEvent update
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.
void GNUNET_FS_search_pause(struct GNUNET_FS_SearchContext *sc)
Pause search.
Time for absolute times used by GNUnet, in microseconds.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_DownloadStatusEvent download
struct GNUNET_CRYPTO_EcdsaPublicKey pseudonym
Public key of the namespace.
static struct GNUNET_FS_DirScanner * ds
Handle to the directory scanner (for recursive insertions).
char * GNUNET_FS_uri_sks_get_content_id(const struct GNUNET_FS_Uri *uri)
Get the content identifier of an SKS URI.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_SearchStatusEvent::@28::GNUNET_GS_SearchResultNamespaceEvent ns
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.
const char * filename
Name of the file being published; can be NULL.
struct GNUNET_FS_PublishContext * pc
Context for controlling the upload.
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.
Notification that we resumed unindexing of a file.
void GNUNET_FS_download_resume(struct GNUNET_FS_DownloadContext *dc)
Resume a suspended download.
uint64_t data_len
Length of the data block.
No options (use defaults for everything).
Notification that this download was stopped (final event with respect to this action).
Signals that this search was paused.
struct GNUNET_FS_DirectoryBuilder * GNUNET_FS_directory_builder_create(const struct GNUNET_CONTAINER_MetaData *mdir)
Create a directory builder.
Notification that we encountered an error unindexing a file.
int is_paused
Is this search currently paused?
uint32_t num_transmissions
How often did we transmit the request? (estimate, because we might have the same request pending for ...
struct GNUNET_FS_Uri * ksk_uri
Keywords to use.
void GNUNET_FS_search_stop(struct GNUNET_FS_SearchContext *sc)
Stop search for content.
struct GNUNET_FS_ProgressInfo::@25::GNUNET_FS_SearchStatusEvent::@28::GNUNET_FS_SearchResumeResultEvent resume_result
Notification that this download encountered an error.
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.
static struct GNUNET_FS_BlockOptions bo
Options we set for published blocks.
static char * pseudonym
Command-line option identifying the pseudonym to use for the publication.
Argument given to the progress callback with information about what is going on.
Time for relative time used by GNUnet, in microseconds.
Is persistence of operations desired? (will create SUSPEND/RESUME events).
void * cctx
Client context pointer (set the last time by the client for this operation; initially NULL on START/R...
We're having trouble accessing a file (soft-error); it will be ignored.
const struct GNUNET_FS_Uri * chk_uri
URI of the file (if the download had been completed)
enum GNUNET_FS_Flags flags
General flags.
const struct GNUNET_FS_Uri * sks_uri
SKS URI of the file (if the download had been completed)
struct GNUNET_FS_DownloadContext * dc
Context for controlling the download.
void * cont_cls
Closure for cont.