aboutsummaryrefslogtreecommitdiff
path: root/src/regex
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/regex
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/regex')
-rw-r--r--src/regex/gnunet-daemon-regexprofiler.c6
-rw-r--r--src/regex/gnunet-regex-profiler.c36
-rw-r--r--src/regex/gnunet-regex-simulation-profiler.c14
-rw-r--r--src/regex/gnunet-service-regex.c6
-rw-r--r--src/regex/test_regex_api.c6
5 files changed, 34 insertions, 34 deletions
diff --git a/src/regex/gnunet-daemon-regexprofiler.c b/src/regex/gnunet-daemon-regexprofiler.c
index 3d6624cb8..6831a850c 100644
--- a/src/regex/gnunet-daemon-regexprofiler.c
+++ b/src/regex/gnunet-daemon-regexprofiler.c
@@ -62,7 +62,7 @@ static struct REGEX_INTERNAL_Announcement *announce_handle;
62/** 62/**
63 * Periodically reannounce regex. 63 * Periodically reannounce regex.
64 */ 64 */
65static GNUNET_SCHEDULER_TaskIdentifier reannounce_task; 65static struct GNUNET_SCHEDULER_Task * reannounce_task;
66 66
67/** 67/**
68 * What's the maximum reannounce period. 68 * What's the maximum reannounce period.
@@ -145,7 +145,7 @@ reannounce_regex (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
145 struct GNUNET_TIME_Relative random_delay; 145 struct GNUNET_TIME_Relative random_delay;
146 char *regex = cls; 146 char *regex = cls;
147 147
148 reannounce_task = GNUNET_SCHEDULER_NO_TASK; 148 reannounce_task = NULL;
149 if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) 149 if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
150 { 150 {
151 GNUNET_free (regex); 151 GNUNET_free (regex);
@@ -208,7 +208,7 @@ announce_regex (const char * regex)
208 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 208 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
209 "Daemon for %s starting\n", 209 "Daemon for %s starting\n",
210 policy_filename); 210 policy_filename);
211 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == reannounce_task); 211 GNUNET_assert (NULL == reannounce_task);
212 copy = GNUNET_strdup (regex); 212 copy = GNUNET_strdup (regex);
213 reannounce_task = GNUNET_SCHEDULER_add_now (reannounce_regex, (void *) copy); 213 reannounce_task = GNUNET_SCHEDULER_add_now (reannounce_regex, (void *) copy);
214} 214}
diff --git a/src/regex/gnunet-regex-profiler.c b/src/regex/gnunet-regex-profiler.c
index 5a7cb9acd..0e87565c4 100644
--- a/src/regex/gnunet-regex-profiler.c
+++ b/src/regex/gnunet-regex-profiler.c
@@ -170,7 +170,7 @@ struct RegexPeer
170 /** 170 /**
171 * Operation timeout 171 * Operation timeout
172 */ 172 */
173 GNUNET_SCHEDULER_TaskIdentifier timeout; 173 struct GNUNET_SCHEDULER_Task * timeout;
174 174
175 /** 175 /**
176 * Deamon start 176 * Deamon start
@@ -211,17 +211,17 @@ static struct GNUNET_CONFIGURATION_Handle *cfg;
211/** 211/**
212 * Abort task identifier 212 * Abort task identifier
213 */ 213 */
214static GNUNET_SCHEDULER_TaskIdentifier abort_task; 214static struct GNUNET_SCHEDULER_Task * abort_task;
215 215
216/** 216/**
217 * Shutdown task identifier 217 * Shutdown task identifier
218 */ 218 */
219static GNUNET_SCHEDULER_TaskIdentifier shutdown_task; 219static struct GNUNET_SCHEDULER_Task * shutdown_task;
220 220
221/** 221/**
222 * Host registration task identifier 222 * Host registration task identifier
223 */ 223 */
224static GNUNET_SCHEDULER_TaskIdentifier register_hosts_task; 224static struct GNUNET_SCHEDULER_Task * register_hosts_task;
225 225
226/** 226/**
227 * Global event mask for all testbed events 227 * Global event mask for all testbed events
@@ -296,7 +296,7 @@ static unsigned int next_search;
296/** 296/**
297 * Search timeout task identifier. 297 * Search timeout task identifier.
298 */ 298 */
299static GNUNET_SCHEDULER_TaskIdentifier search_timeout_task; 299static struct GNUNET_SCHEDULER_Task * search_timeout_task;
300 300
301/** 301/**
302 * Search timeout in seconds. 302 * Search timeout in seconds.
@@ -410,10 +410,10 @@ do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
410 char output_buffer[512]; 410 char output_buffer[512];
411 size_t size; 411 size_t size;
412 412
413 shutdown_task = GNUNET_SCHEDULER_NO_TASK; 413 shutdown_task = NULL;
414 if (GNUNET_SCHEDULER_NO_TASK != abort_task) 414 if (NULL != abort_task)
415 GNUNET_SCHEDULER_cancel (abort_task); 415 GNUNET_SCHEDULER_cancel (abort_task);
416 if (GNUNET_SCHEDULER_NO_TASK != register_hosts_task) 416 if (NULL != register_hosts_task)
417 GNUNET_SCHEDULER_cancel (register_hosts_task); 417 GNUNET_SCHEDULER_cancel (register_hosts_task);
418 418
419 for (peer_cnt = 0; peer_cnt < num_peers; peer_cnt++) 419 for (peer_cnt = 0; peer_cnt < num_peers; peer_cnt++)
@@ -479,9 +479,9 @@ do_abort (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
479 unsigned long i = (unsigned long) cls; 479 unsigned long i = (unsigned long) cls;
480 480
481 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Aborting from line %lu...\n", i); 481 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Aborting from line %lu...\n", i);
482 abort_task = GNUNET_SCHEDULER_NO_TASK; 482 abort_task = NULL;
483 result = GNUNET_SYSERR; 483 result = GNUNET_SYSERR;
484 if (GNUNET_SCHEDULER_NO_TASK != shutdown_task) 484 if (NULL != shutdown_task)
485 GNUNET_SCHEDULER_cancel (shutdown_task); 485 GNUNET_SCHEDULER_cancel (shutdown_task);
486 shutdown_task = GNUNET_SCHEDULER_add_now (&do_shutdown, NULL); 486 shutdown_task = GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
487} 487}
@@ -734,10 +734,10 @@ regex_found_handler (void *cls,
734 strings_found++; 734 strings_found++;
735 parallel_searches--; 735 parallel_searches--;
736 736
737 if (GNUNET_SCHEDULER_NO_TASK != peer->timeout) 737 if (NULL != peer->timeout)
738 { 738 {
739 GNUNET_SCHEDULER_cancel (peer->timeout); 739 GNUNET_SCHEDULER_cancel (peer->timeout);
740 peer->timeout = GNUNET_SCHEDULER_NO_TASK; 740 peer->timeout = NULL;
741 if (GNUNET_NO == in_shutdown) 741 if (GNUNET_NO == in_shutdown)
742 GNUNET_SCHEDULER_add_now (&announce_next_regex, NULL); 742 GNUNET_SCHEDULER_add_now (&announce_next_regex, NULL);
743 } 743 }
@@ -791,10 +791,10 @@ regex_found_handler (void *cls,
791 "All strings successfully matched in %s\n", 791 "All strings successfully matched in %s\n",
792 GNUNET_STRINGS_relative_time_to_string (prof_time, GNUNET_NO)); 792 GNUNET_STRINGS_relative_time_to_string (prof_time, GNUNET_NO));
793 793
794 if (GNUNET_SCHEDULER_NO_TASK != search_timeout_task) 794 if (NULL != search_timeout_task)
795 { 795 {
796 GNUNET_SCHEDULER_cancel (search_timeout_task); 796 GNUNET_SCHEDULER_cancel (search_timeout_task);
797 search_timeout_task = GNUNET_SCHEDULER_NO_TASK; 797 search_timeout_task = NULL;
798 } 798 }
799 799
800 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Collecting stats.\n"); 800 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Collecting stats.\n");
@@ -853,7 +853,7 @@ find_timed_out (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
853{ 853{
854 struct RegexPeer *p = cls; 854 struct RegexPeer *p = cls;
855 855
856 p->timeout = GNUNET_SCHEDULER_NO_TASK; 856 p->timeout = NULL;
857 857
858 if ((tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN) != 0) 858 if ((tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN) != 0)
859 return; 859 return;
@@ -996,7 +996,7 @@ announce_next_regex (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
996 if (strings_found != num_peers) 996 if (strings_found != num_peers)
997 { 997 {
998 struct GNUNET_TIME_Relative new_delay; 998 struct GNUNET_TIME_Relative new_delay;
999 if (GNUNET_SCHEDULER_NO_TASK != search_timeout_task) 999 if (NULL != search_timeout_task)
1000 GNUNET_SCHEDULER_cancel (search_timeout_task); 1000 GNUNET_SCHEDULER_cancel (search_timeout_task);
1001 new_delay = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 15); 1001 new_delay = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 15);
1002 search_timeout_task = GNUNET_SCHEDULER_add_delayed (new_delay, 1002 search_timeout_task = GNUNET_SCHEDULER_add_delayed (new_delay,
@@ -1130,10 +1130,10 @@ test_master (void *cls,
1130 "Testbed started in %s\n", 1130 "Testbed started in %s\n",
1131 GNUNET_STRINGS_relative_time_to_string (prof_time, GNUNET_NO)); 1131 GNUNET_STRINGS_relative_time_to_string (prof_time, GNUNET_NO));
1132 1132
1133 if (GNUNET_SCHEDULER_NO_TASK != abort_task) 1133 if (NULL != abort_task)
1134 { 1134 {
1135 GNUNET_SCHEDULER_cancel (abort_task); 1135 GNUNET_SCHEDULER_cancel (abort_task);
1136 abort_task = GNUNET_SCHEDULER_NO_TASK; 1136 abort_task = NULL;
1137 } 1137 }
1138 1138
1139 for (i = 0; i < num_peers; i++) 1139 for (i = 0; i < num_peers; i++)
diff --git a/src/regex/gnunet-regex-simulation-profiler.c b/src/regex/gnunet-regex-simulation-profiler.c
index f00108011..9c2567895 100644
--- a/src/regex/gnunet-regex-simulation-profiler.c
+++ b/src/regex/gnunet-regex-simulation-profiler.c
@@ -91,17 +91,17 @@ static struct ProgressMeter *meter;
91/** 91/**
92 * Abort task identifier. 92 * Abort task identifier.
93 */ 93 */
94static GNUNET_SCHEDULER_TaskIdentifier abort_task; 94static struct GNUNET_SCHEDULER_Task * abort_task;
95 95
96/** 96/**
97 * Shutdown task identifier. 97 * Shutdown task identifier.
98 */ 98 */
99static GNUNET_SCHEDULER_TaskIdentifier shutdown_task; 99static struct GNUNET_SCHEDULER_Task * shutdown_task;
100 100
101/** 101/**
102 * Scan task identifier; 102 * Scan task identifier;
103 */ 103 */
104static GNUNET_SCHEDULER_TaskIdentifier scan_task; 104static struct GNUNET_SCHEDULER_Task * scan_task;
105 105
106/** 106/**
107 * Global testing status. 107 * Global testing status.
@@ -276,8 +276,8 @@ free_meter (struct ProgressMeter *meter)
276static void 276static void
277do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 277do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
278{ 278{
279 shutdown_task = GNUNET_SCHEDULER_NO_TASK; 279 shutdown_task = NULL;
280 if (GNUNET_SCHEDULER_NO_TASK != abort_task) 280 if (NULL != abort_task)
281 GNUNET_SCHEDULER_cancel (abort_task); 281 GNUNET_SCHEDULER_cancel (abort_task);
282 if (NULL != mysql_ctx) 282 if (NULL != mysql_ctx)
283 GNUNET_MYSQL_context_destroy (mysql_ctx); 283 GNUNET_MYSQL_context_destroy (mysql_ctx);
@@ -298,9 +298,9 @@ static void
298do_abort (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 298do_abort (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
299{ 299{
300 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Aborting\n"); 300 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Aborting\n");
301 abort_task = GNUNET_SCHEDULER_NO_TASK; 301 abort_task = NULL;
302 GNUNET_SCHEDULER_cancel (scan_task); 302 GNUNET_SCHEDULER_cancel (scan_task);
303 scan_task = GNUNET_SCHEDULER_NO_TASK; 303 scan_task = NULL;
304 result = GNUNET_SYSERR; 304 result = GNUNET_SYSERR;
305 GNUNET_SCHEDULER_add_now (&do_shutdown, NULL); 305 GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
306} 306}
diff --git a/src/regex/gnunet-service-regex.c b/src/regex/gnunet-service-regex.c
index 6daab0be3..419829cc1 100644
--- a/src/regex/gnunet-service-regex.c
+++ b/src/regex/gnunet-service-regex.c
@@ -69,7 +69,7 @@ struct ClientEntry
69 /** 69 /**
70 * Task for re-announcing. 70 * Task for re-announcing.
71 */ 71 */
72 GNUNET_SCHEDULER_TaskIdentifier refresh_task; 72 struct GNUNET_SCHEDULER_Task * refresh_task;
73 73
74}; 74};
75 75
@@ -143,10 +143,10 @@ handle_client_disconnect (void *cls, struct GNUNET_SERVER_Client *client)
143 nx = ce->next; 143 nx = ce->next;
144 if (ce->client == client) 144 if (ce->client == client)
145 { 145 {
146 if (GNUNET_SCHEDULER_NO_TASK != ce->refresh_task) 146 if (NULL != ce->refresh_task)
147 { 147 {
148 GNUNET_SCHEDULER_cancel (ce->refresh_task); 148 GNUNET_SCHEDULER_cancel (ce->refresh_task);
149 ce->refresh_task = GNUNET_SCHEDULER_NO_TASK; 149 ce->refresh_task = NULL;
150 } 150 }
151 if (NULL != ce->ah) 151 if (NULL != ce->ah)
152 { 152 {
diff --git a/src/regex/test_regex_api.c b/src/regex/test_regex_api.c
index a35934c9c..1603d19fa 100644
--- a/src/regex/test_regex_api.c
+++ b/src/regex/test_regex_api.c
@@ -45,14 +45,14 @@ static struct GNUNET_REGEX_Search *s;
45 45
46static int ok = 1; 46static int ok = 1;
47 47
48static GNUNET_SCHEDULER_TaskIdentifier die_task; 48static struct GNUNET_SCHEDULER_Task * die_task;
49 49
50 50
51static void 51static void
52end (void *cls, 52end (void *cls,
53 const struct GNUNET_SCHEDULER_TaskContext *tc) 53 const struct GNUNET_SCHEDULER_TaskContext *tc)
54{ 54{
55 die_task = GNUNET_SCHEDULER_NO_TASK; 55 die_task = NULL;
56 GNUNET_REGEX_announce_cancel (a); 56 GNUNET_REGEX_announce_cancel (a);
57 a = NULL; 57 a = NULL;
58 GNUNET_REGEX_search_cancel (s); 58 GNUNET_REGEX_search_cancel (s);
@@ -64,7 +64,7 @@ end (void *cls,
64static void 64static void
65end_badly () 65end_badly ()
66{ 66{
67 die_task = GNUNET_SCHEDULER_NO_TASK; 67 die_task = NULL;
68 FPRINTF (stderr, "%s", "Testcase failed (timeout).\n"); 68 FPRINTF (stderr, "%s", "Testcase failed (timeout).\n");
69 GNUNET_REGEX_announce_cancel (a); 69 GNUNET_REGEX_announce_cancel (a);
70 a = NULL; 70 a = NULL;