| // Copyright 2014 The Chromium Authors |
| // 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" |
| |
| #include <atomic> |
| #include <type_traits> |
| |
| #include "third_party/abseil-cpp/absl/base/attributes.h" |
| |
| namespace net::activity_monitor { |
| |
| namespace { |
| |
| ABSL_CONST_INIT std::atomic<uint64_t> g_bytes_received = 0; |
| |
| } // namespace |
| |
| void IncrementBytesReceived(uint64_t bytes_received) { |
| // std::memory_order_relaxed is used because no other operation on |
| // |bytes_received_| depends on memory operations that happened before this |
| // increment. |
| g_bytes_received.fetch_add(bytes_received, std::memory_order_relaxed); |
| } |
| |
| uint64_t GetBytesReceived() { |
| return g_bytes_received.load(std::memory_order_relaxed); |
| } |
| |
| void ResetBytesReceivedForTesting() { |
| g_bytes_received = 0; |
| } |
| |
| } // namespace net::activity_monitor |