Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You 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 io.tehuti.metrics.stats;
The rate of the given quantity. By default this is the total observed over a set of samples from a sampled statistic divided by the elapsed time over the sample windows. Alternative SampledStat implementations can be provided, however, to record the rate of occurrences (e.g. the count of values measured over the time interval) or other such values.
public class Rate implements MeasurableStat {
    private final TimeUnit unit;
    private final SampledStat stat;
    public Rate() {
        this(.);
    }
    public Rate(TimeUnit unit) {
        this(unitnew SampledTotal());
    }
    public Rate(SampledStat stat) {
        this(.stat);
    }
    public Rate(TimeUnit unitSampledStat stat) {
        this. = stat;
        this. = unit;
    }
    public String unitName() {
        return .name().substring(0, .name().length() - 2).toLowerCase();
    }
    @Override
    public void record(MetricConfig configdouble valuelong timeMs) {
        this..record(configvaluetimeMs);
    }
    @Override
    public double measure(MetricConfig configlong now) {
        double value = .measure(confignow);
        if (value == 0) {
            return 0;
        } else {
            double elapsed = convert(now - .oldest(confignow).);
            return value / elapsed;
        }
    }
    private double convert(long time) {
        switch () {
            case :
                return time * .;
            case :
                return time * .;
            case :
                return time;
            case :
                return (doubletime / .;
            case :
                return (doubletime / .;
            case :
                return (doubletime / .;
            case :
                return (doubletime / .;
            default:
                throw new IllegalStateException("Unknown unit: " + );
        }
    }
New to GrepCode? Check out our FAQ X