blob: 2e303c902e4f941adbdeb7eda19b951b684f6822 [file] [log] [blame]
schneiderklausd8197df2019-03-16 11:31:40 -07001/*
Davide Pesaventob3570c62022-02-19 19:19:00 -05002 * Copyright (c) 2016-2022, Regents of the University of California,
schneiderklausd8197df2019-03-16 11:31:40 -07003 * Colorado State University,
4 * University Pierre & Marie Curie, Sorbonne University.
Weiwei Liu245d7912016-07-28 00:04:25 -07005 *
6 * This file is part of ndn-tools (Named Data Networking Essential Tools).
7 * See AUTHORS.md for complete list of ndn-tools authors and contributors.
8 *
9 * ndn-tools is free software: you can redistribute it and/or modify it under the terms
10 * of the GNU General Public License as published by the Free Software Foundation,
11 * either version 3 of the License, or (at your option) any later version.
12 *
13 * ndn-tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
14 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along with
18 * ndn-tools, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
19 *
20 * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
21 *
22 * @author Weiwei Liu
23 */
24
schneiderklausd8197df2019-03-16 11:31:40 -070025#include "statistics-collector.hpp"
Weiwei Liu245d7912016-07-28 00:04:25 -070026
Davide Pesaventob3570c62022-02-19 19:19:00 -050027namespace ndn::chunks {
Weiwei Liu245d7912016-07-28 00:04:25 -070028
Davide Pesavento70576402019-06-07 16:42:21 -040029StatisticsCollector::StatisticsCollector(PipelineInterestsAdaptive& pipeline,
Weiwei Liu245d7912016-07-28 00:04:25 -070030 std::ostream& osCwnd, std::ostream& osRtt)
31 : m_osCwnd(osCwnd)
32 , m_osRtt(osRtt)
33{
34 m_osCwnd << "time\tcwndsize\n";
35 m_osRtt << "segment\trtt\trttvar\tsrtt\trto\n";
Davide Pesavento5e3773d2019-08-22 15:35:08 -040036
37 pipeline.afterCwndChange.connect([this] (time::nanoseconds timeElapsed, double cwnd) {
38 m_osCwnd << timeElapsed.count() / 1e9 << '\t' << cwnd << '\n';
39 });
40
41 pipeline.afterRttMeasurement.connect([this] (const auto& sample) {
42 m_osRtt << sample.segNum << '\t'
43 << sample.rtt.count() / 1e6 << '\t'
44 << sample.rttVar.count() / 1e6 << '\t'
45 << sample.sRtt.count() / 1e6 << '\t'
46 << sample.rto.count() / 1e6 << '\n';
47 });
Weiwei Liu245d7912016-07-28 00:04:25 -070048}
49
Davide Pesaventob3570c62022-02-19 19:19:00 -050050} // namespace ndn::chunks