osmo-ttcn3-hacks/library/StatsD_Types.ttcn

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" }