X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fdatastore%2Fdatastore_api.c;h=916e6acaef930121af9a4bfa04f0be4c72437d35;hb=0945dcf2c250dea65d520ef26f9917e9be3ac4ac;hp=d75a58552810f7045caedf999e2c2d656c966863;hpb=7f937e3781f36538d9864fa841822eecdaf0bf27;p=oweals%2Fgnunet.git diff --git a/src/datastore/datastore_api.c b/src/datastore/datastore_api.c index d75a58552..916e6acae 100644 --- a/src/datastore/datastore_api.c +++ b/src/datastore/datastore_api.c @@ -443,7 +443,7 @@ GNUNET_DATASTORE_disconnect (struct GNUNET_DATASTORE_Handle *h, LOG (GNUNET_ERROR_TYPE_DEBUG, "Re-connecting to issue DROP!\n"); GNUNET_assert (NULL == h->mq); - h->mq = GNUNET_CLIENT_connecT (h->cfg, + h->mq = GNUNET_CLIENT_connect (h->cfg, "datastore", NULL, &disconnect_on_mq_error, @@ -498,8 +498,17 @@ make_queue_entry (struct GNUNET_DATASTORE_Handle *h, struct GNUNET_DATASTORE_QueueEntry *pos; unsigned int c; - c = 0; - pos = h->queue_head; + if ( (NULL != h->queue_tail) && + (h->queue_tail->priority >= queue_priority) ) + { + c = h->queue_size; + pos = NULL; + } + else + { + c = 0; + pos = h->queue_head; + } while ( (NULL != pos) && (c < max_queue_size) && (pos->priority >= queue_priority) ) @@ -868,7 +877,7 @@ try_reconnect (void *cls) h->retry_time = GNUNET_TIME_STD_BACKOFF (h->retry_time); h->reconnect_task = NULL; GNUNET_assert (NULL == h->mq); - h->mq = GNUNET_CLIENT_connecT (h->cfg, + h->mq = GNUNET_CLIENT_connect (h->cfg, "datastore", handlers, &mq_error_handler, @@ -1125,72 +1134,6 @@ GNUNET_DATASTORE_release_reserve (struct GNUNET_DATASTORE_Handle *h, } -/** - * 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; -} - - /** * Explicitly remove some content from the database. * The @a cont continuation will be called with `status`