blob: d7e04ccea29b7fdc93387ece055ae126039de636 [file] [log] [blame] [edit]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "missive/analytics/resource_collector.h"
#include <base/sequence_checker.h>
#include <base/time/time.h>
#include <base/timer/timer.h>
namespace reporting::analytics {
ResourceCollector::~ResourceCollector() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
CHECK(!timer_.IsRunning())
<< "A child of ResourceCollector must stop the timer before "
"ResourceCollector::~ResourceCollector() is called to prevent the "
"timer from accessing destructed members of the child. This can be "
"done by calling ResourceCollector::StopTimer(), usually in the "
"child's destructor.";
}
ResourceCollector::ResourceCollector(base::TimeDelta interval) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
timer_.Start(FROM_HERE, interval, this, &ResourceCollector::CollectWrapper);
}
void ResourceCollector::CollectWrapper() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
Collect();
}
void ResourceCollector::StopTimer() {
timer_.Stop();
}
} // namespace reporting::analytics