blob: 137ef39d389d7e8c4adf9fb3414b665ef6cfbb6f [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_SYNC_DEVICE_INFO_DEVICE_INFO_UTIL_H_
#define COMPONENTS_SYNC_DEVICE_INFO_DEVICE_INFO_UTIL_H_
#include <string>
#include "base/time/time.h"
namespace sync_pb {
class DeviceInfoSpecifics;
}
namespace syncer {
// This class contains constants and static helper functions that are shared
// between DeviceInfoSyncService and DeviceInfoSyncBridge.
class DeviceInfoUtil {
public:
// The prefix to be appended before the cache guid when creating tags. This is
// needed for backwards compatiblity with all old clients because we need to
// ensure everyone uses the same logic to generate the tag, so that everyone
// can independently hash the tag to the same value.
static const char kClientTagPrefix[];
// The delay between periodic updates to the entry corresponding to this
// device.
static const base::TimeDelta kPulseInterval;
// The amount of time a device can go without an updates before we consider it
// stale/inactive, and start ignoring it for active device counts.
static const base::TimeDelta kActiveThreshold;
// Determines the amount of time to wait before pulsing something with the
// given |last_update| timestamp. This uses the current time from |now| along
// with |kDeviceInfoPulseInterval|, and will never return a negative delay.
// The smallest delay this function will return, even for something extremely
// old will be a delay of 0 time units.
static base::TimeDelta CalculatePulseDelay(const base::Time last_update,
const base::Time now);
// Determines if the given |last_update| timestamp should be considerend
// active based on |kStaleDeviceInfoThreshold|, given the current time.
static bool IsActive(const base::Time last_update, const base::Time now);
// Formats ClientTag from DeviceInfoSpecifics.
static std::string SpecificsToTag(
const sync_pb::DeviceInfoSpecifics& specifics);
// Extracts cache_guid from ClientTag.
static std::string TagToCacheGuid(const std::string& tag);
};
} // namespace syncer
#endif // COMPONENTS_SYNC_DEVICE_INFO_DEVICE_INFO_UTIL_H_