-use ms for timeout, not us
[oweals/gnunet.git] / src / fs / fs_api.h
index 924911b636ae51d9252fea2f091ce36dcf2701f1..83e8c3801f347316283be694481ee7a779ef3954 100644 (file)
@@ -125,7 +125,7 @@ struct Location
   /**
    * Identity of the peer sharing the file.
    */
-  struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded peer;
+  struct GNUNET_CRYPTO_EccPublicKey peer;
 
   /**
    * Time when this location URI expires.
@@ -136,36 +136,37 @@ struct Location
    * RSA signature over the GNUNET_EC_FileIdentifier,
    * GNUNET_hash of the peer and expiration time.
    */
-  struct GNUNET_CRYPTO_RsaSignature contentSignature;
+  struct GNUNET_CRYPTO_EccSignature contentSignature;
 
 };
 
 /**
  * Types of URIs.
  */
-enum uri_types
+enum GNUNET_FS_UriType
 {
     /**
      * Content-hash-key (simple file).
      */
-  chk,
+  GNUNET_FS_URI_CHK,
 
     /**
      * Signed key space (file in namespace).
      */
-  sks,
+  GNUNET_FS_URI_SKS,
 
     /**
      * Keyword search key (query with keywords).
      */
-  ksk,
+  GNUNET_FS_URI_KSK,
 
     /**
      * Location (chk with identity of hosting peer).
      */
-  loc
+  GNUNET_FS_URI_LOC
 };
 
+
 /**
  * A Universal Resource Identifier (URI), opaque.
  */
@@ -174,23 +175,20 @@ struct GNUNET_FS_Uri
   /**
    * Type of the URI.
    */
-  enum uri_types type;
+  enum GNUNET_FS_UriType type;
 
   union
   {
     struct
     {
       /**
-       * Keywords start with a '+' if they are
-       * mandatory (in which case the '+' is NOT
-       * part of the keyword) and with a
-       * simple space if they are optional
-       * (in which case the space is ALSO not
-       * part of the actual keyword).
+       * Keywords start with a '+' if they are mandatory (in which
+       * case the '+' is NOT part of the keyword) and with a simple
+       * space if they are optional (in which case the space is ALSO
+       * not part of the actual keyword).
        *
-       * Double-quotes to protect spaces and
-       * %-encoding are NOT used internally
-       * (only in URI-strings).
+       * Double-quotes to protect spaces and %-encoding are NOT used
+       * internally (only in URI-strings).
        */
       char **keywords;
 
@@ -203,9 +201,9 @@ struct GNUNET_FS_Uri
     struct
     {
       /**
-       * Hash of the public key for the namespace.
+       * Identifier of the namespace.
        */
-      GNUNET_HashCode namespace;
+      struct GNUNET_CRYPTO_EccPublicKey ns;
 
       /**
        * Human-readable identifier chosen for this
@@ -333,7 +331,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).
@@ -509,8 +507,6 @@ struct GNUNET_FS_QueueEntry
 };
 
 
-
-
 /**
  * Information we store for each search result.
  */
@@ -518,7 +514,13 @@ struct GNUNET_FS_SearchResult
 {
 
   /**
-   * Search context this result belongs to.
+   * File-sharing context this result belongs to.
+   */
+  struct GNUNET_FS_Handle *h;
+
+  /**
+   * Search context this result belongs to; can be NULL
+   * for probes that come from a directory result.
    */
   struct GNUNET_FS_SearchContext *sc;
 
@@ -568,7 +570,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
@@ -577,6 +579,12 @@ struct GNUNET_FS_SearchResult
    */
   GNUNET_SCHEDULER_TaskIdentifier probe_cancel_task;
 
+  /**
+   * Task we use to report periodically to the application that the
+   * probe is still running.
+   */
+  GNUNET_SCHEDULER_TaskIdentifier probe_ping_task;
+
   /**
    * When did the current probe become active?
    */
@@ -587,6 +595,11 @@ struct GNUNET_FS_SearchResult
    */
   struct GNUNET_TIME_Relative remaining_probe_time;
 
+  /**
+   * Anonymity level to use for probes using this search result.
+   */
+  uint32_t anonymity;
+
   /**
    * Number of mandatory keywords for which we have NOT yet found the
    * search result; when this value hits zero, the search result is
@@ -633,10 +646,11 @@ GNUNET_FS_queue_ (struct GNUNET_FS_Handle *h, GNUNET_FS_QueueStart start,
 
 /**
  * Dequeue a job from the queue.
- * @param qh handle for the job
+ *
+ * @param qe handle for the job
  */
 void
-GNUNET_FS_dequeue_ (struct GNUNET_FS_QueueEntry *qh);
+GNUNET_FS_dequeue_ (struct GNUNET_FS_QueueEntry *qe);
 
 
 /**
@@ -730,7 +744,7 @@ 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);
 
 
 /**
@@ -811,11 +825,13 @@ GNUNET_FS_unindex_make_status_ (struct GNUNET_FS_ProgressInfo *pi,
  * call the callback.
  *
  * @param pi structure to fill in
+ * @param h file-sharing handle
  * @param sc overall search context
  * @return value returned by the callback
  */
 void *
 GNUNET_FS_search_make_status_ (struct GNUNET_FS_ProgressInfo *pi,
+                              struct GNUNET_FS_Handle *h,
                                struct GNUNET_FS_SearchContext *sc);
 
 
@@ -1159,7 +1175,7 @@ struct GNUNET_FS_PublishContext
   /**
    * Namespace that we are publishing in, NULL if we have no namespace.
    */
-  struct GNUNET_FS_Namespace *namespace;
+  struct GNUNET_CRYPTO_EccPrivateKey *ns;
 
   /**
    * ID of the content in the namespace, NULL if we have no namespace.
@@ -1382,9 +1398,14 @@ struct GNUNET_FS_UnindexContext
   struct GNUNET_DATASTORE_QueueEntry *dqe;
 
   /**
-   * Current query key of 'get_key' operation.
+   * Current key for decrypting UBLocks from 'get_key' operation.
    */
-  GNUNET_HashCode key;
+  struct GNUNET_HashCode ukey;
+
+  /**
+   * Current query of 'get_key' operation.
+   */
+  struct GNUNET_HashCode uquery;
 
   /**
    * First content UID, 0 for none.
@@ -1419,7 +1440,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.
@@ -1435,16 +1456,22 @@ struct GNUNET_FS_UnindexContext
  */
 struct SearchRequestEntry
 {
+
   /**
-   * Hash of the original keyword, also known as the
-   * key (for decrypting the KBlock).
+   * Hash of the public key, also known as the query.
    */
-  GNUNET_HashCode key;
+  struct GNUNET_HashCode uquery;
 
   /**
-   * Hash of the public key, also known as the query.
+   * Derived public key, hashes to 'uquery'.
+   */ 
+  struct GNUNET_CRYPTO_EccPublicKey dpub;
+
+  /**
+   * The original keyword, used to derive the
+   * key (for decrypting the UBlock).
    */
-  GNUNET_HashCode query;
+  char *keyword;
 
   /**
    * Map that contains a "struct GNUNET_FS_SearchResult" for each result that
@@ -1530,6 +1557,11 @@ struct GNUNET_FS_SearchContext
    */
   struct GNUNET_TIME_Absolute start_time;
 
+  /**
+   * How long to wait before we try to reconnect to FS service?
+   */
+  struct GNUNET_TIME_Relative reconnect_backoff;
+
   /**
    * ID of a task that is using this struct and that must be cancelled
    * when the search is being stopped (if not
@@ -1894,6 +1926,11 @@ struct GNUNET_FS_DownloadContext
    */
   struct GNUNET_TIME_Absolute start_time;
 
+  /**
+   * How long to wait before we try to reconnect to FS service?
+   */
+  struct GNUNET_TIME_Relative reconnect_backoff;
+
   /**
    * Desired level of anonymity.
    */
@@ -1929,96 +1966,6 @@ struct GNUNET_FS_DownloadContext
 };
 
 
-/**
- * Information about an (updateable) node in the
- * namespace.
- */
-struct NamespaceUpdateNode
-{
-  /**
-   * Identifier for this node.
-   */
-  char *id;
-
-  /**
-   * Identifier of children of this node.
-   */
-  char *update;
-
-  /**
-   * Metadata for this entry.
-   */
-  struct GNUNET_CONTAINER_MetaData *md;
-
-  /**
-   * URI of this entry in the namespace.
-   */
-  struct GNUNET_FS_Uri *uri;
-
-  /**
-   * Namespace update generation ID.  Used to ensure
-   * freshness of the tree_id.
-   */
-  unsigned int nug;
-
-  /**
-   * TREE this entry belongs to (if nug is current).
-   */
-  unsigned int tree_id;
-
-};
-
-
-struct GNUNET_FS_Namespace
-{
-
-  /**
-   * Handle to the FS service context.
-   */
-  struct GNUNET_FS_Handle *h;
-
-  /**
-   * Array with information about nodes in the namespace.
-   */
-  struct NamespaceUpdateNode **update_nodes;
-
-  /**
-   * Private key for the namespace.
-   */
-  struct GNUNET_CRYPTO_RsaPrivateKey *key;
-
-  /**
-   * Hash map mapping identifiers of update nodes
-   * to the update nodes (initialized on-demand).
-   */
-  struct GNUNET_CONTAINER_MultiHashMap *update_map;
-
-  /**
-   * Name of the file with the private key.
-   */
-  char *filename;
-
-  /**
-   * Name of the namespace.
-   */
-  char *name;
-
-  /**
-   * Size of the update nodes array.
-   */
-  unsigned int update_node_count;
-
-  /**
-   * Reference counter.
-   */
-  unsigned int rc;
-
-  /**
-   * Generator for unique nug numbers.
-   */
-  unsigned int nug_gen;
-};
-
 #endif
 
 /* end of fs_api.h */