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

com.newrelic.telemetry.metrics.Gauge Maven / Gradle / Ivy

/*
 * Copyright 2019 New Relic Corporation. All rights reserved.
 * SPDX-License-Identifier: Apache-2.0
 */
package com.newrelic.telemetry.metrics;

import com.newrelic.telemetry.Attributes;
import com.newrelic.telemetry.util.Utils;
import java.util.Map;

/**
 * A {@link Metric} representing a single signed, floating-point quantity measured at a point in
 * time.
 *
 * 

Important: Values are not validated on construction, and this class's methods do not * throw. */ public final class Gauge implements Metric { private final String name; private final double value; private final long timestamp; private final Map attributes; /** * @param name The name for this Gauge metric. * @param value The value of this Gauge, recorded at the point in time. * @param timestamp The point in time this Gauge measurement was recorded, in milliseconds since * epoch. * @param attributes Dimensional attributes, as key-value pairs, associated with this Gauge. */ public Gauge(String name, double value, long timestamp, Attributes attributes) { this.name = Utils.verifyNonNull(name); this.value = value; this.timestamp = timestamp; this.attributes = Utils.verifyNonNull(attributes).asMap(); } /** @return The value of this Gauge, recorded at the point in time. */ public double getValue() { return value; } /** @return The point in time this Gauge measurement was recorded, in milliseconds since epoch. */ public long getTimestamp() { return timestamp; } /** @return The name for this Gauge metric. */ public String getName() { return name; } /** @return Dimensional attributes, as key-value pairs, associated with this Gauge. */ public Map getAttributes() { return attributes; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Gauge gauge = (Gauge) o; if (Double.compare(gauge.getValue(), getValue()) != 0) return false; if (getTimestamp() != gauge.getTimestamp()) return false; if (getName() != null ? !getName().equals(gauge.getName()) : gauge.getName() != null) return false; return getAttributes() != null ? getAttributes().equals(gauge.getAttributes()) : gauge.getAttributes() == null; } @Override public int hashCode() { int result; long temp; result = getName() != null ? getName().hashCode() : 0; temp = Double.doubleToLongBits(getValue()); result = 31 * result + (int) (temp ^ (temp >>> 32)); result = 31 * result + (int) (getTimestamp() ^ (getTimestamp() >>> 32)); result = 31 * result + (getAttributes() != null ? getAttributes().hashCode() : 0); return result; } @Override public String toString() { return "Gauge{" + "name='" + name + '\'' + ", value=" + value + ", timestamp=" + timestamp + ", attributes=" + attributes + '}'; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy