[METRIC_FAMILY_TYPE_COUNTER] = "counter",
[METRIC_FAMILY_TYPE_GAUGE] = "gauge",
[METRIC_FAMILY_TYPE_STRING] = "string",
+ [METRIC_FAMILY_TYPE_OBJECT] = "object",
};
DEFINE_STRING_TABLE_LOOKUP_TO_STRING(metric_family_type, MetricFamilyType);
return metric_build_send(mf, link, object, v, fields);
}
+
+int metric_build_send_object(
+ const MetricFamily *mf,
+ sd_varlink *link,
+ const char *object,
+ sd_json_variant *value,
+ sd_json_variant *fields) {
+
+ assert(mf);
+ assert(link);
+ assert(value);
+ assert(sd_json_variant_is_object(value));
+
+ return metric_build_send(mf, link, object, value, fields);
+}
METRIC_FAMILY_TYPE_COUNTER,
METRIC_FAMILY_TYPE_GAUGE,
METRIC_FAMILY_TYPE_STRING,
+ METRIC_FAMILY_TYPE_OBJECT,
_METRIC_FAMILY_TYPE_MAX,
_METRIC_FAMILY_TYPE_INVALID = -EINVAL,
} MetricFamilyType;
int metric_build_send_string(const MetricFamily* mf, sd_varlink *link, const char *object, const char *value, sd_json_variant *fields);
int metric_build_send_unsigned(const MetricFamily* mf, sd_varlink *link, const char *object, uint64_t value, sd_json_variant *fields);
int metric_build_send_double(const MetricFamily* mf, sd_varlink *link, const char *object, double value, sd_json_variant *fields);
+int metric_build_send_object(const MetricFamily* mf, sd_varlink *link, const char *object, sd_json_variant *value, sd_json_variant *fields);
SD_VARLINK_FIELD_COMMENT("A gauge metric family type which is a value that can go up and down"),
SD_VARLINK_DEFINE_ENUM_VALUE(gauge),
SD_VARLINK_FIELD_COMMENT("A string metric family type"),
- SD_VARLINK_DEFINE_ENUM_VALUE(string));
+ SD_VARLINK_DEFINE_ENUM_VALUE(string),
+ SD_VARLINK_FIELD_COMMENT("An object metric family type whose value is an arbitrary JSON object"),
+ SD_VARLINK_DEFINE_ENUM_VALUE(object));
static SD_VARLINK_DEFINE_ERROR(NoSuchMetric);