blob: 802769d05634f6552b64274c01aab121e7e8c7f4 [file] [log] [blame]
Alejandro Gil Torrese0d20482016-03-06 23:56:19 -06001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
Junxiao Shi43f37a02023-08-09 00:09:00 +00002/*
3 * Copyright (c) 2014-2023, The University of Memphis,
Alejandro Gil Torrese0d20482016-03-06 23:56:19 -06004 * Regents of the University of California
5 *
6 * This file is part of NLSR (Named-data Link State Routing).
7 * See AUTHORS.md for complete list of NLSR authors and contributors.
8 *
9 * NLSR 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 * NLSR 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 * NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
19 **/
20
21#ifndef NLSR_STATS_COLLECTOR_HPP
22#define NLSR_STATS_COLLECTOR_HPP
23
24#include "statistics.hpp"
25#include "lsdb.hpp"
26#include "hello-protocol.hpp"
27#include <ndn-cxx/util/signal.hpp>
28
29namespace nlsr {
30
Junxiao Shi43f37a02023-08-09 00:09:00 +000031/**
32 * \brief a class designed to handle statistical signals in nlsr
33 */
Alejandro Gil Torrese0d20482016-03-06 23:56:19 -060034class StatsCollector
35{
36public:
37
38 StatsCollector(Lsdb& lsdb, HelloProtocol& hp);
39
40 ~StatsCollector();
41
42 Statistics&
43 getStatistics()
44 {
45 return m_stats;
46 }
47
48private:
49
50 /*!
51 * \brief: increments a Statistics::PacketType
52 *
53 * \param: pType is an enum value corresponding to a Statistics::PacketType
54 *
55 * This takes in a Statistics::PacketType emitted by a signal and increments
56 * the value in m_stats.
57 */
58 void
59 statsIncrement(Statistics::PacketType pType);
60
61private:
62
63 Lsdb& m_lsdb;
64 HelloProtocol& m_hp;
65 Statistics m_stats;
66
Junxiao Shi43f37a02023-08-09 00:09:00 +000067 ndn::signal::ScopedConnection m_lsaIncrementConn;
68 ndn::signal::ScopedConnection m_helloIncrementConn;
Alejandro Gil Torrese0d20482016-03-06 23:56:19 -060069};
70
71} // namespace nlsr
72
73#endif // NLSR_STATS_COLLECTOR_HPP