size_t timeseries_count;
cdtime_t send_buffer_init_time;
+ int reference_count;
pthread_mutex_t lock;
};
typedef struct wg_callback_s wg_callback_t;
if (cb == NULL)
return;
+ pthread_mutex_lock(&cb->lock);
+ cb->reference_count--;
+ if (cb->reference_count > 0) {
+ pthread_mutex_unlock(&cb->lock);
+ return;
+ }
+
sd_output_destroy(cb->formatter);
cb->formatter = NULL;
curl_easy_cleanup(cb->curl);
}
+ pthread_mutex_unlock(&cb->lock);
+ pthread_mutex_destroy(&cb->lock);
+
sfree(cb);
} /* }}} void wg_callback_free */
user_data_t user_data = {
.data = cb,
+ .free_func = wg_callback_free,
};
+
+ cb->reference_count++;
plugin_register_flush("write_stackdriver", wg_flush, &user_data);
- user_data.free_func = wg_callback_free;
+ cb->reference_count++;
plugin_register_write("write_stackdriver", wg_write, &user_data);
return 0;