#include "google_apis/gcm/engine/heartbeat_manager.h"
#include <utility>
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/location.h"
#include "base/power_monitor/power_monitor.h"
#include "base/task/sequenced_task_runner.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "google_apis/gcm/protocol/mcs.pb.h"
#include "net/base/network_change_notifier.h"
namespace gcm {
namespace {
const int kCellHeartbeatDefaultMs = …;
const int kWifiHeartbeatDefaultMs = …;
const int kHeartbeatAckDefaultMs = …;
const int kMinClientHeartbeatIntervalMs = …;
const int kMinSuspendTimeMs = …;
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
const int kHeartbeatMissedCheckMs = …;
#endif
}
HeartbeatManager::HeartbeatManager(
scoped_refptr<base::SequencedTaskRunner> io_task_runner,
scoped_refptr<base::SequencedTaskRunner> maybe_power_wrapped_io_task_runner)
: … { … }
HeartbeatManager::~HeartbeatManager() { … }
void HeartbeatManager::Start(
const base::RepeatingClosure& send_heartbeat_callback,
const ReconnectCallback& trigger_reconnect_callback) { … }
void HeartbeatManager::Stop() { … }
void HeartbeatManager::OnHeartbeatAcked() { … }
void HeartbeatManager::UpdateHeartbeatConfig(
const mcs_proto::HeartbeatConfig& config) { … }
base::TimeTicks HeartbeatManager::GetNextHeartbeatTime() const { … }
void HeartbeatManager::UpdateHeartbeatTimer(
std::unique_ptr<base::RetainingOneShotTimer> timer) { … }
void HeartbeatManager::OnSuspend() { … }
void HeartbeatManager::OnResume() { … }
void HeartbeatManager::OnHeartbeatTriggered() { … }
void HeartbeatManager::RestartTimer() { … }
void HeartbeatManager::CheckForMissedHeartbeat() { … }
void HeartbeatManager::UpdateHeartbeatInterval() { … }
int HeartbeatManager::GetDefaultHeartbeatInterval() { … }
int HeartbeatManager::GetMaxClientHeartbeatIntervalMs() { … }
int HeartbeatManager::GetMinClientHeartbeatIntervalMs() { … }
void HeartbeatManager::SetClientHeartbeatIntervalMs(int interval_ms) { … }
int HeartbeatManager::GetClientHeartbeatIntervalMs() { … }
bool HeartbeatManager::HasClientHeartbeatInterval() { … }
bool HeartbeatManager::IsValidClientHeartbeatInterval(int interval) { … }
void HeartbeatManager::ResetConnection(
ConnectionFactory::ConnectionResetReason reason) { … }
}