| Index: remoting/host/process_stats_sender.cc
|
| diff --git a/remoting/host/process_stats_sender.cc b/remoting/host/process_stats_sender.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a72517b7896269b0868564e8545c68613088cd2c
|
| --- /dev/null
|
| +++ b/remoting/host/process_stats_sender.cc
|
| @@ -0,0 +1,53 @@
|
| +// Copyright 2017 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.
|
| +
|
| +#include "remoting/host/process_stats_sender.h"
|
| +
|
| +#include <utility>
|
| +
|
| +#include "base/location.h"
|
| +#include "base/logging.h"
|
| +#include "remoting/host/process_stats_agent.h"
|
| +#include "remoting/host/process_stats_util.h"
|
| +
|
| +namespace remoting {
|
| +
|
| +ProcessStatsSender::ProcessStatsSender(
|
| + protocol::ProcessStatsStub* host_stats_stub,
|
| + base::TimeDelta interval)
|
| + : host_stats_stub_(host_stats_stub) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK(host_stats_stub_);
|
| + DCHECK(!interval.is_zero());
|
| +
|
| + timer_.Start(FROM_HERE, interval, this, &ProcessStatsSender::ReportUsage);
|
| +}
|
| +
|
| +ProcessStatsSender::~ProcessStatsSender() {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + timer_.Stop();
|
| +}
|
| +
|
| +void ProcessStatsSender::AddProcessStatsAgent(
|
| + std::unique_ptr<ProcessStatsAgent> agent) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + agents_.push_back(std::move(agent));
|
| +}
|
| +
|
| +void ProcessStatsSender::ReportUsage() {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK(!agents_.empty());
|
| +
|
| + std::vector<protocol::ProcessResourceUsage> usages;
|
| + for (const auto& agent : agents_) {
|
| + protocol::ProcessResourceUsage usage = agent->GetResourceUsage();
|
| + if (!IsEmptyProcessResourceUsage(usage)) {
|
| + usages.push_back(std::move(usage));
|
| + }
|
| + }
|
| +
|
| + host_stats_stub_->OnProcessStats(AggregateProcessResourceUsage(usages));
|
| +}
|
| +
|
| +} // namespace remoting
|
|
|