fixing 1584
[oweals/gnunet.git] / src / fs / fs.h
index 32b4181dd30ab57439875e8106942818fbc15b04..41831e8a82e576f4ba22a86ed592629cfa659984 100644 (file)
@@ -5,7 +5,7 @@
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 2, or (at your
+     by the Free Software Foundation; either version 3, or (at your
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
 /**
  * Bandwidth value of an (effectively) 0-priority query.
  */
-#define QUERY_BANDWIDTH_VALUE 0.001
+#define QUERY_BANDWIDTH_VALUE 1
 
 /**
  * Bandwidth value of a 0-priority content (must be
  * since it can take many queries to get one piece of
  * content).
  */
-#define CONTENT_BANDWIDTH_VALUE 0.8
+#define CONTENT_BANDWIDTH_VALUE 800
 
 /**
  * By which amount do we decrement the TTL for simple forwarding /
@@ -1301,17 +1301,38 @@ struct GNUNET_FS_PublishContext
    */
   struct GNUNET_FS_FileInformation *fi_pos;
 
+  /**
+   * Non-null if we are currently hashing a file.
+   */
+  struct GNUNET_CRYPTO_FileHashContext *fhc;
+
   /**
    * Connection to the datastore service.
    */
   struct GNUNET_DATASTORE_Handle *dsh;
 
+  /**
+   * Queue entry for reservation/unreservation.
+   */
+  struct GNUNET_DATASTORE_QueueEntry *qre;
+
   /**
    * ID of the task performing the upload. NO_TASK if the upload has
    * completed.
    */
   GNUNET_SCHEDULER_TaskIdentifier upload_task;
 
+  /**
+   * Storage space to reserve for the operation.
+   */
+  uint64_t reserve_space;
+
+  /**
+   * Overall number of entries to reserve for the
+   * publish operation.
+   */
+  uint32_t reserve_entries;
+
   /**
    * Typically GNUNET_NO.  Set to GNUNET_YES if "upload_task" is
    * GNUNET_SCHEDULER_NO_TASK and we're waiting for a response from
@@ -1352,16 +1373,16 @@ enum UnindexState
     UNINDEX_STATE_HASHING = 0,
 
     /**
-     * We're notifying the FS service about
-     * the unindexing.
+     * We're telling the datastore to delete
+     * the respective entries.
      */
-    UNINDEX_STATE_FS_NOTIFY = 1,
+    UNINDEX_STATE_DS_REMOVE = 1,
 
     /**
-     * We're telling the datastore to delete
-     * the respective entries.
+     * We're notifying the FS service about
+     * the unindexing.
      */
-    UNINDEX_STATE_DS_REMOVE = 2,
+    UNINDEX_STATE_FS_NOTIFY = 2,
 
     /**
      * We're done.
@@ -1811,6 +1832,11 @@ struct GNUNET_FS_DownloadContext
    */
   int has_finished;
 
+  /**
+   * Have we tried (and failed) to find matching full
+   * data from the meta data yet?
+   */
+  int tried_full_data;
 };
 
 struct GNUNET_FS_Namespace
@@ -1859,6 +1885,11 @@ struct IndexStartMessage
    */
   struct GNUNET_MessageHeader header;
 
+  /**
+   * For alignment.
+   */
+  uint32_t reserved GNUNET_PACKED;
+
   /**
    * ID of device containing the file, as seen by the client.  This
    * device ID is obtained using a call like "statvfs" (and converting
@@ -1866,7 +1897,7 @@ struct IndexStartMessage
    * OS does not support this, in which case the service must do a
    * full hash recomputation.
    */
-  uint32_t device GNUNET_PACKED;
+  uint64_t device GNUNET_PACKED;
   
   /**
    * Inode of the file on the given device, as seen by the client