- gettext_noop ("# RELEASE RESERVE requests executed"),
- 1,
- GNUNET_NO);
- rrm = (struct ReleaseReserveMessage*) &qe[1];
- rrm->header.type = htons(GNUNET_MESSAGE_TYPE_DATASTORE_RELEASE_RESERVE);
- rrm->header.size = htons(sizeof (struct ReleaseReserveMessage));
- rrm->rid = htonl(rid);
- process_queue (h);
- return qe;
-}
-
-
-/**
- * Update a value in the datastore.
- *
- * @param h handle to the datastore
- * @param uid identifier for the value
- * @param priority how much to increase the priority of the value
- * @param expiration new expiration value should be MAX of existing and this argument
- * @param queue_priority ranking of this request in the priority queue
- * @param max_queue_size at what queue size should this request be dropped
- * (if other requests of higher priority are in the queue)
- * @param timeout how long to wait at most for a response
- * @param cont continuation to call when done
- * @param cont_cls closure for cont
- * @return NULL if the entry was not queued, otherwise a handle that can be used to
- * cancel; note that even if NULL is returned, the callback will be invoked
- * (or rather, will already have been invoked)
- */
-struct GNUNET_DATASTORE_QueueEntry *
-GNUNET_DATASTORE_update (struct GNUNET_DATASTORE_Handle *h,
- uint64_t uid,
- uint32_t priority,
- struct GNUNET_TIME_Absolute expiration,
- unsigned int queue_priority,
- unsigned int max_queue_size,
- struct GNUNET_TIME_Relative timeout,
- GNUNET_DATASTORE_ContinuationWithStatus cont,
- void *cont_cls)
-{
- struct GNUNET_DATASTORE_QueueEntry *qe;
- struct UpdateMessage *um;
- union QueueContext qc;
-
- if (cont == NULL)
- cont = &drop_status_cont;
-#if DEBUG_DATASTORE
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Asked to update entry %llu raising priority by %u and expiration to %llu\n",
- uid,
- (unsigned int) priority,
- (unsigned long long) expiration.abs_value);
-#endif
- qc.sc.cont = cont;
- qc.sc.cont_cls = cont_cls;
- qe = make_queue_entry (h, sizeof(struct UpdateMessage),
- queue_priority, max_queue_size, timeout,
- &process_status_message, &qc);
- if (qe == NULL)
- {
-#if DEBUG_DATASTORE
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Could not create queue entry for UPDATE\n");
-#endif
- return NULL;
- }
- GNUNET_STATISTICS_update (h->stats,
- gettext_noop ("# UPDATE requests executed"),
- 1,
- GNUNET_NO);
- um = (struct UpdateMessage*) &qe[1];
- um->header.type = htons(GNUNET_MESSAGE_TYPE_DATASTORE_UPDATE);
- um->header.size = htons(sizeof (struct UpdateMessage));
- um->priority = htonl(priority);
- um->expiration = GNUNET_TIME_absolute_hton(expiration);
- um->uid = GNUNET_htonll(uid);