- fixed string to address parsing
[oweals/gnunet.git] / src / include / gnunet_fs_service.h
index f8a20c75b01d85f5f3e6af0f954351c4247bb28e..1f1e60f0f713c605aebd2fe49a8d7a5bc05100ce 100644 (file)
@@ -55,7 +55,7 @@ extern "C"
  * 9.0.0: CPS-style integrated API
  * 9.1.1: asynchronous directory scanning
  */
-#define GNUNET_FS_VERSION 0x00090101
+#define GNUNET_FS_VERSION 0x00090102
 
 
 /* ******************** URI API *********************** */
@@ -72,8 +72,6 @@ extern "C"
  */
 struct GNUNET_FS_Uri;
 
-struct GNUNET_FS_DirScanner;
-
 /**
  * Iterator over keywords
  *
@@ -1695,21 +1693,6 @@ void
 GNUNET_FS_stop (struct GNUNET_FS_Handle *h);
 
 
-/**
- * Extract meta-data from a file.
- *
- * @param md metadata to set
- * @param filename name of file to inspect
- * @param extractors plugins to use
- * @return GNUNET_SYSERR on error, otherwise the number
- *   of meta-data items obtained
- */
-int
-GNUNET_FS_meta_data_extract_from_file (struct GNUNET_CONTAINER_MetaData *md,
-                                       const char *filename,
-                                       struct EXTRACTOR_PluginList *extractors);
-
-
 /**
  * Function called on entries in a GNUNET_FS_FileInformation publish-structure.
  *
@@ -1837,7 +1820,11 @@ GNUNET_FS_file_information_create_from_data (struct GNUNET_FS_Handle *h,
  * @param cls closure
  * @param offset offset to read from; it is possible
  *            that the caller might need to go backwards
- *            a bit at times
+ *            a bit at times; set to UINT64_MAX to tell
+ *            the reader that we won't be reading for a while
+ *            (used to close the file descriptor but NOT fully
+ *             clean up the reader's state); in this case,
+ *            a value of '0' for max should be ignored
  * @param max maximum number of bytes that should be
  *            copied to buf; readers are not allowed
  *            to provide less data unless there is an error;
@@ -2037,6 +2024,12 @@ typedef void (*GNUNET_FS_PublishContinuation) (void *cls,
                                                const char *emsg);
 
 
+/**
+ * Handle to cancel publish KSK operation.
+ */
+struct GNUNET_FS_PublishKskContext;
+
+
 /**
  * Publish a KBlock on GNUnet.
  *
@@ -2048,8 +2041,9 @@ typedef void (*GNUNET_FS_PublishContinuation) (void *cls,
  * @param options publication options
  * @param cont continuation
  * @param cont_cls closure for cont
+ * @return NULL on error ('cont' will still be called)
  */
-void
+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,
@@ -2059,6 +2053,21 @@ GNUNET_FS_publish_ksk (struct GNUNET_FS_Handle *h,
                        GNUNET_FS_PublishContinuation cont, void *cont_cls);
 
 
+/**
+ * Abort the KSK publishing operation.
+ *
+ * @param pkc context of the operation to abort.
+ */
+void
+GNUNET_FS_publish_ksk_cancel (struct GNUNET_FS_PublishKskContext *pkc);
+
+
+/**
+ * Handle to cancel publish SKS operation.
+ */
+struct GNUNET_FS_PublishSksContext;
+
+
 /**
  * Publish an SBlock on GNUnet.
  *
@@ -2072,8 +2081,9 @@ GNUNET_FS_publish_ksk (struct GNUNET_FS_Handle *h,
  * @param options publication options
  * @param cont continuation
  * @param cont_cls closure for cont
+ * @return NULL on error ('cont' will still be called)
  */
-void
+struct GNUNET_FS_PublishSksContext *
 GNUNET_FS_publish_sks (struct GNUNET_FS_Handle *h,
                        struct GNUNET_FS_Namespace *namespace,
                        const char *identifier, const char *update,
@@ -2084,11 +2094,20 @@ GNUNET_FS_publish_sks (struct GNUNET_FS_Handle *h,
                        GNUNET_FS_PublishContinuation cont, void *cont_cls);
 
 
+/**
+ * Abort the SKS publishing operation.
+ *
+ * @param psc context of the operation to abort.
+ */
+void
+GNUNET_FS_publish_sks_cancel (struct GNUNET_FS_PublishSksContext *psc);
+
+
 /**
  * Type of a function called by "GNUNET_FS_get_indexed_files".
  *
  * @param cls closure
- * @param filename the name of the file
+ * @param filename the name of the file, NULL for end of list
  * @param file_id hash of the contents of the indexed file
  * @return GNUNET_OK to continue iteration, GNUNET_SYSERR to abort
  */
@@ -2096,22 +2115,33 @@ typedef int (*GNUNET_FS_IndexedFileProcessor) (void *cls, const char *filename,
                                                const GNUNET_HashCode * file_id);
 
 
+/**
+ * Handle to cancel 'GNUNET_FS_get_indexed_files'.
+ */
+struct GNUNET_FS_GetIndexedContext;
+
+
 /**
  * Iterate over all indexed files.
  *
  * @param h handle to the file sharing subsystem
  * @param iterator function to call on each indexed file
  * @param iterator_cls closure for iterator
- * @param cont continuation to call when done;
- *             reason should be "TIMEOUT" (on
- *             error) or  "PREREQ_DONE" (on success)
- * @param cont_cls closure for cont
+ * @return NULL on error ('iter' is not called)
  */
-void
+struct GNUNET_FS_GetIndexedContext *
 GNUNET_FS_get_indexed_files (struct GNUNET_FS_Handle *h,
                              GNUNET_FS_IndexedFileProcessor iterator,
-                             void *iterator_cls, GNUNET_SCHEDULER_Task cont,
-                             void *cont_cls);
+                             void *iterator_cls);
+
+
+/**
+ * Cancel iteration over all indexed files.
+ *
+ * @param gic operation to cancel
+ */
+void
+GNUNET_FS_get_indexed_files_cancel (struct GNUNET_FS_GetIndexedContext *gic);
 
 
 /**
@@ -2136,6 +2166,12 @@ void
 GNUNET_FS_unindex_stop (struct GNUNET_FS_UnindexContext *uc);
 
 
+/**
+ * Context for advertising a namespace.
+ */
+struct GNUNET_FS_AdvertisementContext;
+
+
 /**
  * Publish an advertismement for a namespace.
  *
@@ -2147,8 +2183,9 @@ GNUNET_FS_unindex_stop (struct GNUNET_FS_UnindexContext *uc);
  * @param rootEntry name of the root of the namespace
  * @param cont continuation
  * @param cont_cls closure for cont
+ * @return NULL on error ('cont' will still be called)
  */
-void
+struct GNUNET_FS_AdvertisementContext *
 GNUNET_FS_namespace_advertise (struct GNUNET_FS_Handle *h,
                                struct GNUNET_FS_Uri *ksk_uri,
                                struct GNUNET_FS_Namespace *namespace,
@@ -2159,6 +2196,15 @@ GNUNET_FS_namespace_advertise (struct GNUNET_FS_Handle *h,
                                void *cont_cls);
 
 
+/**
+ * Abort the namespace advertisement operation.
+ *
+ * @param ac context of the operation to abort.
+ */
+void
+GNUNET_FS_namespace_advertise_cancel (struct GNUNET_FS_AdvertisementContext *ac);
+
+
 /**
  * Create a namespace with the given name; if one already
  * exists, return a handle to the existing namespace.
@@ -2171,6 +2217,16 @@ struct GNUNET_FS_Namespace *
 GNUNET_FS_namespace_create (struct GNUNET_FS_Handle *h, const char *name);
 
 
+/**
+ * Duplicate a namespace handle.
+ *
+ * @param ns namespace handle
+ * @return duplicated handle to the namespace
+ */
+struct GNUNET_FS_Namespace *
+GNUNET_FS_namespace_dup (struct GNUNET_FS_Namespace *ns);
+
+
 /**
  * Delete a namespace handle.  Can be used for a clean shutdown (free
  * memory) or also to freeze the namespace to prevent further
@@ -2608,9 +2664,10 @@ enum GNUNET_FS_DirScannerProgressUpdateReason
   GNUNET_FS_DIRSCANNER_FILE_START = 0,
 
   /**
-   * We've finished processing a subtree in the pre-pass.
+   * We're having trouble accessing a file (soft-error); it will
+   * be ignored.
    */
-  GNUNET_FS_DIRSCANNER_SUBTREE_COUNTED,
+  GNUNET_FS_DIRSCANNER_FILE_IGNORED,
 
   /**
    * We've found all files (in the pre-pass).
@@ -2628,12 +2685,6 @@ enum GNUNET_FS_DirScannerProgressUpdateReason
    */
   GNUNET_FS_DIRSCANNER_FINISHED,
 
-  /**
-   * We're having trouble accessing a file (soft-error); it will
-   * be ignored.
-   */
-  GNUNET_FS_DIRSCANNER_DOES_NOT_EXIST,
-
   /**
    * There was an internal error.  Application should abort the scan.
    */
@@ -2647,7 +2698,6 @@ enum GNUNET_FS_DirScannerProgressUpdateReason
  * progress on the job at hand.
  *
  * @param cls closure
- * @param ds handle to the directory scanner (NEEDED!?)
  * @param filename which file we are making progress on
  * @param is_directory GNUNET_YES if this is a directory,
  *                     GNUNET_NO if this is a file
@@ -2655,7 +2705,6 @@ enum GNUNET_FS_DirScannerProgressUpdateReason
  * @param reason kind of progress we are making
  */
 typedef void (*GNUNET_FS_DirScannerProgressCallback) (void *cls, 
-                                                     struct GNUNET_FS_DirScanner *ds, 
                                                      const char *filename,
                                                      int is_directory, 
                                                      enum GNUNET_FS_DirScannerProgressUpdateReason reason);
@@ -2710,15 +2759,10 @@ struct GNUNET_FS_ShareTreeItem
   char *filename;
 
   /**
-   * Base name of the file/directory
+   * Base name of the file/directory.
    */
   char *short_filename;
 
-  /**
-   * Size of the file (if it is a file), in bytes
-   */
-  uint64_t file_size;
-
   /**
    * GNUNET_YES if this is a directory
    */
@@ -2737,7 +2781,7 @@ struct GNUNET_FS_DirScanner;
  * Start a directory scanner.
  *
  * @param filename name of the directory to scan
- * @param GNUNET_YES to not to run libextractor on files (only build a tree)
+ * @param disable_extractor GNUNET_YES to not to run libextractor on files (only build a tree)
  * @param ex if not NULL, must be a list of extra plugins for extractor
  * @param cb the callback to call when there are scanning progress messages
  * @param cb_cls closure for 'cb'
@@ -2752,7 +2796,8 @@ GNUNET_FS_directory_scan_start (const char *filename,
 
 
 /**
- * Abort the scan.
+ * Abort the scan.    Must not be called from within the progress_callback
+ * function.
  *
  * @param ds directory scanner structure
  */