All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.sentry.MeasurementUnit Maven / Gradle / Ivy

package io.sentry;

import java.util.Locale;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;

/**
 * The unit of measurement of a metric value.
 *
 * 

Units augment metric values by giving them a magnitude and semantics. There are certain types * of units that are subdivided in their precision, such as the {@link MeasurementUnit.Duration} for * time measurements. * *

When using the units to custom measurements, Sentry will apply formatting to display * measurement values in the UI. * * @see Develop * Docs */ public interface MeasurementUnit { /** Untyped value. */ @ApiStatus.Internal String NONE = "none"; /** A time duration. */ enum Duration implements MeasurementUnit { /** Nanosecond (`"nanosecond"`), 10^-9 seconds. */ NANOSECOND, /** Microsecond (`"microsecond"`), 10^-6 seconds. */ MICROSECOND, /** Millisecond (`"millisecond"`), 10^-3 seconds. */ MILLISECOND, /** Full second (`"second"`). */ SECOND, /** Minute (`"minute"`), 60 seconds. */ MINUTE, /** Hour (`"hour"`), 3600 seconds. */ HOUR, /** Day (`"day"`), 86,400 seconds. */ DAY, /** Week (`"week"`), 604,800 seconds. */ WEEK; @Override public @NotNull String apiName() { return name().toLowerCase(Locale.ROOT); } } /** Size of information derived from bytes. */ enum Information implements MeasurementUnit { /** Bit (`"bit"`), corresponding to 1/8 of a byte. */ BIT, /** Byte (`"byte"`). */ BYTE, /** Kilobyte (`"kilobyte"`), 10^3 bytes. */ KILOBYTE, /** Kibibyte (`"kibibyte"`), 2^10 bytes. */ KIBIBYTE, /** Megabyte (`"megabyte"`), 10^6 bytes. */ MEGABYTE, /** Mebibyte (`"mebibyte"`), 2^20 bytes. */ MEBIBYTE, /** Gigabyte (`"gigabyte"`), 10^9 bytes. */ GIGABYTE, /** Gibibyte (`"gibibyte"`), 2^30 bytes. */ GIBIBYTE, /** Terabyte (`"terabyte"`), 10^12 bytes. */ TERABYTE, /** Tebibyte (`"tebibyte"`), 2^40 bytes. */ TEBIBYTE, /** Petabyte (`"petabyte"`), 10^15 bytes. */ PETABYTE, /** Pebibyte (`"pebibyte"`), 2^50 bytes. */ PEBIBYTE, /** Exabyte (`"exabyte"`), 10^18 bytes. */ EXABYTE, /** Exbibyte (`"exbibyte"`), 2^60 bytes. */ EXBIBYTE; @Override public @NotNull String apiName() { return name().toLowerCase(Locale.ROOT); } } /** Fractions such as percentages. */ enum Fraction implements MeasurementUnit { /** Floating point fraction of `1`. */ RATIO, /** Ratio expressed as a fraction of `100`. `100%` equals a ratio of `1.0`. */ PERCENT; @Override public @NotNull String apiName() { return name().toLowerCase(Locale.ROOT); } } /** * Custom units without builtin conversion. No formatting will be applied to the measurement value * in the Sentry product, and the value with the unit will be shown as is. */ final class Custom implements MeasurementUnit { private final @NotNull String name; public Custom(@NotNull String name) { this.name = name; } @Override public @NotNull String name() { return name; } @Override public @NotNull String apiName() { return name().toLowerCase(Locale.ROOT); } } @NotNull String name(); /** Unit adhering to the API spec. */ @ApiStatus.Internal @NotNull String apiName(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy