diff options
author | Christian Grothoff <christian@grothoff.org> | 2014-12-24 01:10:47 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2014-12-24 01:10:47 +0000 |
commit | f1f603c7d0b3f03dca46a4f313472288eb080eb1 (patch) | |
tree | 3a29966b02dfb83e0a8a8d5c42b3116380209fb0 /src/core/test_core_quota_compliance.c | |
parent | 53cd5b8eda2fa8db86b0907a62a39598981d008a (diff) | |
download | gnunet-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/core/test_core_quota_compliance.c')
-rw-r--r-- | src/core/test_core_quota_compliance.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/core/test_core_quota_compliance.c b/src/core/test_core_quota_compliance.c index bf9197f0c..a20a6c7d0 100644 --- a/src/core/test_core_quota_compliance.c +++ b/src/core/test_core_quota_compliance.c | |||
@@ -62,11 +62,11 @@ static unsigned long long total_bytes_recv; | |||
62 | 62 | ||
63 | static struct GNUNET_TIME_Absolute start_time; | 63 | static struct GNUNET_TIME_Absolute start_time; |
64 | 64 | ||
65 | static GNUNET_SCHEDULER_TaskIdentifier err_task; | 65 | static struct GNUNET_SCHEDULER_Task * err_task; |
66 | 66 | ||
67 | static GNUNET_SCHEDULER_TaskIdentifier measure_task; | 67 | static struct GNUNET_SCHEDULER_Task * measure_task; |
68 | 68 | ||
69 | static GNUNET_SCHEDULER_TaskIdentifier connect_task; | 69 | static struct GNUNET_SCHEDULER_Task * connect_task; |
70 | 70 | ||
71 | 71 | ||
72 | struct PeerContext | 72 | struct PeerContext |
@@ -118,7 +118,7 @@ terminate_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
118 | { | 118 | { |
119 | struct GNUNET_CORE_Handle *ch; | 119 | struct GNUNET_CORE_Handle *ch; |
120 | 120 | ||
121 | err_task = GNUNET_SCHEDULER_NO_TASK; | 121 | err_task = NULL; |
122 | GNUNET_STATISTICS_destroy (p1.stats, GNUNET_NO); | 122 | GNUNET_STATISTICS_destroy (p1.stats, GNUNET_NO); |
123 | GNUNET_STATISTICS_destroy (p2.stats, GNUNET_NO); | 123 | GNUNET_STATISTICS_destroy (p2.stats, GNUNET_NO); |
124 | GNUNET_TRANSPORT_get_hello_cancel (p2.ghh); | 124 | GNUNET_TRANSPORT_get_hello_cancel (p2.ghh); |
@@ -128,10 +128,10 @@ terminate_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
128 | GNUNET_CORE_notify_transmit_ready_cancel (p1.nth); | 128 | GNUNET_CORE_notify_transmit_ready_cancel (p1.nth); |
129 | p1.nth = NULL; | 129 | p1.nth = NULL; |
130 | } | 130 | } |
131 | if (connect_task != GNUNET_SCHEDULER_NO_TASK) | 131 | if (connect_task != NULL) |
132 | { | 132 | { |
133 | GNUNET_SCHEDULER_cancel (connect_task); | 133 | GNUNET_SCHEDULER_cancel (connect_task); |
134 | connect_task = GNUNET_SCHEDULER_NO_TASK; | 134 | connect_task = NULL; |
135 | } | 135 | } |
136 | ch = p1.ch; | 136 | ch = p1.ch; |
137 | p1.ch = NULL; | 137 | p1.ch = NULL; |
@@ -151,7 +151,7 @@ terminate_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
151 | static void | 151 | static void |
152 | terminate_task_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | 152 | terminate_task_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) |
153 | { | 153 | { |
154 | err_task = GNUNET_SCHEDULER_NO_TASK; | 154 | err_task = NULL; |
155 | 155 | ||
156 | if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) | 156 | if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) |
157 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Testcase failed!\n"); | 157 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Testcase failed!\n"); |
@@ -161,12 +161,12 @@ terminate_task_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
161 | GNUNET_CORE_notify_transmit_ready_cancel (p1.nth); | 161 | GNUNET_CORE_notify_transmit_ready_cancel (p1.nth); |
162 | p1.nth = NULL; | 162 | p1.nth = NULL; |
163 | } | 163 | } |
164 | if (measure_task != GNUNET_SCHEDULER_NO_TASK) | 164 | if (measure_task != NULL) |
165 | GNUNET_SCHEDULER_cancel (measure_task); | 165 | GNUNET_SCHEDULER_cancel (measure_task); |
166 | if (connect_task != GNUNET_SCHEDULER_NO_TASK) | 166 | if (connect_task != NULL) |
167 | { | 167 | { |
168 | GNUNET_SCHEDULER_cancel (connect_task); | 168 | GNUNET_SCHEDULER_cancel (connect_task); |
169 | connect_task = GNUNET_SCHEDULER_NO_TASK; | 169 | connect_task = NULL; |
170 | } | 170 | } |
171 | 171 | ||
172 | GNUNET_TRANSPORT_get_hello_cancel (p1.ghh); | 172 | GNUNET_TRANSPORT_get_hello_cancel (p1.ghh); |
@@ -231,7 +231,7 @@ measurement_stop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
231 | unsigned long long quota_delta; | 231 | unsigned long long quota_delta; |
232 | enum GNUNET_ErrorType kind = GNUNET_ERROR_TYPE_DEBUG; | 232 | enum GNUNET_ErrorType kind = GNUNET_ERROR_TYPE_DEBUG; |
233 | 233 | ||
234 | measure_task = GNUNET_SCHEDULER_NO_TASK; | 234 | measure_task = NULL; |
235 | FPRINTF (stdout, "%s", "\n"); | 235 | FPRINTF (stdout, "%s", "\n"); |
236 | running = GNUNET_NO; | 236 | running = GNUNET_NO; |
237 | 237 | ||
@@ -381,7 +381,7 @@ connect_notify (void *cls, const struct GNUNET_PeerIdentity *peer) | |||
381 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 381 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
382 | "Asking core (1) for transmission to peer `%4s'\n", | 382 | "Asking core (1) for transmission to peer `%4s'\n", |
383 | GNUNET_i2s (&p2.id)); | 383 | GNUNET_i2s (&p2.id)); |
384 | if (err_task != GNUNET_SCHEDULER_NO_TASK) | 384 | if (err_task != NULL) |
385 | GNUNET_SCHEDULER_cancel (err_task); | 385 | GNUNET_SCHEDULER_cancel (err_task); |
386 | err_task = | 386 | err_task = |
387 | GNUNET_SCHEDULER_add_delayed (TIMEOUT, &terminate_task_error, NULL); | 387 | GNUNET_SCHEDULER_add_delayed (TIMEOUT, &terminate_task_error, NULL); |
@@ -410,12 +410,12 @@ disconnect_notify (void *cls, const struct GNUNET_PeerIdentity *peer) | |||
410 | if (0 == memcmp (&pc->id, peer, sizeof (struct GNUNET_PeerIdentity))) | 410 | if (0 == memcmp (&pc->id, peer, sizeof (struct GNUNET_PeerIdentity))) |
411 | return; /* loopback */ | 411 | return; /* loopback */ |
412 | pc->connect_status = 0; | 412 | pc->connect_status = 0; |
413 | if (GNUNET_SCHEDULER_NO_TASK != measure_task) | 413 | if (NULL != measure_task) |
414 | { | 414 | { |
415 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 415 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
416 | "Measurement aborted due to disconnect!\n"); | 416 | "Measurement aborted due to disconnect!\n"); |
417 | GNUNET_SCHEDULER_cancel (measure_task); | 417 | GNUNET_SCHEDULER_cancel (measure_task); |
418 | measure_task = GNUNET_SCHEDULER_NO_TASK; | 418 | measure_task = NULL; |
419 | } | 419 | } |
420 | if (pc->nth != NULL) | 420 | if (pc->nth != NULL) |
421 | { | 421 | { |