void bud_config_free(bud_config_t* config) { int i; /* Free all reload-dependent resources */ bud_config_finalize(config); if (config->loop != NULL) uv_run(config->loop, UV_RUN_NOWAIT); for (i = 0; i < config->context_count + 1; i++) bud_context_free(&config->contexts[i]); free(config->contexts); config->contexts = NULL; bud_logger_free(config->logger); config->logger = NULL; bud_hashmap_iterate(&config->files.hashmap, bud_config_free_files, NULL); bud_hashmap_destroy(&config->files.hashmap); json_value_free(config->json); config->json = NULL; free(config->files.str); config->files.str = NULL; bud_config_trace_free(&config->trace); /* Free rest */ free(config->workers); config->workers = NULL; free(config); }
void bud_config_destroy(bud_config_t* config) { int i; bud_config_finalize(config); if (config->loop != NULL) uv_run(config->loop, UV_RUN_NOWAIT); for (i = 0; i < config->context_count + 1; i++) bud_context_free(&config->contexts[i]); free(config->contexts); config->contexts = NULL; bud_logger_free(config->logger); config->logger = NULL; json_value_free(config->json); config->json = NULL; free(config->path); config->path = NULL; for (i = 0; i < config->backend_count; i++) { if (config->backend[i].revive_timer != NULL) { uv_close((uv_handle_t*) config->backend[i].revive_timer, (uv_close_cb) free); config->backend[i].revive_timer = NULL; } } free(config->backend); config->backend = NULL; }
void bud_config_free(bud_config_t* config) { int i; bud_config_finalize(config); uv_run(config->loop, UV_RUN_ONCE); for (i = 0; i < config->context_count + 1; i++) bud_context_free(&config->contexts[i]); free(config->workers); config->workers = NULL; if (config->logger != NULL) bud_logger_free(config); config->logger = NULL; json_value_free(config->json); config->json = NULL; free(config); }