-/**
- * 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 cont continuation to call when done
- * @param cont_cls closure for @a 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,
- GNUNET_DATASTORE_ContinuationWithStatus cont,
- void *cont_cls)
-{
- struct GNUNET_DATASTORE_QueueEntry *qe;
- struct GNUNET_MQ_Envelope *env;
- struct UpdateMessage *um;
- union QueueContext qc;
-
- if (NULL == cont)
- cont = &drop_status_cont;
- LOG (GNUNET_ERROR_TYPE_DEBUG,
- "Asked to update entry %llu raising priority by %u and expiration to %s\n",
- uid,
- (unsigned int) priority,
- GNUNET_STRINGS_absolute_time_to_string (expiration));
- env = GNUNET_MQ_msg (um,
- GNUNET_MESSAGE_TYPE_DATASTORE_UPDATE);
- um->priority = htonl (priority);
- um->expiration = GNUNET_TIME_absolute_hton (expiration);
- um->uid = GNUNET_htonll (uid);
-
- qc.sc.cont = cont;
- qc.sc.cont_cls = cont_cls;
- qe = make_queue_entry (h,
- env,
- queue_priority,
- max_queue_size,
- GNUNET_MESSAGE_TYPE_DATASTORE_STATUS,
- &qc);
- if (NULL == qe)
- {
- LOG (GNUNET_ERROR_TYPE_DEBUG,
- "Could not create queue entry for UPDATE\n");
- return NULL;
- }
- GNUNET_STATISTICS_update (h->stats,
- gettext_noop ("# UPDATE requests executed"), 1,
- GNUNET_NO);
- process_queue (h);
- return qe;
-}
-
-