Line data Source code
1 : // 2 : // Copyright (c) 2014 Juniper Networks, Inc. All rights reserved. 3 : // Copyright Contributors to the OpenSDN project 4 : // 5 : 6 : #include <sandesh/sandesh_trace.h> 7 : 8 : #include "base/util.h" 9 : #include "io/io_types.h" 10 : #include "io/io_utils.h" 11 : 12 : namespace io { 13 : 14 47175 : SocketStats::SocketStats() { 15 47175 : read_calls = 0; 16 47176 : read_bytes = 0; 17 47176 : read_errors = 0; 18 47178 : write_calls = 0; 19 47175 : write_bytes = 0; 20 47178 : write_errors = 0; 21 47176 : write_block_start_time = 0; 22 47177 : write_blocked = 0; 23 47178 : write_blocked_duration_usecs = 0; 24 47177 : read_block_start_time = 0; 25 47175 : read_blocked = 0; 26 47178 : read_blocked_duration_usecs = 0; 27 47171 : } 28 : 29 673 : void SocketStats::GetRxStats(SocketIOStats *socket_stats) const { 30 673 : socket_stats->calls = read_calls; 31 673 : socket_stats->bytes = read_bytes; 32 673 : if (read_calls) { 33 251 : socket_stats->average_bytes = 34 251 : static_cast<double>(read_bytes / read_calls); 35 : } 36 673 : socket_stats->blocked_count = read_blocked; 37 1346 : socket_stats->blocked_duration = duration_usecs_to_string( 38 673 : read_blocked_duration_usecs); 39 673 : if (read_blocked) { 40 : socket_stats->average_blocked_duration = 41 4 : duration_usecs_to_string( 42 : read_blocked_duration_usecs/ 43 4 : read_blocked); 44 : } 45 673 : socket_stats->errors = read_errors; 46 673 : } 47 : 48 670 : void SocketStats::GetTxStats(SocketIOStats *socket_stats) const { 49 670 : socket_stats->calls = write_calls; 50 670 : socket_stats->bytes = write_bytes; 51 670 : if (write_calls) { 52 248 : socket_stats->average_bytes = 53 248 : static_cast<double>(write_bytes / write_calls); 54 : } 55 670 : socket_stats->blocked_count = write_blocked; 56 1340 : socket_stats->blocked_duration = duration_usecs_to_string( 57 670 : write_blocked_duration_usecs); 58 670 : if (write_blocked) { 59 : socket_stats->average_blocked_duration = 60 0 : duration_usecs_to_string( 61 : write_blocked_duration_usecs/ 62 0 : write_blocked); 63 : } 64 670 : socket_stats->errors = write_errors; 65 670 : } 66 : 67 : } // namespace io