gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r8931 - in gnunet/src: fs include


From: gnunet
Subject: [GNUnet-SVN] r8931 - in gnunet/src: fs include
Date: Wed, 2 Sep 2009 13:49:23 -0600

Author: grothoff
Date: 2009-09-02 13:49:23 -0600 (Wed, 02 Sep 2009)
New Revision: 8931

Modified:
   gnunet/src/fs/fs_unindex.c
   gnunet/src/include/gnunet_fs_service.h
Log:
more

Modified: gnunet/src/fs/fs_unindex.c
===================================================================
--- gnunet/src/fs/fs_unindex.c  2009-09-02 19:20:51 UTC (rev 8930)
+++ gnunet/src/fs/fs_unindex.c  2009-09-02 19:49:23 UTC (rev 8931)
@@ -79,6 +79,26 @@
 
 
 /**
+ * Continuation called to notify client about result of the
+ * datastore removal operation.
+ *
+ * @param cls closure
+ * @param success GNUNET_SYSERR on failure
+ * @param msg NULL on success, otherwise an error message
+ */
+static void
+process_cont (void *cls,
+             int success,
+             const char *msg)
+{
+  struct GNUNET_FS_UnindexContext *uc = cls;
+  // FIXME: may want to check for errors
+  // OTHER than content-not-present!
+  GNUNET_FS_tree_encoder_next (uc->tc);
+}
+
+
+/**
  * Function called asking for the current (encoded)
  * block to be processed.  After processing the
  * client should either call "GNUNET_FS_tree_encode_next"
@@ -99,6 +119,30 @@
                 const void *block,
                 uint16_t block_size)
 {
+  struct GNUNET_FS_UnindexContext *uc = cls;
+  uint32_t size;
+  const void *data;
+  struct OnDemandBlock odb;
+
+  if (type != GNUNET_DATASTORE_BLOCKTYPE_DBLOCK)
+    {
+      size = block_size;
+      data = block;
+    }
+  else /* on-demand encoded DBLOCK */
+    {
+      size = sizeof(struct OnDemandBlock);
+      odb.offset = offset;
+      odb.file_id = uc->file_id;
+      data = &odb;
+    }
+  GNUNET_DATASTORE_remove (uc->dsh,
+                          query,
+                          block_size,
+                          block,
+                          &process_cont,
+                          uc,
+                          GNUNET_CONSTANTS_SERVICE_TIMEOUT);
 }
                                             
 
@@ -119,7 +163,8 @@
                  size_t pt_size,
                  unsigned int depth)
 {
-  // FIXME
+  struct GNUNET_FS_UnindexContext *uc = cls;
+  // FIXME: call callback!
 }
                                               
 
@@ -172,10 +217,45 @@
 }
 
 
+/**
+ * Function called when the tree encoder has
+ * processed all blocks.  Clean up.
+ *
+ * @param cls our unindexing context
+ * @param tc not used
+ */
 static void
 unindex_finish (void *cls,
                const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
+  struct GNUNET_FS_UnindexContext *uc = cls;
+  char *emsg;
+  struct GNUNET_FS_Uri *uri;
+  struct GNUNET_FS_ProgressInfo pi;
+
+  GNUNET_FS_tree_encoder_finish (uc->tc,
+                                &uri,
+                                &emsg);
+  if (uri != NULL)
+    GNUNET_FS_uri_destroy (uri);
+  GNUNET_DISK_file_close (uc->fh);
+  uc->fh = NULL;
+  GNUNET_DATASTORE_disconnect (uc->dsh, GNUNET_NO);
+  uc->dsh = NULL;
+  if (emsg != NULL)
+    {
+      signal_unindex_error (uc, emsg);
+      GNUNET_free (emsg);
+    }
+  else
+    {   
+      pi.status = GNUNET_FS_STATUS_UNINDEX_COMPLETED;
+      make_unindex_status (&pi, uc, uc->file_size);
+      pi.value.unindex.eta = GNUNET_TIME_UNIT_ZERO;
+      uc->client_info
+       = uc->h->upcb (uc->h->upcb_cls,
+                      &pi);
+    }
 }
 
 

Modified: gnunet/src/include/gnunet_fs_service.h
===================================================================
--- gnunet/src/include/gnunet_fs_service.h      2009-09-02 19:20:51 UTC (rev 
8930)
+++ gnunet/src/include/gnunet_fs_service.h      2009-09-02 19:49:23 UTC (rev 
8931)
@@ -628,6 +628,12 @@
 
   /**
    * Notification that the unindexing of this file
+   * was completed.
+   */
+  GNUNET_FS_STATUS_UNINDEX_COMPLETED,
+
+  /**
+   * Notification that the unindexing of this file
    * was stopped (final event for this action).
    */
   GNUNET_FS_STATUS_UNINDEX_STOPPED
@@ -770,6 +776,14 @@
           */
          uint64_t data_len;
 
+         /**
+          * Depth of the given block in the tree; 
+          * 0 would be the highest level (the first
+          * call is guaranteed to be for the lowest
+          * level).
+          */
+         unsigned int depth;
+
        } progress;
 
        /**





reply via email to

[Prev in Thread] Current Thread [Next in Thread]