From: Christian Grothoff Date: Sun, 27 May 2012 21:10:58 +0000 (+0000) Subject: adding GNUNET_SCHEDULER_add_read_net_with_priority X-Git-Tag: initial-import-from-subversion-38251~13384 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=0e95912060c3c460353fc63c0bcec84f699c5bd8;p=oweals%2Fgnunet.git adding GNUNET_SCHEDULER_add_read_net_with_priority --- diff --git a/src/gns/gnunet-service-gns.c b/src/gns/gnunet-service-gns.c index 26a496d4a..bf77cfa6c 100644 --- a/src/gns/gnunet-service-gns.c +++ b/src/gns/gnunet-service-gns.c @@ -926,7 +926,7 @@ run (void *cls, struct GNUNET_SERVER_Handle *server, { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No private key for root zone specified!\n"); - GNUNET_SCHEDULER_shutdown(0); + GNUNET_SCHEDULER_shutdown (); return; } @@ -951,7 +951,7 @@ run (void *cls, struct GNUNET_SERVER_Handle *server, //FIXME do error handling; GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Failed to connect to the namestore!\n"); - GNUNET_SCHEDULER_shutdown(0); + GNUNET_SCHEDULER_shutdown (); return; } diff --git a/src/include/gnunet_scheduler_lib.h b/src/include/gnunet_scheduler_lib.h index c0b33a400..864d2606a 100644 --- a/src/include/gnunet_scheduler_lib.h +++ b/src/include/gnunet_scheduler_lib.h @@ -238,7 +238,7 @@ GNUNET_SCHEDULER_run (GNUNET_SCHEDULER_Task task, void *task_cls); * scheduled AFTER this call may still be delayed arbitrarily. */ void -GNUNET_SCHEDULER_shutdown (); +GNUNET_SCHEDULER_shutdown (void); /** @@ -411,6 +411,29 @@ GNUNET_SCHEDULER_add_read_net (struct GNUNET_TIME_Relative delay, GNUNET_SCHEDULER_Task task, void *task_cls); +/** + * Schedule a new task to be run with a specified priority and to be + * run after the specified delay or when the specified file descriptor + * is ready for reading. The delay can be used as a timeout on the + * socket being ready. The task will be scheduled for execution once + * either the delay has expired or the socket operation is ready. It + * will be run with the DEFAULT priority. + * + * * @param delay when should this operation time out? Use + * GNUNET_TIME_UNIT_FOREVER_REL for "on shutdown" + * @param rfd read file-descriptor + * @param task main function of the task + * @param task_cls closure of task + * @return unique task identifier for the job + * only valid until "task" is started! + */ +GNUNET_SCHEDULER_TaskIdentifier +GNUNET_SCHEDULER_add_read_net_with_priority (struct GNUNET_TIME_Relative delay, + enum GNUNET_SCHEDULER_Priority priority, + struct GNUNET_NETWORK_Handle *rfd, + GNUNET_SCHEDULER_Task task, void *task_cls); + + /** * Schedule a new task to be run with a specified delay or when the * specified file descriptor is ready for writing. The delay can be diff --git a/src/util/scheduler.c b/src/util/scheduler.c index 6b8d21443..140692362 100644 --- a/src/util/scheduler.c +++ b/src/util/scheduler.c @@ -1333,6 +1333,34 @@ GNUNET_SCHEDULER_TaskIdentifier GNUNET_SCHEDULER_add_read_net (struct GNUNET_TIME_Relative delay, struct GNUNET_NETWORK_Handle *rfd, GNUNET_SCHEDULER_Task task, void *task_cls) +{ + return GNUNET_SCHEDULER_add_read_net_with_priority (delay, + GNUNET_SCHEDULER_PRIORITY_DEFAULT, + rfd, task, task_cls); +} + + +/** + * Schedule a new task to be run with a specified priority and to be + * run after the specified delay or when the specified file descriptor + * is ready for reading. The delay can be used as a timeout on the + * socket being ready. The task will be scheduled for execution once + * either the delay has expired or the socket operation is ready. It + * will be run with the DEFAULT priority. + * + * * @param delay when should this operation time out? Use + * GNUNET_TIME_UNIT_FOREVER_REL for "on shutdown" + * @param rfd read file-descriptor + * @param task main function of the task + * @param task_cls closure of task + * @return unique task identifier for the job + * only valid until "task" is started! + */ +GNUNET_SCHEDULER_TaskIdentifier +GNUNET_SCHEDULER_add_read_net_with_priority (struct GNUNET_TIME_Relative delay, + enum GNUNET_SCHEDULER_Priority priority, + struct GNUNET_NETWORK_Handle *rfd, + GNUNET_SCHEDULER_Task task, void *task_cls) { #if MINGW struct GNUNET_NETWORK_FDSet *rs; @@ -1342,20 +1370,21 @@ GNUNET_SCHEDULER_add_read_net (struct GNUNET_TIME_Relative delay, rs = GNUNET_NETWORK_fdset_create (); GNUNET_NETWORK_fdset_set (rs, rfd); ret = - GNUNET_SCHEDULER_add_select (GNUNET_SCHEDULER_PRIORITY_DEFAULT, + GNUNET_SCHEDULER_add_select (priority, delay, rs, NULL, task, task_cls); GNUNET_NETWORK_fdset_destroy (rs); return ret; #else return add_without_sets (delay, - GNUNET_SCHEDULER_PRIORITY_DEFAULT, + priority, GNUNET_NETWORK_get_fd (rfd), -1, task, task_cls); #endif } + /** * Schedule a new task to be run with a specified delay or when the * specified file descriptor is ready for writing. The delay can be