aboutsummaryrefslogtreecommitdiff
path: root/src/fs/gnunet-service-fs_put.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fs/gnunet-service-fs_put.c')
-rw-r--r--src/fs/gnunet-service-fs_put.c149
1 files changed, 70 insertions, 79 deletions
diff --git a/src/fs/gnunet-service-fs_put.c b/src/fs/gnunet-service-fs_put.c
index b15207ce86..e67bf0c04b 100644
--- a/src/fs/gnunet-service-fs_put.c
+++ b/src/fs/gnunet-service-fs_put.c
@@ -54,7 +54,7 @@ struct PutOperator
* ID of task that collects blocks for DHT PUTs.
*/
GNUNET_SCHEDULER_TaskIdentifier dht_task;
-
+
/**
* How many entires with zero anonymity of our type do we currently
* estimate to have in the database?
@@ -72,13 +72,12 @@ struct PutOperator
* ANY-terminated list of our operators (one per type
* of block that we're putting into the DHT).
*/
-static struct PutOperator operators[] =
- {
- { NULL, GNUNET_BLOCK_TYPE_FS_KBLOCK, 0, 0, 0 },
- { NULL, GNUNET_BLOCK_TYPE_FS_SBLOCK, 0, 0, 0 },
- { NULL, GNUNET_BLOCK_TYPE_FS_NBLOCK, 0, 0, 0 },
- { NULL, GNUNET_BLOCK_TYPE_ANY, 0, 0, 0 }
- };
+static struct PutOperator operators[] = {
+ {NULL, GNUNET_BLOCK_TYPE_FS_KBLOCK, 0, 0, 0},
+ {NULL, GNUNET_BLOCK_TYPE_FS_SBLOCK, 0, 0, 0},
+ {NULL, GNUNET_BLOCK_TYPE_FS_NBLOCK, 0, 0, 0},
+ {NULL, GNUNET_BLOCK_TYPE_ANY, 0, 0, 0}
+};
/**
@@ -89,7 +88,7 @@ static struct PutOperator operators[] =
*/
static void
gather_dht_put_blocks (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc);
+ const struct GNUNET_SCHEDULER_TaskContext *tc);
/**
@@ -99,8 +98,7 @@ gather_dht_put_blocks (void *cls,
* @param tc scheduler context (unused)
*/
static void
-delay_dht_put_blocks (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc)
+delay_dht_put_blocks (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct PutOperator *po = cls;
struct GNUNET_TIME_Relative delay;
@@ -109,21 +107,19 @@ delay_dht_put_blocks (void *cls,
if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
return;
if (po->zero_anonymity_count_estimate > 0)
- {
- delay = GNUNET_TIME_relative_divide (GNUNET_DHT_DEFAULT_REPUBLISH_FREQUENCY,
- po->zero_anonymity_count_estimate);
- delay = GNUNET_TIME_relative_min (delay,
- MAX_DHT_PUT_FREQ);
- }
+ {
+ delay = GNUNET_TIME_relative_divide (GNUNET_DHT_DEFAULT_REPUBLISH_FREQUENCY,
+ po->zero_anonymity_count_estimate);
+ delay = GNUNET_TIME_relative_min (delay, MAX_DHT_PUT_FREQ);
+ }
else
- {
- /* if we have NO zero-anonymity content yet, wait 5 minutes for some to
- (hopefully) appear */
- delay = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5);
- }
+ {
+ /* if we have NO zero-anonymity content yet, wait 5 minutes for some to
+ * (hopefully) appear */
+ delay = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5);
+ }
po->dht_task = GNUNET_SCHEDULER_add_delayed (delay,
- &gather_dht_put_blocks,
- po);
+ &gather_dht_put_blocks, po);
}
@@ -143,45 +139,40 @@ delay_dht_put_blocks (void *cls,
*/
static void
process_dht_put_content (void *cls,
- const GNUNET_HashCode * key,
- size_t size,
- const void *data,
- enum GNUNET_BLOCK_Type type,
- uint32_t priority,
- uint32_t anonymity,
- struct GNUNET_TIME_Absolute
- expiration, uint64_t uid)
-{
+ const GNUNET_HashCode * key,
+ size_t size,
+ const void *data,
+ enum GNUNET_BLOCK_Type type,
+ uint32_t priority,
+ uint32_t anonymity,
+ struct GNUNET_TIME_Absolute expiration, uint64_t uid)
+{
struct PutOperator *po = cls;
po->dht_qe = NULL;
if (key == NULL)
- {
- po->zero_anonymity_count_estimate = po->current_offset - 1;
- po->current_offset = 0;
- po->dht_task = GNUNET_SCHEDULER_add_now (&delay_dht_put_blocks,
- po);
- return;
- }
+ {
+ po->zero_anonymity_count_estimate = po->current_offset - 1;
+ po->current_offset = 0;
+ po->dht_task = GNUNET_SCHEDULER_add_now (&delay_dht_put_blocks, po);
+ return;
+ }
po->zero_anonymity_count_estimate = GNUNET_MAX (po->current_offset,
- po->zero_anonymity_count_estimate);
+ po->zero_anonymity_count_estimate);
#if DEBUG_FS
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Retrieved block `%s' of type %u for DHT PUT\n",
- GNUNET_h2s (key),
- type);
+ "Retrieved block `%s' of type %u for DHT PUT\n",
+ GNUNET_h2s (key), type);
#endif
GNUNET_DHT_put (GSF_dht,
- key,
- DEFAULT_PUT_REPLICATION,
- GNUNET_DHT_RO_NONE,
- type,
- size,
- data,
- expiration,
- GNUNET_TIME_UNIT_FOREVER_REL,
- &delay_dht_put_blocks,
- po);
+ key,
+ DEFAULT_PUT_REPLICATION,
+ GNUNET_DHT_RO_NONE,
+ type,
+ size,
+ data,
+ expiration,
+ GNUNET_TIME_UNIT_FOREVER_REL, &delay_dht_put_blocks, po);
}
@@ -192,23 +183,22 @@ process_dht_put_content (void *cls,
* @param tc scheduler context (unused)
*/
static void
-gather_dht_put_blocks (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc)
+gather_dht_put_blocks (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct PutOperator *po = cls;
po->dht_task = GNUNET_SCHEDULER_NO_TASK;
if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
return;
- po->dht_qe = GNUNET_DATASTORE_get_zero_anonymity (GSF_dsh,
- po->current_offset++,
- 0, UINT_MAX,
- GNUNET_TIME_UNIT_FOREVER_REL,
- po->dht_put_type,
- &process_dht_put_content, po);
+ po->dht_qe = GNUNET_DATASTORE_get_zero_anonymity (GSF_dsh,
+ po->current_offset++,
+ 0, UINT_MAX,
+ GNUNET_TIME_UNIT_FOREVER_REL,
+ po->dht_put_type,
+ &process_dht_put_content,
+ po);
if (NULL == po->dht_qe)
- po->dht_task = GNUNET_SCHEDULER_add_now (&delay_dht_put_blocks,
- po);
+ po->dht_task = GNUNET_SCHEDULER_add_now (&delay_dht_put_blocks, po);
}
@@ -222,10 +212,11 @@ GSF_put_init_ ()
i = 0;
while (operators[i].dht_put_type != GNUNET_BLOCK_TYPE_ANY)
- {
- operators[i].dht_task = GNUNET_SCHEDULER_add_now (&gather_dht_put_blocks, &operators[i]);
- i++;
- }
+ {
+ operators[i].dht_task =
+ GNUNET_SCHEDULER_add_now (&gather_dht_put_blocks, &operators[i]);
+ i++;
+ }
}
@@ -240,19 +231,19 @@ GSF_put_done_ ()
i = 0;
while ((po = &operators[i])->dht_put_type != GNUNET_BLOCK_TYPE_ANY)
+ {
+ if (GNUNET_SCHEDULER_NO_TASK != po->dht_task)
+ {
+ GNUNET_SCHEDULER_cancel (po->dht_task);
+ po->dht_task = GNUNET_SCHEDULER_NO_TASK;
+ }
+ if (NULL != po->dht_qe)
{
- if (GNUNET_SCHEDULER_NO_TASK != po->dht_task)
- {
- GNUNET_SCHEDULER_cancel (po->dht_task);
- po->dht_task = GNUNET_SCHEDULER_NO_TASK;
- }
- if (NULL != po->dht_qe)
- {
- GNUNET_DATASTORE_cancel (po->dht_qe);
- po->dht_qe = NULL;
- }
- i++;
+ GNUNET_DATASTORE_cancel (po->dht_qe);
+ po->dht_qe = NULL;
}
+ i++;
+ }
}
/* end of gnunet-service-fs_put.c */