aboutsummaryrefslogtreecommitdiff
path: root/src/dv
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2014-12-24 01:10:47 +0000
committerChristian Grothoff <christian@grothoff.org>2014-12-24 01:10:47 +0000
commitf1f603c7d0b3f03dca46a4f313472288eb080eb1 (patch)
tree3a29966b02dfb83e0a8a8d5c42b3116380209fb0 /src/dv
parent53cd5b8eda2fa8db86b0907a62a39598981d008a (diff)
downloadgnunet-f1f603c7d0b3f03dca46a4f313472288eb080eb1.tar.gz
gnunet-f1f603c7d0b3f03dca46a4f313472288eb080eb1.zip
making GNUNET_SCHEDULER_cancel() perform in O(1) instead of O(n) to help or even fully address #3247
Diffstat (limited to 'src/dv')
-rw-r--r--src/dv/gnunet-service-dv.c18
-rw-r--r--src/dv/test_transport_dv.c4
2 files changed, 11 insertions, 11 deletions
diff --git a/src/dv/gnunet-service-dv.c b/src/dv/gnunet-service-dv.c
index e0bb89ccf..d134d88f4 100644
--- a/src/dv/gnunet-service-dv.c
+++ b/src/dv/gnunet-service-dv.c
@@ -230,7 +230,7 @@ struct DirectNeighbor
230 * ID of the task we use to (periodically) update our consensus 230 * ID of the task we use to (periodically) update our consensus
231 * with this peer. Used if we are the initiating peer. 231 * with this peer. Used if we are the initiating peer.
232 */ 232 */
233 GNUNET_SCHEDULER_TaskIdentifier initiate_task; 233 struct GNUNET_SCHEDULER_Task * initiate_task;
234 234
235 /** 235 /**
236 * At what offset are we, with respect to inserting our own routes 236 * At what offset are we, with respect to inserting our own routes
@@ -386,7 +386,7 @@ static struct GNUNET_ATS_PerformanceHandle *ats;
386/** 386/**
387 * Task scheduled to refresh routes based on direct neighbours. 387 * Task scheduled to refresh routes based on direct neighbours.
388 */ 388 */
389static GNUNET_SCHEDULER_TaskIdentifier rr_task; 389static struct GNUNET_SCHEDULER_Task * rr_task;
390 390
391/** 391/**
392 * #GNUNET_YES if we are shutting down. 392 * #GNUNET_YES if we are shutting down.
@@ -1138,7 +1138,7 @@ static void
1138refresh_routes_task (void *cls, 1138refresh_routes_task (void *cls,
1139 const struct GNUNET_SCHEDULER_TaskContext *tc) 1139 const struct GNUNET_SCHEDULER_TaskContext *tc)
1140{ 1140{
1141 rr_task = GNUNET_SCHEDULER_NO_TASK; 1141 rr_task = NULL;
1142 GNUNET_CONTAINER_multipeermap_iterate (direct_neighbors, 1142 GNUNET_CONTAINER_multipeermap_iterate (direct_neighbors,
1143 &refresh_routes, 1143 &refresh_routes,
1144 NULL); 1144 NULL);
@@ -1152,7 +1152,7 @@ refresh_routes_task (void *cls,
1152static void 1152static void
1153schedule_refresh_routes () 1153schedule_refresh_routes ()
1154{ 1154{
1155 if (GNUNET_SCHEDULER_NO_TASK == rr_task) 1155 if (NULL == rr_task)
1156 rr_task = GNUNET_SCHEDULER_add_now (&refresh_routes_task, 1156 rr_task = GNUNET_SCHEDULER_add_now (&refresh_routes_task,
1157 NULL); 1157 NULL);
1158} 1158}
@@ -1288,10 +1288,10 @@ handle_direct_disconnect (struct DirectNeighbor *neighbor)
1288 GNUNET_SET_listen_cancel (neighbor->listen_handle); 1288 GNUNET_SET_listen_cancel (neighbor->listen_handle);
1289 neighbor->listen_handle = NULL; 1289 neighbor->listen_handle = NULL;
1290 } 1290 }
1291 if (GNUNET_SCHEDULER_NO_TASK != neighbor->initiate_task) 1291 if (NULL != neighbor->initiate_task)
1292 { 1292 {
1293 GNUNET_SCHEDULER_cancel (neighbor->initiate_task); 1293 GNUNET_SCHEDULER_cancel (neighbor->initiate_task);
1294 neighbor->initiate_task = GNUNET_SCHEDULER_NO_TASK; 1294 neighbor->initiate_task = NULL;
1295 } 1295 }
1296} 1296}
1297 1297
@@ -1745,7 +1745,7 @@ initiate_set_union (void *cls,
1745 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1745 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1746 "Initiating SET union with peer `%s'\n", 1746 "Initiating SET union with peer `%s'\n",
1747 GNUNET_i2s (&neighbor->peer)); 1747 GNUNET_i2s (&neighbor->peer));
1748 neighbor->initiate_task = GNUNET_SCHEDULER_NO_TASK; 1748 neighbor->initiate_task = NULL;
1749 neighbor->my_set = GNUNET_SET_create (cfg, 1749 neighbor->my_set = GNUNET_SET_create (cfg,
1750 GNUNET_SET_OPERATION_UNION); 1750 GNUNET_SET_OPERATION_UNION);
1751 neighbor->set_op = GNUNET_SET_prepare (&neighbor->peer, 1751 neighbor->set_op = GNUNET_SET_prepare (&neighbor->peer,
@@ -2154,10 +2154,10 @@ shutdown_task (void *cls,
2154 consensi[i].array_length, 2154 consensi[i].array_length,
2155 0); 2155 0);
2156 } 2156 }
2157 if (GNUNET_SCHEDULER_NO_TASK != rr_task) 2157 if (NULL != rr_task)
2158 { 2158 {
2159 GNUNET_SCHEDULER_cancel (rr_task); 2159 GNUNET_SCHEDULER_cancel (rr_task);
2160 rr_task = GNUNET_SCHEDULER_NO_TASK; 2160 rr_task = NULL;
2161 } 2161 }
2162} 2162}
2163 2163
diff --git a/src/dv/test_transport_dv.c b/src/dv/test_transport_dv.c
index 6a2cbde94..eec7d3171 100644
--- a/src/dv/test_transport_dv.c
+++ b/src/dv/test_transport_dv.c
@@ -32,14 +32,14 @@ static int ok;
32 32
33struct GNUNET_TESTBED_Operation *topology_op; 33struct GNUNET_TESTBED_Operation *topology_op;
34 34
35static GNUNET_SCHEDULER_TaskIdentifier shutdown_task; 35static struct GNUNET_SCHEDULER_Task * shutdown_task;
36 36
37 37
38static void 38static void
39do_shutdown (void *cls, 39do_shutdown (void *cls,
40 const struct GNUNET_SCHEDULER_TaskContext *tc) 40 const struct GNUNET_SCHEDULER_TaskContext *tc)
41{ 41{
42 shutdown_task = GNUNET_SCHEDULER_NO_TASK; 42 shutdown_task = NULL;
43 if (NULL != topology_op) 43 if (NULL != topology_op)
44 { 44 {
45 GNUNET_TESTBED_operation_done (topology_op); 45 GNUNET_TESTBED_operation_done (topology_op);