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

pl.allegro.tech.hermes.api.TopicNameWithMetrics Maven / Gradle / Ivy

There is a newer version: 2.6.22
Show newest version
package pl.allegro.tech.hermes.api;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.Objects;

public class TopicNameWithMetrics {

    private final long published;
    private final MetricDecimalValue rate;
    private final MetricDecimalValue deliveryRate;
    private final int subscriptions;
    private final MetricDecimalValue throughput;
    private final long volume;

    private final TopicName topicName;

    @JsonCreator
    public TopicNameWithMetrics(
            @JsonProperty("published") long published,
            @JsonProperty("rate") MetricDecimalValue rate,
            @JsonProperty("deliveryRate") MetricDecimalValue deliveryRate,
            @JsonProperty("subscriptions") int subscriptions,
            @JsonProperty("throughput") MetricDecimalValue throughput,
            @JsonProperty("volume") long volume,
            @JsonProperty("name") String qualifiedName
    ) {
        this.published = published;
        this.rate = rate;
        this.deliveryRate = deliveryRate;
        this.subscriptions = subscriptions;
        this.throughput = throughput;
        this.volume = volume;
        this.topicName = TopicName.fromQualifiedName(qualifiedName);
    }

    public static TopicNameWithMetrics from(TopicMetrics metrics, String qualifiedName) {
        return new TopicNameWithMetrics(
                metrics.getPublished(),
                metrics.getRate(),
                metrics.getDeliveryRate(),
                metrics.getSubscriptions(),
                metrics.getThroughput(),
                metrics.getVolume(),
                qualifiedName
        );
    }

    public long getPublished() {
        return published;
    }

    public long getVolume() {
        return volume;
    }

    public MetricDecimalValue getRate() {
        return rate;
    }

    public MetricDecimalValue getDeliveryRate() {
        return deliveryRate;
    }

    public int getSubscriptions() {
        return subscriptions;
    }

    public MetricDecimalValue getThroughput() {
        return throughput;
    }

    @JsonProperty("name")
    public String getName() {
        return topicName.qualifiedName();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        TopicNameWithMetrics that = (TopicNameWithMetrics) o;

        return Objects.equals(this.published, that.published)
                && Objects.equals(this.rate, that.rate)
                && Objects.equals(this.deliveryRate, that.deliveryRate)
                && Objects.equals(this.subscriptions, that.subscriptions)
                && Objects.equals(this.throughput, that.throughput)
                && Objects.equals(this.volume, that.volume)
                && Objects.equals(this.topicName, that.topicName);
    }

    @Override
    public int hashCode() {
        return Objects.hash(published, rate, deliveryRate, subscriptions, throughput, topicName, volume);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy