mousio.etcd4j.responses.EtcdLeaderStatsResponse.java Source code

Java tutorial

Introduction

Here is the source code for mousio.etcd4j.responses.EtcdLeaderStatsResponse.java

Source

/*
 * Copyright (c) 2015, Jurriaan Mous and contributors as indicated by the @author tags.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package mousio.etcd4j.responses;

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

import java.util.Collections;
import java.util.Map;

/**
 * @author Jurriaan Mous
 * @author Luca Burgazzoli
 * @author John Eke
 *
 * An Etcd Leader Stats Response
 */
@JsonIgnoreProperties(ignoreUnknown = true)
public class EtcdLeaderStatsResponse implements EtcdResponse {

    // The json
    public static final EtcdResponseDecoder<EtcdLeaderStatsResponse> DECODER = EtcdResponseDecoders
            .json(EtcdLeaderStatsResponse.class);

    private final String leader;
    private final Map<String, EtcdLeaderStatsResponse.FollowerInfo> followers;

    public EtcdLeaderStatsResponse(@JsonProperty("leader") String leader,
            @JsonProperty("followers") Map<String, EtcdLeaderStatsResponse.FollowerInfo> followers) {
        this.leader = leader;
        this.followers = Collections.unmodifiableMap(followers);
    }

    public String getLeader() {
        return leader;
    }

    public Map<String, EtcdLeaderStatsResponse.FollowerInfo> getFollowers() {
        return followers;
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class FollowerInfo {
        private final LatencyInfo latency;
        private final CountsInfo counts;

        public FollowerInfo(@JsonProperty("latency") LatencyInfo latency,
                @JsonProperty("counts") CountsInfo counts) {
            this.latency = latency;
            this.counts = counts;
        }

        public LatencyInfo getLatency() {
            return latency;
        }

        public CountsInfo getCounts() {
            return counts;
        }
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class LatencyInfo {
        private final double current;
        private final double average;
        private final double standardDeviation;
        private final double minimum;
        private final double maximum;

        public LatencyInfo(@JsonProperty("current") double current, @JsonProperty("average") double average,
                @JsonProperty("standardDeviation") double standardDeviation,
                @JsonProperty("minimum") double minimum, @JsonProperty("maximum") double maximum) {
            this.current = current;
            this.average = average;
            this.standardDeviation = standardDeviation;
            this.minimum = minimum;
            this.maximum = maximum;
        }

        public double getCurrent() {
            return current;
        }

        public double getAverage() {
            return average;
        }

        public double getStandardDeviation() {
            return standardDeviation;
        }

        public double getMinimum() {
            return minimum;
        }

        public double getMaximum() {
            return maximum;
        }
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class CountsInfo {
        private final long fail;
        private final long success;

        public CountsInfo(@JsonProperty("fail") long fail, @JsonProperty("success") long success) {
            this.fail = fail;
            this.success = success;
        }

        public long getFail() {
            return fail;
        }

        public long getSuccess() {
            return success;
        }
    }
}