types
[oweals/gnunet.git] / src / fs / fs_unindex.c
index a6d414f094afce4519faa8d6fe17b3ead6aad1f5..977344b98d8ab5ceedda9f1053d77ee279b4f8f5 100644 (file)
@@ -78,6 +78,86 @@ unindex_reader (void *cls,
 }
 
 
+/**
+ * Fill in all of the generic fields for 
+ * an unindex event.
+ *
+ * @param pc structure to fill in
+ * @param sc overall unindex context
+ */
+static void
+make_unindex_status (struct GNUNET_FS_ProgressInfo *pi,
+                    struct GNUNET_FS_UnindexContext *uc,
+                    uint64_t offset)
+{
+  pi->value.unindex.uc = uc;
+  pi->value.unindex.cctx = uc->client_info;
+  pi->value.unindex.filename = uc->filename;
+  pi->value.unindex.size = uc->file_size;
+  pi->value.unindex.eta 
+    = GNUNET_TIME_calculate_eta (uc->start_time,
+                                offset,
+                                uc->file_size);
+  pi->value.publish.duration = GNUNET_TIME_absolute_get_duration (uc->start_time);
+  pi->value.publish.completed = offset;
+}
+
+
+/**
+ * Function called with information about our
+ * progress in computing the tree encoding.
+ *
+ * @param cls closure
+ * @param offset where are we in the file
+ * @param pt_block plaintext of the currently processed block
+ * @param pt_size size of pt_block
+ * @param depth depth of the block in the tree
+ */
+static void
+unindex_progress (void *cls,
+                 uint64_t offset,
+                 const void *pt_block,
+                 size_t pt_size,
+                 unsigned int depth)
+{
+  struct GNUNET_FS_UnindexContext *uc = cls;
+  struct GNUNET_FS_ProgressInfo pi;
+
+  pi.status = GNUNET_FS_STATUS_UNINDEX_PROGRESS;
+  make_unindex_status (&pi, uc, offset);
+  pi.value.unindex.specifics.progress.data = pt_block;
+  pi.value.unindex.specifics.progress.offset = offset;
+  pi.value.unindex.specifics.progress.data_len = pt_size;
+  pi.value.unindex.specifics.progress.depth = depth;
+  uc->client_info 
+    = uc->h->upcb (uc->h->upcb_cls,
+                  &pi);
+}
+                                              
+
+/**
+ * We've encountered an error during
+ * unindexing.  Signal the client.
+ *
+ * @param uc context for the failed unindexing operation
+ * @param emsg the error message
+ */
+static void
+signal_unindex_error (struct GNUNET_FS_UnindexContext *uc,
+                     const char *emsg)
+{
+  struct GNUNET_FS_ProgressInfo pi;
+  
+  pi.status = GNUNET_FS_STATUS_UNINDEX_ERROR;
+  make_unindex_status (&pi, uc, 0);
+  pi.value.unindex.eta = GNUNET_TIME_UNIT_FOREVER_REL;
+  pi.value.unindex.specifics.error.message = emsg;
+  uc->client_info
+    = uc->h->upcb (uc->h->upcb_cls,
+                  &pi);
+}
+
+
 /**
  * Continuation called to notify client about result of the
  * datastore removal operation.
@@ -92,8 +172,13 @@ process_cont (void *cls,
              const char *msg)
 {
   struct GNUNET_FS_UnindexContext *uc = cls;
-  // FIXME: may want to check for errors
-  // OTHER than content-not-present!
+  if (success == GNUNET_SYSERR)
+    {
+      signal_unindex_error (uc,
+                           msg);
+      return;
+    }
+  
   GNUNET_FS_tree_encoder_next (uc->tc);
 }
 
@@ -115,7 +200,7 @@ static void
 unindex_process (void *cls,
                 const GNUNET_HashCode *query,
                 uint64_t offset,
-                unsigned int type,
+                uint32_t type,
                 const void *block,
                 uint16_t block_size)
 {
@@ -138,83 +223,12 @@ unindex_process (void *cls,
     }
   GNUNET_DATASTORE_remove (uc->dsh,
                           query,
-                          block_size,
-                          block,
+                          size,
+                          data,
                           &process_cont,
                           uc,
                           GNUNET_CONSTANTS_SERVICE_TIMEOUT);
 }
-                                            
-
-/**
- * Function called with information about our
- * progress in computing the tree encoding.
- *
- * @param cls closure
- * @param offset where are we in the file
- * @param pt_block plaintext of the currently processed block
- * @param pt_size size of pt_block
- * @param depth depth of the block in the tree
- */
-static void
-unindex_progress (void *cls,
-                 uint64_t offset,
-                 const void *pt_block,
-                 size_t pt_size,
-                 unsigned int depth)
-{
-  struct GNUNET_FS_UnindexContext *uc = cls;
-  // FIXME: call callback!
-}
-                                              
-
-
-/**
- * Fill in all of the generic fields for 
- * an unindex event.
- *
- * @param pc structure to fill in
- * @param sc overall unindex context
- */
-static void
-make_unindex_status (struct GNUNET_FS_ProgressInfo *pi,
-                    struct GNUNET_FS_UnindexContext *uc,
-                    uint64_t offset)
-{
-  pi->value.unindex.uc = uc;
-  pi->value.unindex.cctx = uc->client_info;
-  pi->value.unindex.filename = uc->filename;
-  pi->value.unindex.size = uc->file_size;
-  pi->value.unindex.eta 
-    = GNUNET_TIME_calculate_eta (uc->start_time,
-                                offset,
-                                uc->file_size);
-  pi->value.publish.duration = GNUNET_TIME_absolute_get_duration (uc->start_time);
-  pi->value.publish.completed = offset;
-}
-
-
-/**
- * We've encountered an error during
- * unindexing.  Signal the client.
- *
- * @param uc context for the failed unindexing operation
- * @param emsg the error message
- */
-static void
-signal_unindex_error (struct GNUNET_FS_UnindexContext *uc,
-                     const char *emsg)
-{
-  struct GNUNET_FS_ProgressInfo pi;
-  
-  pi.status = GNUNET_FS_STATUS_UNINDEX_ERROR;
-  make_unindex_status (&pi, uc, 0);
-  pi.value.unindex.eta = GNUNET_TIME_UNIT_FOREVER_REL;
-  pi.value.unindex.specifics.error.message = emsg;
-  uc->client_info
-    = uc->h->upcb (uc->h->upcb_cls,
-                  &pi);
-}
 
 
 /**