1*3f982cf4SFabien Sanglard // Copyright 2018 The Chromium Authors. All rights reserved. 2*3f982cf4SFabien Sanglard // Use of this source code is governed by a BSD-style license that can be 3*3f982cf4SFabien Sanglard // found in the LICENSE file. 4*3f982cf4SFabien Sanglard 5*3f982cf4SFabien Sanglard #ifndef OSP_PUBLIC_NETWORK_METRICS_H_ 6*3f982cf4SFabien Sanglard #define OSP_PUBLIC_NETWORK_METRICS_H_ 7*3f982cf4SFabien Sanglard 8*3f982cf4SFabien Sanglard #include <cstdint> 9*3f982cf4SFabien Sanglard 10*3f982cf4SFabien Sanglard #include "osp/public/timestamp.h" 11*3f982cf4SFabien Sanglard 12*3f982cf4SFabien Sanglard namespace openscreen { 13*3f982cf4SFabien Sanglard namespace osp { 14*3f982cf4SFabien Sanglard 15*3f982cf4SFabien Sanglard // Holds a set of metrics, captured over a specific range of time, about the 16*3f982cf4SFabien Sanglard // behavior of a network service running in the library. 17*3f982cf4SFabien Sanglard struct NetworkMetrics { 18*3f982cf4SFabien Sanglard NetworkMetrics() = default; 19*3f982cf4SFabien Sanglard ~NetworkMetrics() = default; 20*3f982cf4SFabien Sanglard 21*3f982cf4SFabien Sanglard // The range of time over which the metrics were collected; end_timestamp > 22*3f982cf4SFabien Sanglard // start_timestamp 23*3f982cf4SFabien Sanglard timestamp_t start_timestamp = 0; 24*3f982cf4SFabien Sanglard timestamp_t end_timestamp = 0; 25*3f982cf4SFabien Sanglard 26*3f982cf4SFabien Sanglard // The number of packets and bytes sent over the timestamp range. 27*3f982cf4SFabien Sanglard uint64_t packets_sent = 0; 28*3f982cf4SFabien Sanglard uint64_t bytes_sent = 0; 29*3f982cf4SFabien Sanglard 30*3f982cf4SFabien Sanglard // The number of packets and bytes received over the timestamp range. 31*3f982cf4SFabien Sanglard uint64_t packets_received = 0; 32*3f982cf4SFabien Sanglard uint64_t bytes_received = 0; 33*3f982cf4SFabien Sanglard 34*3f982cf4SFabien Sanglard // The maximum number of connections over the timestamp range. The 35*3f982cf4SFabien Sanglard // latter two fields break this down by connections to ipv4 and ipv6 36*3f982cf4SFabien Sanglard // endpoints. 37*3f982cf4SFabien Sanglard size_t max_connections = 0; 38*3f982cf4SFabien Sanglard size_t max_ipv4_connections = 0; 39*3f982cf4SFabien Sanglard size_t max_ipv6_connections = 0; 40*3f982cf4SFabien Sanglard }; 41*3f982cf4SFabien Sanglard 42*3f982cf4SFabien Sanglard } // namespace osp 43*3f982cf4SFabien Sanglard } // namespace openscreen 44*3f982cf4SFabien Sanglard 45*3f982cf4SFabien Sanglard #endif // OSP_PUBLIC_NETWORK_METRICS_H_ 46