| // 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_ |