X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Ffs%2Ffs_api.h;h=7c91b5d23984d8d0029bf490fd0c80a1dc67ddcb;hb=5f48d602887285cff6c14358a1d1c6f004a68510;hp=7b44adef8dbc267f0edc05162f21a1b3b2c63cc0;hpb=0e5925b81384b8a8b12d950f23ff878d280a46a5;p=oweals%2Fgnunet.git diff --git a/src/fs/fs_api.h b/src/fs/fs_api.h index 7b44adef8..7c91b5d23 100644 --- a/src/fs/fs_api.h +++ b/src/fs/fs_api.h @@ -205,7 +205,7 @@ struct GNUNET_FS_Uri /** * Hash of the public key for the namespace. */ - GNUNET_HashCode namespace; + struct GNUNET_HashCode namespace; /** * Human-readable identifier chosen for this @@ -333,7 +333,7 @@ struct GNUNET_FS_FileInformation * over the entire file (when the indexing process is started). * Otherwise this field is not used. */ - GNUNET_HashCode file_id; + struct GNUNET_HashCode file_id; /** * Size of the file (in bytes). @@ -568,7 +568,7 @@ struct GNUNET_FS_SearchResult /** * Key for the search result */ - GNUNET_HashCode key; + struct GNUNET_HashCode key; /** * ID of the task that will clean up the probe_ctx should it not @@ -730,7 +730,25 @@ GNUNET_FS_publish_main_ (void *cls, * @param file_id computed hash, NULL on error */ void -GNUNET_FS_unindex_process_hash_ (void *cls, const GNUNET_HashCode * file_id); +GNUNET_FS_unindex_process_hash_ (void *cls, const struct GNUNET_HashCode * file_id); + + +/** + * Extract the keywords for KBlock removal + * + * @param uc context for the unindex operation. + */ +void +GNUNET_FS_unindex_do_extract_keywords_ (struct GNUNET_FS_UnindexContext *uc); + + +/** + * If necessary, connect to the datastore and remove the KBlocks. + * + * @param uc context for the unindex operation. + */ +void +GNUNET_FS_unindex_do_remove_kblocks_ (struct GNUNET_FS_UnindexContext *uc); /** @@ -1244,32 +1262,42 @@ struct GNUNET_FS_PublishContext */ enum UnindexState { - /** - * We're currently hashing the file. - */ + /** + * We're currently hashing the file. + */ UNINDEX_STATE_HASHING = 0, - /** - * We're telling the datastore to delete - * the respective entries. - */ + /** + * We're telling the datastore to delete + * the respective DBlocks and IBlocks. + */ UNINDEX_STATE_DS_REMOVE = 1, + + /** + * Find out which keywords apply. + */ + UNINDEX_STATE_EXTRACT_KEYWORDS = 2, - /** - * We're notifying the FS service about - * the unindexing. - */ - UNINDEX_STATE_FS_NOTIFY = 2, - - /** - * We're done. - */ - UNINDEX_STATE_COMPLETE = 3, + /** + * We're telling the datastore to remove KBlocks. + */ + UNINDEX_STATE_DS_REMOVE_KBLOCKS = 3, - /** - * We've encountered a fatal error. - */ - UNINDEX_STATE_ERROR = 4 + /** + * We're notifying the FS service about + * the unindexing. + */ + UNINDEX_STATE_FS_NOTIFY = 4, + + /** + * We're done. + */ + UNINDEX_STATE_COMPLETE = 5, + + /** + * We've encountered a fatal error. + */ + UNINDEX_STATE_ERROR = 6 }; @@ -1279,6 +1307,12 @@ enum UnindexState struct GNUNET_FS_UnindexContext { + /** + * The content hash key of the last block we processed, will in the + * end be set to the CHK from the URI. Used to remove the KBlocks. + */ + struct ContentHashKey chk; + /** * Global FS context. */ @@ -1289,6 +1323,21 @@ struct GNUNET_FS_UnindexContext */ struct TopLevelActivity *top; + /** + * Directory scanner to find keywords (KBlock removal). + */ + struct GNUNET_FS_DirScanner *dscan; + + /** + * Keywords found (telling us which KBlocks to remove). + */ + struct GNUNET_FS_Uri *ksk_uri; + + /** + * Current offset in KSK removal. + */ + uint32_t ksk_offset; + /** * Name of the file that we are unindexing. */ @@ -1326,6 +1375,27 @@ struct GNUNET_FS_UnindexContext */ struct GNUNET_DISK_FileHandle *fh; + /** + * Handle to datastore 'get_key' operation issued for + * obtaining KBlocks. + */ + struct GNUNET_DATASTORE_QueueEntry *dqe; + + /** + * Current key for decrypting KBLocks from 'get_key' operation. + */ + struct GNUNET_HashCode key; + + /** + * Current query of 'get_key' operation. + */ + struct GNUNET_HashCode query; + + /** + * First content UID, 0 for none. + */ + uint64_t first_uid; + /** * Error message, NULL on success. */ @@ -1341,6 +1411,11 @@ struct GNUNET_FS_UnindexContext */ uint64_t file_size; + /** + * Random offset given to 'GNUNET_DATASTORE_get_key'. + */ + uint64_t roff; + /** * When did we start? */ @@ -1349,7 +1424,7 @@ struct GNUNET_FS_UnindexContext /** * Hash of the file's contents (once computed). */ - GNUNET_HashCode file_id; + struct GNUNET_HashCode file_id; /** * Current operatinonal phase. @@ -1369,12 +1444,12 @@ struct SearchRequestEntry * Hash of the original keyword, also known as the * key (for decrypting the KBlock). */ - GNUNET_HashCode key; + struct GNUNET_HashCode key; /** * Hash of the public key, also known as the query. */ - GNUNET_HashCode query; + struct GNUNET_HashCode query; /** * Map that contains a "struct GNUNET_FS_SearchResult" for each result that @@ -1616,7 +1691,7 @@ struct DownloadRequest unsigned int depth; /** - * Offset of the CHK for this block in the parent block. + * Offset of the CHK for this block in the parent block */ unsigned int chk_idx; @@ -1851,6 +1926,11 @@ struct GNUNET_FS_DownloadContext */ int in_receive; + /** + * Are we ready to issue requests (reconstructions are finished)? + */ + int issue_requests; + };