int output_file_init(struct output *o) { struct output_file_priv *priv = malloc(sizeof(struct output_file_priv)); if (!priv) { pom_oom(sizeof(struct output_file_priv)); return POM_ERR; } memset(priv, 0, sizeof(struct output_file_priv)); output_set_priv(o, priv); priv->p_listen_pload_evt = ptype_alloc("bool"); priv->p_path = ptype_alloc("string"); if (!priv->p_path || !priv->p_listen_pload_evt) goto err; struct registry_param *p = registry_new_param("listen_pload_events", "no", priv->p_listen_pload_evt, "Listen to all events that generate payloads", 0); if (output_instance_add_param(o, p) != POM_OK) goto err; p = registry_new_param("path", "/tmp/", priv->p_path, "Path where to store the files", 0); if (output_instance_add_param(o, p) != POM_OK) goto err; priv->output_reg.open = output_file_pload_open; priv->output_reg.write = output_file_pload_write; priv->output_reg.close = output_file_pload_close; return POM_OK; err: output_file_cleanup(priv); return POM_ERR; }
int output_file_init(struct output *o) { struct output_file_priv *priv = malloc(sizeof(struct output_file_priv)); if (!priv) { pom_oom(sizeof(struct output_file_priv)); return POM_ERR; } memset(priv, 0, sizeof(struct output_file_priv)); output_set_priv(o, priv); priv->p_listen_pload_evt = ptype_alloc("bool"); priv->p_path = ptype_alloc("string"); priv->p_filter = ptype_alloc("string"); if (!priv->p_path || !priv->p_listen_pload_evt || !priv->p_filter) goto err; struct registry_instance *inst = output_get_reg_instance(o); priv->perf_files_closed = registry_instance_add_perf(inst, "files_closed", registry_perf_type_counter, "Number of files fully written and closed", "files"); priv->perf_files_open = registry_instance_add_perf(inst, "files_open", registry_perf_type_gauge, "Number of files currently open", "files"); priv->perf_bytes_written = registry_instance_add_perf(inst, "bytes_written", registry_perf_type_counter, "Number of bytes written", "bytes"); if (!priv->perf_files_closed || !priv->perf_files_open || !priv->perf_bytes_written) goto err; struct registry_param *p = registry_new_param("listen_pload_events", "no", priv->p_listen_pload_evt, "Listen to all events that generate payloads", 0); if (output_add_param(o, p) != POM_OK) goto err; p = registry_new_param("path", "/tmp/", priv->p_path, "Path where to store the files", 0); if (output_add_param(o, p) != POM_OK) goto err; p = registry_new_param("filter", "", priv->p_filter, "Payload filter", 0); if (output_add_param(o, p) != POM_OK) goto err; return POM_OK; err: if (p) registry_cleanup_param(p); output_file_cleanup(priv); return POM_ERR; }