package com.bumptech.glide.util;

import android.annotation.TargetApi;
import android.os.Build;
import android.os.SystemClock;

/**
 * A class for logging elapsed real time in millis.
 */
public final class LogTime {
    private static final double MILLIS_MULTIPLIER =
            Build.VERSION_CODES.JELLY_BEAN_MR1 <= Build.VERSION.SDK_INT ? 1d / Math.pow(10, 6) : 1d;

    private LogTime() {
        // Utility class.
    }

    /**
     * Returns the current time in either millis or nanos depending on the api level to be used with
     * {@link #getElapsedMillis(long)}.
     */
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
    public static long getLogTime() {
        if (Build.VERSION_CODES.JELLY_BEAN_MR1 <= Build.VERSION.SDK_INT) {
            return SystemClock.elapsedRealtimeNanos();
        } else {
            return System.currentTimeMillis();
        }
    }

    /**
     * Returns the time elapsed since the given logTime in millis.
     *
     * @param logTime The start time of the event.
     */
    public static double getElapsedMillis(long logTime) {
        return (getLogTime() - logTime) * MILLIS_MULTIPLIER;
    }
}
