static mtev_hook_return_t handle_log_line(void *closure, mtev_log_stream_t ls, const struct timeval *whence, const char *timebuf, int timebuflen, const char *debugbuf, int debugbuflen, const char *line, size_t len) { if(!ls) return MTEV_HOOK_CONTINUE; const char *name = mtev_log_stream_get_name(ls); if(!name || (strcmp(name,"metrics") && strcmp(name,"bundle") && strcmp(name,"check") && strcmp(name,"status"))) return MTEV_HOOK_CONTINUE; handle_metric_buffer(line, len, 0); return MTEV_HOOK_CONTINUE; }
void noit_websocket_closure_free(void *jcl) { noit_websocket_closure_t *w = jcl; if (w->check) noit_check_transient_remove_feed(w->check, w->feed); free(w->feed); mtev_log_stream_close(w->log_stream); mtev_log_stream_remove(mtev_log_stream_get_name(w->log_stream)); mtev_log_stream_free(w->log_stream); for (int i = 0; i < w->filter_count; i++) { free(w->filters[i]); } free(w->filters); free(w); }