aboutsummaryrefslogtreecommitdiff
path: root/src/arm
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2016-04-09 23:14:03 +0000
committerChristian Grothoff <christian@grothoff.org>2016-04-09 23:14:03 +0000
commit29e6158507a0758192075ac6ece7ba8e75ddc49a (patch)
treeb91ded48da322f8ba4c9bb0f5504228aa036c2d1 /src/arm
parent5dfcb058ab5db9ae0c4b147d8a99c64ca0980028 (diff)
downloadgnunet-29e6158507a0758192075ac6ece7ba8e75ddc49a.tar.gz
gnunet-29e6158507a0758192075ac6ece7ba8e75ddc49a.zip
small API change: do no longer pass rarely needed GNUNET_SCHEDULER_TaskContext to all scheduler tasks; instead, allow the relatively few tasks that need it to obtain the context via GNUNET_SCHEDULER_get_task_context()
Diffstat (limited to 'src/arm')
-rw-r--r--src/arm/arm_api.c6
-rw-r--r--src/arm/arm_monitor_api.c17
-rw-r--r--src/arm/gnunet-arm.c12
-rw-r--r--src/arm/gnunet-service-arm.c26
-rw-r--r--src/arm/test_arm_api.c2
-rw-r--r--src/arm/test_exponential_backoff.c10
-rw-r--r--src/arm/test_gnunet_service_arm.c3
7 files changed, 36 insertions, 40 deletions
diff --git a/src/arm/arm_api.c b/src/arm/arm_api.c
index 69569511f..c708f9150 100644
--- a/src/arm/arm_api.c
+++ b/src/arm/arm_api.c
@@ -205,10 +205,9 @@ trigger_next_request (struct GNUNET_ARM_Handle *h, int ignore_currently_down);
205 * Task scheduled to try to re-connect to arm. 205 * Task scheduled to try to re-connect to arm.
206 * 206 *
207 * @param cls the 'struct GNUNET_ARM_Handle' 207 * @param cls the 'struct GNUNET_ARM_Handle'
208 * @param tc task context
209 */ 208 */
210static void 209static void
211reconnect_arm_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 210reconnect_arm_task (void *cls)
212{ 211{
213 struct GNUNET_ARM_Handle *h = cls; 212 struct GNUNET_ARM_Handle *h = cls;
214 213
@@ -711,10 +710,9 @@ GNUNET_ARM_disconnect_and_free (struct GNUNET_ARM_Handle *h)
711 * Message timed out. Remove it from the queue. 710 * Message timed out. Remove it from the queue.
712 * 711 *
713 * @param cls the message (struct ARMControlMessage *) 712 * @param cls the message (struct ARMControlMessage *)
714 * @param tc task context
715 */ 713 */
716static void 714static void
717control_message_timeout (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 715control_message_timeout (void *cls)
718{ 716{
719 struct ARMControlMessage *cm = cls; 717 struct ARMControlMessage *cm = cls;
720 struct GNUNET_ARM_Message *arm_msg; 718 struct GNUNET_ARM_Message *arm_msg;
diff --git a/src/arm/arm_monitor_api.c b/src/arm/arm_monitor_api.c
index ea4caa866..19a2f4eb9 100644
--- a/src/arm/arm_monitor_api.c
+++ b/src/arm/arm_monitor_api.c
@@ -85,25 +85,29 @@ struct GNUNET_ARM_MonitorHandle
85 struct GNUNET_SCHEDULER_Task * init_timeout_task_id; 85 struct GNUNET_SCHEDULER_Task * init_timeout_task_id;
86}; 86};
87 87
88
88static void 89static void
89monitor_notify_handler (void *cls, const struct GNUNET_MessageHeader *msg); 90monitor_notify_handler (void *cls,
91 const struct GNUNET_MessageHeader *msg);
92
90 93
91static int 94static int
92reconnect_arm_monitor (struct GNUNET_ARM_MonitorHandle *h); 95reconnect_arm_monitor (struct GNUNET_ARM_MonitorHandle *h);
93 96
97
94/** 98/**
95 * Task scheduled to try to re-connect to arm. 99 * Task scheduled to try to re-connect to arm.
96 * 100 *
97 * @param cls the 'struct GNUNET_ARM_MonitorHandle' 101 * @param cls the 'struct GNUNET_ARM_MonitorHandle'
98 * @param tc task context
99 */ 102 */
100static void 103static void
101reconnect_arm_monitor_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 104reconnect_arm_monitor_task (void *cls)
102{ 105{
103 struct GNUNET_ARM_MonitorHandle *h = cls; 106 struct GNUNET_ARM_MonitorHandle *h = cls;
104 107
105 h->reconnect_task = NULL; 108 h->reconnect_task = NULL;
106 LOG (GNUNET_ERROR_TYPE_DEBUG, "Connecting to ARM service for monitoring after delay\n"); 109 LOG (GNUNET_ERROR_TYPE_DEBUG,
110 "Connecting to ARM service for monitoring after delay\n");
107 reconnect_arm_monitor (h); 111 reconnect_arm_monitor (h);
108} 112}
109 113
@@ -147,15 +151,14 @@ reconnect_arm_monitor_later (struct GNUNET_ARM_MonitorHandle *h)
147 * Init message timed out. Disconnect and try again. 151 * Init message timed out. Disconnect and try again.
148 * 152 *
149 * @param cls arm monitor handle 153 * @param cls arm monitor handle
150 * @param tc task context
151 */ 154 */
152static void 155static void
153init_timeout_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 156init_timeout_task (void *cls)
154{ 157{
155 struct GNUNET_ARM_MonitorHandle *h = cls; 158 struct GNUNET_ARM_MonitorHandle *h = cls;
159
156 LOG (GNUNET_ERROR_TYPE_DEBUG, 160 LOG (GNUNET_ERROR_TYPE_DEBUG,
157 "Init message timed out\n"); 161 "Init message timed out\n");
158
159 h->init_timeout_task_id = NULL; 162 h->init_timeout_task_id = NULL;
160 reconnect_arm_monitor_later (h); 163 reconnect_arm_monitor_later (h);
161} 164}
diff --git a/src/arm/gnunet-arm.c b/src/arm/gnunet-arm.c
index 726365ede..af85372d8 100644
--- a/src/arm/gnunet-arm.c
+++ b/src/arm/gnunet-arm.c
@@ -179,10 +179,9 @@ delete_files ()
179 * jobs that we've been asked to do in order. 179 * jobs that we've been asked to do in order.
180 * 180 *
181 * @param cls closure, unused 181 * @param cls closure, unused
182 * @param tc context, unused
183 */ 182 */
184static void 183static void
185shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 184shutdown_task (void *cls)
186{ 185{
187 if (NULL != h) 186 if (NULL != h)
188 { 187 {
@@ -269,10 +268,9 @@ ret_string (enum GNUNET_ARM_Result result)
269 * Main task that runs our various operations in order. 268 * Main task that runs our various operations in order.
270 * 269 *
271 * @param cls closure 270 * @param cls closure
272 * @param tc scheudler context
273 */ 271 */
274static void 272static void
275action_loop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc); 273action_loop (void *cls);
276 274
277 275
278/** 276/**
@@ -539,11 +537,13 @@ list_callback (void *cls,
539 * do, in order. 537 * do, in order.
540 * 538 *
541 * @param cls closure, unused 539 * @param cls closure, unused
542 * @param tc context, unused
543 */ 540 */
544static void 541static void
545action_loop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 542action_loop (void *cls)
546{ 543{
544 const struct GNUNET_SCHEDULER_TaskContext *tc;
545
546 tc = GNUNET_SCHEDULER_get_task_context ();
547 if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) 547 if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
548 return; 548 return;
549 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Running requested actions\n"); 549 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Running requested actions\n");
diff --git a/src/arm/gnunet-service-arm.c b/src/arm/gnunet-service-arm.c
index ea89b2989..28d448f75 100644
--- a/src/arm/gnunet-service-arm.c
+++ b/src/arm/gnunet-service-arm.c
@@ -630,16 +630,17 @@ find_service (const char *name)
630 * create the service in order to relay the incoming connection to it 630 * create the service in order to relay the incoming connection to it
631 * 631 *
632 * @param cls callback data, `struct ServiceListeningInfo` describing a listen socket 632 * @param cls callback data, `struct ServiceListeningInfo` describing a listen socket
633 * @param tc context
634 */ 633 */
635static void 634static void
636accept_connection (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 635accept_connection (void *cls)
637{ 636{
638 struct ServiceListeningInfo *sli = cls; 637 struct ServiceListeningInfo *sli = cls;
639 struct ServiceList *sl = sli->sl; 638 struct ServiceList *sl = sli->sl;
639 const struct GNUNET_SCHEDULER_TaskContext *tc;
640 640
641 sli->accept_task = NULL; 641 sli->accept_task = NULL;
642 GNUNET_assert (GNUNET_NO == in_shutdown); 642 GNUNET_assert (GNUNET_NO == in_shutdown);
643 tc = GNUNET_SCHEDULER_get_task_context ();
643 if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason)) 644 if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason))
644 return; 645 return;
645 start_process (sl, NULL, 0); 646 start_process (sl, NULL, 0);
@@ -845,11 +846,9 @@ handle_start (void *cls,
845 * Start a shutdown sequence. 846 * Start a shutdown sequence.
846 * 847 *
847 * @param cls closure (refers to service) 848 * @param cls closure (refers to service)
848 * @param tc task context
849 */ 849 */
850static void 850static void
851trigger_shutdown (void *cls, 851trigger_shutdown (void *cls)
852 const struct GNUNET_SCHEDULER_TaskContext *tc)
853{ 852{
854 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 853 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
855 "Triggering shutdown\n"); 854 "Triggering shutdown\n");
@@ -1060,11 +1059,9 @@ list_count (struct ServiceList *running_head)
1060 * Task run for shutdown. 1059 * Task run for shutdown.
1061 * 1060 *
1062 * @param cls closure, NULL if we need to self-restart 1061 * @param cls closure, NULL if we need to self-restart
1063 * @param tc context
1064 */ 1062 */
1065static void 1063static void
1066shutdown_task (void *cls, 1064shutdown_task (void *cls)
1067 const struct GNUNET_SCHEDULER_TaskContext *tc)
1068{ 1065{
1069 struct ServiceList *pos; 1066 struct ServiceList *pos;
1070 struct ServiceList *nxt; 1067 struct ServiceList *nxt;
@@ -1129,17 +1126,18 @@ shutdown_task (void *cls,
1129 * Task run whenever it is time to restart a child that died. 1126 * Task run whenever it is time to restart a child that died.
1130 * 1127 *
1131 * @param cls closure, always NULL 1128 * @param cls closure, always NULL
1132 * @param tc context
1133 */ 1129 */
1134static void 1130static void
1135delayed_restart_task (void *cls, 1131delayed_restart_task (void *cls)
1136 const struct GNUNET_SCHEDULER_TaskContext *tc) 1132
1137{ 1133{
1134 const struct GNUNET_SCHEDULER_TaskContext *tc;
1138 struct ServiceList *sl; 1135 struct ServiceList *sl;
1139 struct GNUNET_TIME_Relative lowestRestartDelay; 1136 struct GNUNET_TIME_Relative lowestRestartDelay;
1140 struct ServiceListeningInfo *sli; 1137 struct ServiceListeningInfo *sli;
1141 1138
1142 child_restart_task = NULL; 1139 child_restart_task = NULL;
1140 tc = GNUNET_SCHEDULER_get_task_context ();
1143 if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) 1141 if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
1144 return; 1142 return;
1145 GNUNET_assert (GNUNET_NO == in_shutdown); 1143 GNUNET_assert (GNUNET_NO == in_shutdown);
@@ -1204,12 +1202,11 @@ delayed_restart_task (void *cls,
1204 * process died). 1202 * process died).
1205 * 1203 *
1206 * @param cls closure, NULL if we need to self-restart 1204 * @param cls closure, NULL if we need to self-restart
1207 * @param tc context
1208 */ 1205 */
1209static void 1206static void
1210maint_child_death (void *cls, 1207maint_child_death (void *cls)
1211 const struct GNUNET_SCHEDULER_TaskContext *tc)
1212{ 1208{
1209 const struct GNUNET_SCHEDULER_TaskContext *tc;
1213 struct ServiceList *pos; 1210 struct ServiceList *pos;
1214 struct ServiceList *next; 1211 struct ServiceList *next;
1215 struct ServiceListeningInfo *sli; 1212 struct ServiceListeningInfo *sli;
@@ -1223,6 +1220,7 @@ maint_child_death (void *cls,
1223 1220
1224 pr = GNUNET_DISK_pipe_handle (sigpipe, GNUNET_DISK_PIPE_END_READ); 1221 pr = GNUNET_DISK_pipe_handle (sigpipe, GNUNET_DISK_PIPE_END_READ);
1225 child_death_task = NULL; 1222 child_death_task = NULL;
1223 tc = GNUNET_SCHEDULER_get_task_context ();
1226 if (0 == (tc->reason & GNUNET_SCHEDULER_REASON_READ_READY)) 1224 if (0 == (tc->reason & GNUNET_SCHEDULER_REASON_READ_READY))
1227 { 1225 {
1228 /* shutdown scheduled us, ignore! */ 1226 /* shutdown scheduled us, ignore! */
diff --git a/src/arm/test_arm_api.c b/src/arm/test_arm_api.c
index 2bdc0e941..149ec46c4 100644
--- a/src/arm/test_arm_api.c
+++ b/src/arm/test_arm_api.c
@@ -122,7 +122,7 @@ resolver_start_cb (void *cls,
122 122
123 123
124static void 124static void
125trigger_disconnect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 125trigger_disconnect (void *cls)
126{ 126{
127 GNUNET_ARM_disconnect_and_free ((struct GNUNET_ARM_Handle *) cls); 127 GNUNET_ARM_disconnect_and_free ((struct GNUNET_ARM_Handle *) cls);
128} 128}
diff --git a/src/arm/test_exponential_backoff.c b/src/arm/test_exponential_backoff.c
index 44493c6de..1032a9010 100644
--- a/src/arm/test_exponential_backoff.c
+++ b/src/arm/test_exponential_backoff.c
@@ -141,11 +141,9 @@ service_shutdown_handler (void *cls, const struct GNUNET_MessageHeader *msg)
141 * Shutting down took too long, cancel receive and return error. 141 * Shutting down took too long, cancel receive and return error.
142 * 142 *
143 * @param cls closure 143 * @param cls closure
144 * @param tc context information (why was this task triggered now)
145 */ 144 */
146static void 145static void
147service_shutdown_cancel (void *cls, 146service_shutdown_cancel (void *cls)
148 const struct GNUNET_SCHEDULER_TaskContext *tc)
149{ 147{
150 struct ShutdownContext *shutdown_ctx = cls; 148 struct ShutdownContext *shutdown_ctx = cls;
151 149
@@ -227,7 +225,7 @@ do_nothing_service_shutdown (struct GNUNET_CLIENT_Connection *sock,
227 225
228 226
229static void 227static void
230kill_task (void *cbData, const struct GNUNET_SCHEDULER_TaskContext *tc); 228kill_task (void *cbData);
231 229
232 230
233static void 231static void
@@ -246,7 +244,7 @@ shutdown_cont (void *cls, int reason)
246 244
247 245
248static void 246static void
249kill_task (void *cbData, const struct GNUNET_SCHEDULER_TaskContext *tc) 247kill_task (void *cbData)
250{ 248{
251 static struct GNUNET_CLIENT_Connection *doNothingConnection = NULL; 249 static struct GNUNET_CLIENT_Connection *doNothingConnection = NULL;
252 250
@@ -284,7 +282,7 @@ kill_task (void *cbData, const struct GNUNET_SCHEDULER_TaskContext *tc)
284 282
285 283
286static void 284static void
287trigger_disconnect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 285trigger_disconnect (void *cls)
288{ 286{
289 GNUNET_ARM_disconnect_and_free (arm); 287 GNUNET_ARM_disconnect_and_free (arm);
290 GNUNET_ARM_monitor_disconnect_and_free (mon); 288 GNUNET_ARM_monitor_disconnect_and_free (mon);
diff --git a/src/arm/test_gnunet_service_arm.c b/src/arm/test_gnunet_service_arm.c
index 7003271fa..33662e579 100644
--- a/src/arm/test_gnunet_service_arm.c
+++ b/src/arm/test_gnunet_service_arm.c
@@ -49,8 +49,7 @@ static struct GNUNET_ARM_Handle *arm;
49 49
50 50
51static void 51static void
52trigger_disconnect (void *cls, 52trigger_disconnect (void *cls)
53 const struct GNUNET_SCHEDULER_TaskContext *tc)
54{ 53{
55 GNUNET_ARM_disconnect_and_free (arm); 54 GNUNET_ARM_disconnect_and_free (arm);
56 arm = NULL; 55 arm = NULL;