| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | |
| 3 | #ifndef LIBNETDATA_PARSERS_DURATION_H |
| 4 | #define LIBNETDATA_PARSERS_DURATION_H |
| 5 | |
| 6 | #include "parsers.h" |
| 7 | |
| 8 | int64_t duration_round_to_resolution(int64_t value, int64_t resolution); |
| 9 | |
| 10 | // duration (string to number) |
| 11 | bool duration_parse(const char *duration, int64_t *result, const char *default_unit, const char *output_unit); |
| 12 | #define duration_parse_nsec_t(duration, ns_ptr) duration_parse(duration, ns_ptr, "ns", "ns") |
| 13 | #define duration_parse_usec_t(duration, us_ptr) duration_parse(duration, us_ptr, "us", "us") |
| 14 | #define duration_parse_msec_t(duration, ms_ptr) duration_parse(duration, ms_ptr, "ms", "ms") |
| 15 | #define duration_parse_time_t(duration, secs_ptr) duration_parse(duration, secs_ptr, "s", "s") |
| 16 | #define duration_parse_mins(duration, mins_ptr) duration_parse(duration, mins_ptr, "m", "m") |
| 17 | #define duration_parse_hours(duration, hours_ptr) duration_parse(duration, hours_ptr, "h", "h") |
| 18 | #define duration_parse_days(duration, days_ptr) duration_parse(duration, days_ptr, "d", "d") |
| 19 | |
| 20 | // duration (number to string) |
| 21 | ssize_t duration_snprintf(char *dst, size_t dst_size, int64_t value, const char *unit, bool add_spaces); |
| 22 | #define duration_snprintf_nsec_t(dst, dst_size, ns) duration_snprintf(dst, dst_size, ns, "ns", false) |
| 23 | #define duration_snprintf_usec_t(dst, dst_size, us) duration_snprintf(dst, dst_size, us, "us", false) |
| 24 | #define duration_snprintf_msec_t(dst, dst_size, ms) duration_snprintf(dst, dst_size, ms, "ms", false) |
| 25 | #define duration_snprintf_time_t(dst, dst_size, secs) duration_snprintf(dst, dst_size, secs, "s", false) |
| 26 | #define duration_snprintf_mins(dst, dst_size, mins) duration_snprintf(dst, dst_size, mins, "m", false) |
| 27 | #define duration_snprintf_hours(dst, dst_size, hours) duration_snprintf(dst, dst_size, hours, "h", false) |
| 28 | #define duration_snprintf_days(dst, dst_size, days) duration_snprintf(dst, dst_size, days, "d", false) |
| 29 | |
| 30 | bool duration_parse_seconds(const char *str, int *result); |
| 31 | |
| 32 | // unit tests |
| 33 | int duration_unittest(void); |
| 34 | |
| 35 | #endif //LIBNETDATA_PARSERS_DURATION_H |