diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2013-05-09 09:45:53 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2013-05-09 09:45:53 +0000 |
commit | efad1d6733cd7e75a4e6c846ad7c031a0167b8be (patch) | |
tree | 93c8d652b78ae04b5b4a5c8e1e8abe398d4dd8c7 /src/testbed/gnunet-service-testbed_links.c | |
parent | d96c9d244148f2ee984c206b71987ba6df0ec820 (diff) | |
download | gnunet-efad1d6733cd7e75a4e6c846ad7c031a0167b8be.tar.gz gnunet-efad1d6733cd7e75a4e6c846ad7c031a0167b8be.zip |
- complement HELPER API with functions to kill and wait on the helper process
- To shutdown quickly, have testbed first kill all sub-controller's helper
processes first and wait later instead of kill & wait per each processes.
Diffstat (limited to 'src/testbed/gnunet-service-testbed_links.c')
-rw-r--r-- | src/testbed/gnunet-service-testbed_links.c | 57 |
1 files changed, 36 insertions, 21 deletions
diff --git a/src/testbed/gnunet-service-testbed_links.c b/src/testbed/gnunet-service-testbed_links.c index bcf8d91c8..7b0006d1f 100644 --- a/src/testbed/gnunet-service-testbed_links.c +++ b/src/testbed/gnunet-service-testbed_links.c | |||
@@ -425,32 +425,47 @@ reghost_free_iterator (void *cls, const struct GNUNET_HashCode *key, | |||
425 | void | 425 | void |
426 | GST_slave_list_clear () | 426 | GST_slave_list_clear () |
427 | { | 427 | { |
428 | unsigned int id; | ||
429 | struct HostRegistration *hr_entry; | 428 | struct HostRegistration *hr_entry; |
429 | struct GNUNET_TESTBED_ControllerProc *cproc; | ||
430 | unsigned int id; | ||
430 | 431 | ||
431 | for (id = 0; id < GST_slave_list_size; id++) | 432 | for (id = 0; id < GST_slave_list_size; id++) |
432 | if (NULL != GST_slave_list[id]) | 433 | { |
434 | if (NULL == GST_slave_list[id]) | ||
435 | continue; | ||
436 | while (NULL != (hr_entry = GST_slave_list[id]->hr_dll_head)) | ||
433 | { | 437 | { |
434 | while (NULL != (hr_entry = GST_slave_list[id]->hr_dll_head)) | 438 | GNUNET_CONTAINER_DLL_remove (GST_slave_list[id]->hr_dll_head, |
435 | { | 439 | GST_slave_list[id]->hr_dll_tail, hr_entry); |
436 | GNUNET_CONTAINER_DLL_remove (GST_slave_list[id]->hr_dll_head, | 440 | GNUNET_free (hr_entry); |
437 | GST_slave_list[id]->hr_dll_tail, hr_entry); | 441 | } |
438 | GNUNET_free (hr_entry); | 442 | if (NULL != GST_slave_list[id]->rhandle) |
439 | } | 443 | GNUNET_TESTBED_cancel_registration (GST_slave_list[id]->rhandle); |
440 | if (NULL != GST_slave_list[id]->rhandle) | 444 | (void) |
441 | GNUNET_TESTBED_cancel_registration (GST_slave_list[id]->rhandle); | 445 | GNUNET_CONTAINER_multihashmap_iterate (GST_slave_list |
442 | (void) | 446 | [id]->reghost_map, |
443 | GNUNET_CONTAINER_multihashmap_iterate (GST_slave_list | 447 | reghost_free_iterator, |
444 | [id]->reghost_map, | 448 | GST_slave_list[id]); |
445 | reghost_free_iterator, | 449 | GNUNET_CONTAINER_multihashmap_destroy (GST_slave_list[id]->reghost_map); |
446 | GST_slave_list[id]); | 450 | if (NULL != GST_slave_list[id]->controller) |
447 | GNUNET_CONTAINER_multihashmap_destroy (GST_slave_list[id]->reghost_map); | 451 | GNUNET_TESTBED_controller_disconnect (GST_slave_list[id]->controller); |
448 | if (NULL != GST_slave_list[id]->controller) | 452 | if (NULL != (cproc = GST_slave_list[id]->controller_proc)) |
449 | GNUNET_TESTBED_controller_disconnect (GST_slave_list[id]->controller); | 453 | { |
450 | if (NULL != GST_slave_list[id]->controller_proc) | 454 | LOG_DEBUG ("Stopping a slave\n"); |
451 | GNUNET_TESTBED_controller_stop (GST_slave_list[id]->controller_proc); | 455 | GNUNET_TESTBED_controller_kill_ (cproc); |
452 | GNUNET_free (GST_slave_list[id]); | ||
453 | } | 456 | } |
457 | } | ||
458 | for (id = 0; id < GST_slave_list_size; id++) | ||
459 | { | ||
460 | if (NULL == GST_slave_list[id]) | ||
461 | continue; | ||
462 | if (NULL != (cproc = GST_slave_list[id]->controller_proc)) | ||
463 | { | ||
464 | GNUNET_TESTBED_controller_destroy_ (cproc); | ||
465 | LOG_DEBUG ("Slave stopped\n"); | ||
466 | } | ||
467 | GNUNET_free (GST_slave_list[id]); | ||
468 | } | ||
454 | GNUNET_free_non_null (GST_slave_list); | 469 | GNUNET_free_non_null (GST_slave_list); |
455 | GST_slave_list = NULL; | 470 | GST_slave_list = NULL; |
456 | } | 471 | } |