66 lines
1.8 KiB
Plaintext
66 lines
1.8 KiB
Plaintext
module StatsD_Types {
|
|
|
|
/* Definition of abstract types for the StatsD protocol. USes the TITAN "TEXT"
|
|
* codec to auto-generate encoder/decoder functions
|
|
*
|
|
* (C) 2020 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
|
|
* All rights reserved.
|
|
*
|
|
* Author: Daniel Willmann <dwillmann@sysmocom.de>
|
|
*
|
|
* Released under the terms of GNU General Public License, Version 2 or
|
|
* (at your option) any later version.
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
type charstring MetricName with {
|
|
variant "END(':')";
|
|
};
|
|
|
|
type integer MetricValue with {
|
|
variant "END('|', '\|#(1)')";
|
|
};
|
|
|
|
type charstring MetricType (pattern "(g|c|ms|h|m)");
|
|
|
|
type charstring MetricSampleRate (pattern "\d.\d+") with {
|
|
variant "BEGIN('|@')"
|
|
};
|
|
|
|
type record StatsDMetric {
|
|
MetricName name,
|
|
MetricValue val,
|
|
MetricType mtype,
|
|
MetricSampleRate srate optional
|
|
};
|
|
|
|
type record of StatsDMetric StatsDMessage with {
|
|
variant "SEPARATOR('\n')";
|
|
};
|
|
|
|
external function enc_StatsDMessage(in StatsDMessage id) return charstring
|
|
with { extension "prototype(convert) encode(TEXT)"};
|
|
|
|
external function dec_StatsDMessage(in charstring id) return StatsDMessage
|
|
with { extension "prototype(convert) decode(TEXT)"};
|
|
|
|
template StatsDMessage tr_StatsDMsg1(template StatsDMetric metric) := {
|
|
[0] := metric
|
|
}
|
|
|
|
template (present) StatsDMetric tr_StatsDMetric(template (present) MetricName name, template (present) MetricValue val := ?,
|
|
template (present) MetricType mtype) := {
|
|
name := name,
|
|
val := val,
|
|
mtype := mtype,
|
|
srate := *
|
|
}
|
|
|
|
template (present) StatsDMetric tr_StatsDMetricCounter(template (present) MetricName name, template (present) MetricValue val := ?) :=
|
|
tr_StatsDMetric(name, val, "c");
|
|
|
|
template (present) StatsDMetric tr_StatsDMetricGauge(template (present) MetricName name, template (present) MetricValue val := ?) :=
|
|
tr_StatsDMetric(name, val, "g");
|
|
|
|
} with { encode "TEXT" }
|