static void free_output_plugin(hs_output_plugin* p) { hs_free_input(&p->analysis); hs_free_input(&p->input); hs_free_sandbox(p->sb); free(p->sb); p->sb = NULL; p->plugins = NULL; free(p->async_cp); p->async_cp = NULL; p->async_len = 0; pthread_mutex_destroy(&p->cp_lock); }
static void destroy_output_plugin(hs_output_plugin *p) { if (!p) return; hs_free_input(&p->analysis); hs_free_input(&p->input); char *msg = lsb_heka_destroy_sandbox(p->hsb); if (msg) { hs_log(NULL, p->name, 3, "lsb_heka_destroy_sandbox failed: %s", msg); free(msg); } lsb_destroy_message_matcher(p->mm); free(p->name); free(p->async_cp); pthread_mutex_destroy(&p->cp_lock); free(p); }
static void free_analysis_thread(hs_analysis_thread* at) { pthread_mutex_destroy(&at->cp_lock); pthread_mutex_destroy(&at->list_lock); at->plugins = NULL; for (int i = 0; i < at->list_cap; ++i) { if (!at->list[i]) continue; free_analysis_plugin(at->list[i]); free(at->list[i]); at->list[i] = NULL; } free(at->list); at->list = NULL; at->msg = NULL; at->cp.id = 0; at->cp.offset = 0; at->current_t = 0; at->list_cap = 0; at->list_cnt = 0; at->tid = 0; at->matched = false; hs_free_input(&at->input); }