blob: f381c48e5d30c6cb5251d3752ba3d5870298953f [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_CRONET_METRICS_UTIL_H_
#define COMPONENTS_CRONET_METRICS_UTIL_H_
#include <stdint.h>
#include "base/time/time.h"
namespace cronet {
namespace metrics_util {
constexpr int64_t kNullTime = -1;
// Converts timing metrics stored as TimeTicks into the format expected by the
// API layer: ms since Unix epoch, or kNullTime for null (if either |ticks| or
// |start_ticks| is null).
//
// By calculating time values using a base (|start_ticks|, |start_time|) pair,
// time values are normalized. This allows time deltas between pairs of events
// to be accurately computed, even if the system clock changed between those
// events, as long as times for both events were calculated using the same
// (|start_ticks|, |start_time|) pair.
//
// Args:
//
// ticks: The ticks value corresponding to the time of the event -- the returned
// time corresponds to this event.
//
// start_ticks: The ticks measurement at some base time -- the ticks equivalent
// of start_time. Should be smaller than ticks.
//
// start_time: Time measurement at some base time -- the time equivalent of
// start_ticks. Must not be null.
int64_t ConvertTime(const base::TimeTicks& ticks,
const base::TimeTicks& start_ticks,
const base::Time& start_time);
} // namespace metrics_util
} // namespace cronet
#endif // COMPONENTS_CRONET_METRICS_UTIL_H_