blob: c93b93b54f3a0211398d0887d9c44e6086cb3692 [file] [log] [blame]
Alejandro Gil Torrese0d20482016-03-06 23:56:19 -06001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
Davide Pesaventoe4edb392020-12-06 14:05:45 -05002/*
3 * Copyright (c) 2014-2020, The University of Memphis,
Alejandro Gil Torrese0d20482016-03-06 23:56:19 -06004 * Regents of the University of California,
5 * Arizona Board of Regents.
6 *
7 * This file is part of NLSR (Named-data Link State Routing).
8 * See AUTHORS.md for complete list of NLSR authors and contributors.
9 *
10 * NLSR is free software: you can redistribute it and/or modify it under the terms
11 * of the GNU General Public License as published by the Free Software Foundation,
12 * either version 3 of the License, or (at your option) any later version.
13 *
14 * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
15 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16 * PURPOSE. See the GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License along with
19 * NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
20 **/
21
22#ifndef NLSR_STATISTICS_HPP
23#define NLSR_STATISTICS_HPP
24
25#include <map>
Davide Pesaventoe4edb392020-12-06 14:05:45 -050026#include <ostream>
Alejandro Gil Torrese0d20482016-03-06 23:56:19 -060027
28namespace nlsr {
29
30class Statistics
31{
Alejandro Gil Torrese0d20482016-03-06 23:56:19 -060032public:
33 enum class PacketType {
34 SENT_HELLO_INTEREST,
35 SENT_HELLO_DATA,
36 RCV_HELLO_INTEREST,
37 RCV_HELLO_DATA,
38 SENT_LSA_INTEREST,
39 SENT_ADJ_LSA_INTEREST,
40 SENT_COORD_LSA_INTEREST,
41 SENT_NAME_LSA_INTEREST,
42 SENT_LSA_DATA,
43 SENT_ADJ_LSA_DATA,
44 SENT_COORD_LSA_DATA,
45 SENT_NAME_LSA_DATA,
46 RCV_LSA_INTEREST,
47 RCV_ADJ_LSA_INTEREST,
48 RCV_COORD_LSA_INTEREST,
49 RCV_NAME_LSA_INTEREST,
50 RCV_LSA_DATA,
51 RCV_ADJ_LSA_DATA,
52 RCV_COORD_LSA_DATA,
53 RCV_NAME_LSA_DATA
54 };
55
56 size_t
57 get(PacketType) const;
58
59 void
Davide Pesaventoe4edb392020-12-06 14:05:45 -050060 increment(PacketType);
Alejandro Gil Torrese0d20482016-03-06 23:56:19 -060061
62 void
Davide Pesaventoe4edb392020-12-06 14:05:45 -050063 resetAll();
Alejandro Gil Torrese0d20482016-03-06 23:56:19 -060064
65 const std::map<PacketType,int>&
66 getCounter() const
67 {
68 return m_packetCounter;
69 }
70
71private:
Davide Pesaventoe4edb392020-12-06 14:05:45 -050072 std::map<PacketType, int> m_packetCounter;
Alejandro Gil Torrese0d20482016-03-06 23:56:19 -060073};
74
75std::ostream&
76operator<<(std::ostream&, const Statistics& stats);
77
78} // namespace nlsr
79
80#endif // NLSR_STATISTICS_HPP