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

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

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

import java.util.Objects;

import static pl.allegro.tech.hermes.api.MetricDecimalValue.of;

public class TopicMetrics {
    private long published;
    private long volume;
    private MetricDecimalValue rate = of("0.0");
    private MetricDecimalValue deliveryRate = of("0.0");
    private int subscriptions;
    private MetricDecimalValue throughput = of("0.0");

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

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

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        final TopicMetrics other = (TopicMetrics) obj;
        return Objects.equals(this.published, other.published)
            && Objects.equals(this.rate, other.rate)
            && Objects.equals(this.deliveryRate, other.deliveryRate)
            && Objects.equals(this.subscriptions, other.subscriptions)
            && Objects.equals(this.throughput, other.throughput)
            && Objects.equals(this.volume, other.volume);
    }

    public static TopicMetrics unavailable() {
        return Builder.topicMetrics().withRate(MetricDecimalValue.unavailable())
                                     .withDeliveryRate(MetricDecimalValue.unavailable())
                                     .withPublished(0)
                                     .withVolume(0)
                                     .withSubscriptions(0)
                                     .withThroughput(MetricDecimalValue.unavailable())
                                     .build();
    }

    public static class Builder {
        private final TopicMetrics topicMetrics;

        public Builder() {
            topicMetrics = new TopicMetrics();
        }

        public Builder withPublished(long published) {
            topicMetrics.published = published;
            return this;
        }

        public Builder withRate(MetricDecimalValue rate) {
            topicMetrics.rate = rate;
            return this;
        }

        public Builder withDeliveryRate(MetricDecimalValue deliveryRate) {
            topicMetrics.deliveryRate = deliveryRate;
            return this;
        }

        public Builder withSubscriptions(int subscriptions) {
            topicMetrics.subscriptions = subscriptions;
            return this;
        }

        public Builder withThroughput(MetricDecimalValue throughput) {
            topicMetrics.throughput = throughput;
            return this;
        }

        public static Builder topicMetrics() {
            return new Builder();
        }

        public TopicMetrics build() {
            return topicMetrics;
        }

        public Builder withVolume(long volume) {
            topicMetrics.volume = volume;
            return this;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy