aboutsummaryrefslogtreecommitdiff
path: root/src/transport/test_transport_address_switch.c
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/transport/test_transport_address_switch.c
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/transport/test_transport_address_switch.c')
-rw-r--r--src/transport/test_transport_address_switch.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/src/transport/test_transport_address_switch.c b/src/transport/test_transport_address_switch.c
index fcbd798d0..10815c7ab 100644
--- a/src/transport/test_transport_address_switch.c
+++ b/src/transport/test_transport_address_switch.c
@@ -67,11 +67,11 @@ GNUNET_NETWORK_STRUCT_END
67#define DURATION GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30) 67#define DURATION GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
68#define DELAY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5) 68#define DELAY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5)
69 69
70static GNUNET_SCHEDULER_TaskIdentifier die_task; 70static struct GNUNET_SCHEDULER_Task * die_task;
71 71
72static GNUNET_SCHEDULER_TaskIdentifier delayed_end_task; 72static struct GNUNET_SCHEDULER_Task * delayed_end_task;
73 73
74static GNUNET_SCHEDULER_TaskIdentifier measure_task; 74static struct GNUNET_SCHEDULER_Task * measure_task;
75 75
76struct PeerContext *p1; 76struct PeerContext *p1;
77char *cfg_file_p1; 77char *cfg_file_p1;
@@ -142,7 +142,7 @@ stat_start_attempt_cb (void *cls, const char *subsystem, const char *name,
142 else 142 else
143 return GNUNET_OK; 143 return GNUNET_OK;
144 144
145 if (GNUNET_SCHEDULER_NO_TASK == delayed_end_task) 145 if (NULL == delayed_end_task)
146 delayed_end_task = GNUNET_SCHEDULER_add_delayed (DELAY, &end, NULL ); 146 delayed_end_task = GNUNET_SCHEDULER_add_delayed (DELAY, &end, NULL );
147 return GNUNET_OK; 147 return GNUNET_OK;
148} 148}
@@ -207,22 +207,22 @@ stat_addresses_available (void *cls, const char *subsystem, const char *name,
207static void 207static void
208clean_up () 208clean_up ()
209{ 209{
210 if (measure_task != GNUNET_SCHEDULER_NO_TASK ) 210 if (measure_task != NULL )
211 { 211 {
212 GNUNET_SCHEDULER_cancel (measure_task); 212 GNUNET_SCHEDULER_cancel (measure_task);
213 measure_task = GNUNET_SCHEDULER_NO_TASK; 213 measure_task = NULL;
214 } 214 }
215 215
216 if (delayed_end_task != GNUNET_SCHEDULER_NO_TASK ) 216 if (delayed_end_task != NULL )
217 { 217 {
218 GNUNET_SCHEDULER_cancel (delayed_end_task); 218 GNUNET_SCHEDULER_cancel (delayed_end_task);
219 delayed_end_task = GNUNET_SCHEDULER_NO_TASK; 219 delayed_end_task = NULL;
220 } 220 }
221 221
222 if (die_task != GNUNET_SCHEDULER_NO_TASK ) 222 if (die_task != NULL )
223 { 223 {
224 GNUNET_SCHEDULER_cancel (die_task); 224 GNUNET_SCHEDULER_cancel (die_task);
225 die_task = GNUNET_SCHEDULER_NO_TASK; 225 die_task = NULL;
226 } 226 }
227 227
228 if (NULL != p1_stat) 228 if (NULL != p1_stat)
@@ -270,10 +270,10 @@ clean_up ()
270 p2_stat = NULL; 270 p2_stat = NULL;
271 } 271 }
272 272
273 if (die_task != GNUNET_SCHEDULER_NO_TASK ) 273 if (die_task != NULL )
274 { 274 {
275 GNUNET_SCHEDULER_cancel (die_task); 275 GNUNET_SCHEDULER_cancel (die_task);
276 die_task = GNUNET_SCHEDULER_NO_TASK; 276 die_task = NULL;
277 } 277 }
278 278
279 if (th != NULL ) 279 if (th != NULL )
@@ -308,7 +308,7 @@ end ()
308 int result = 0; 308 int result = 0;
309 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Stopping peers\n"); 309 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Stopping peers\n");
310 310
311 delayed_end_task = GNUNET_SCHEDULER_NO_TASK; 311 delayed_end_task = NULL;
312 FPRINTF (stderr, "\n"); 312 FPRINTF (stderr, "\n");
313 if (p1_switch_attempts > 0) 313 if (p1_switch_attempts > 0)
314 { 314 {
@@ -365,7 +365,7 @@ end ()
365static void 365static void
366end_badly () 366end_badly ()
367{ 367{
368 die_task = GNUNET_SCHEDULER_NO_TASK; 368 die_task = NULL;
369 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Fail! Stopping peers\n"); 369 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Fail! Stopping peers\n");
370 370
371 FPRINTF (stderr, "Peer 1 had %u addresses available, but did not try to switch\n", 371 FPRINTF (stderr, "Peer 1 had %u addresses available, but did not try to switch\n",
@@ -432,7 +432,7 @@ notify_ready (void *cls, size_t size, void *buf)
432 { 432 {
433 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 433 GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
434 "Timeout occurred while waiting for transmit_ready for message\n"); 434 "Timeout occurred while waiting for transmit_ready for message\n");
435 if (GNUNET_SCHEDULER_NO_TASK != die_task) 435 if (NULL != die_task)
436 GNUNET_SCHEDULER_cancel (die_task); 436 GNUNET_SCHEDULER_cancel (die_task);
437 die_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL ); 437 die_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL );
438 res = 1; 438 res = 1;
@@ -534,7 +534,7 @@ measure (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
534{ 534{
535 static int counter; 535 static int counter;
536 536
537 measure_task = GNUNET_SCHEDULER_NO_TASK; 537 measure_task = NULL;
538 538
539 counter++; 539 counter++;
540 if ((DURATION.rel_value_us / 1000 / 1000LL) < counter) 540 if ((DURATION.rel_value_us / 1000 / 1000LL) < counter)
@@ -608,7 +608,7 @@ run (void *cls, char * const *args, const char *cfgfile,
608 if ((p1 == NULL )|| (p2 == NULL)) 608 if ((p1 == NULL )|| (p2 == NULL))
609 { 609 {
610 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Fail! Could not start peers!\n"); 610 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Fail! Could not start peers!\n");
611 if (die_task != GNUNET_SCHEDULER_NO_TASK) 611 if (die_task != NULL)
612 GNUNET_SCHEDULER_cancel (die_task); 612 GNUNET_SCHEDULER_cancel (die_task);
613 die_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL); 613 die_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL);
614 return; 614 return;
@@ -657,7 +657,7 @@ run (void *cls, char * const *args, const char *cfgfile,
657 if ((p1_stat == NULL )|| (p2_stat == NULL)) 657 if ((p1_stat == NULL )|| (p2_stat == NULL))
658 { 658 {
659 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Fail! Could not create statistics for peers!\n"); 659 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Fail! Could not create statistics for peers!\n");
660 if (die_task != GNUNET_SCHEDULER_NO_TASK) 660 if (die_task != NULL)
661 GNUNET_SCHEDULER_cancel (die_task); 661 GNUNET_SCHEDULER_cancel (die_task);
662 die_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL); 662 die_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL);
663 return; 663 return;