예제 #1
0
static void pickle1_each(
	const char *key,
	value_t value,
	void *backend)
{
	struct brubeck_carbon *carbon = (struct brubeck_carbon *)backend;
	uint8_t key_len = (uint8_t)strlen(key);

	if (carbon->pickler.pos + PICKLE1_SIZE(key_len)
		>= PICKLE_BUFFER_SIZE) {
		pickle1_flush(carbon);
	}

	if (!is_connected(carbon))
		return;

	pickle1_push(&carbon->pickler, key, key_len,
		carbon->backend.tick_time, value);
}
예제 #2
0
static void pickle1_each(
	const struct brubeck_metric *metric,
	const char *key,
	value_t value,
	void *backend)
{
	struct brubeck_carbon *carbon = (struct brubeck_carbon *)backend;
	uint8_t key_len = (uint8_t)strlen(key);

	if (carbon->pickler.pos + PICKLE1_SIZE(key_len)
		>= PICKLE_BUFFER_SIZE) {
		pickle1_flush(carbon);
	}

	if (!is_connected(carbon))
		return;

	if (!carbon->namespacing || metric->type == BRUBECK_MT_INTERNAL_STATS) {
		pickle1_push(&carbon->pickler, key, key_len,
			carbon->backend.tick_time, value);
		return;
	}

	char prefix_key[1024];
	uint8_t prefix_key_len = 0;

	prefix_key_len = carbon_namespace(prefix_key, metric, key, key_len, carbon, true);
	pickle1_push(&carbon->pickler, prefix_key, prefix_key_len,
		carbon->backend.tick_time, value);

	if (IS_COUNTER(metric->type) &&
		carbon->backend.sample_freq != 0) {
		prefix_key_len = carbon_namespace(prefix_key, metric,
			key, key_len, carbon, false);
		value_t normalized_val = value / carbon->backend.sample_freq;
		pickle1_push(&carbon->pickler, prefix_key, prefix_key_len,
			carbon->backend.tick_time, normalized_val);
	}
}