[Top][All Lists]
[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;
/**
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r8931 - in gnunet/src: fs include,
gnunet <=