// Copyright (c) 2014 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 "net/base/network_activity_monitor.h" namespace net { namespace { base::LazyInstance::Leaky g_network_activity_monitor = LAZY_INSTANCE_INITIALIZER; } // namespace NetworkActivityMonitor::NetworkActivityMonitor() : bytes_received_(0), bytes_sent_(0) { } NetworkActivityMonitor::~NetworkActivityMonitor() = default; // static NetworkActivityMonitor* NetworkActivityMonitor::GetInstance() { return g_network_activity_monitor.Pointer(); } void NetworkActivityMonitor::IncrementBytesReceived(uint64_t bytes_received) { base::TimeTicks now = base::TimeTicks::Now(); base::AutoLock lock(lock_); bytes_received_ += bytes_received; last_received_ticks_ = now; } void NetworkActivityMonitor::IncrementBytesSent(uint64_t bytes_sent) { base::TimeTicks now = base::TimeTicks::Now(); base::AutoLock lock(lock_); bytes_sent_ += bytes_sent; last_sent_ticks_ = now; } uint64_t NetworkActivityMonitor::GetBytesReceived() const { base::AutoLock lock(lock_); return bytes_received_; } uint64_t NetworkActivityMonitor::GetBytesSent() const { base::AutoLock lock(lock_); return bytes_sent_; } base::TimeDelta NetworkActivityMonitor::GetTimeSinceLastReceived() const { base::TimeTicks now = base::TimeTicks::Now(); base::AutoLock lock(lock_); return now - last_received_ticks_; } base::TimeDelta NetworkActivityMonitor::GetTimeSinceLastSent() const { base::TimeTicks now = base::TimeTicks::Now(); base::AutoLock lock(lock_); return now - last_sent_ticks_; } } // namespace net