blob: 435938fca5d3bf8c0efdfa7884a627e203db2e8f [file] [log] [blame]
Alejandro Gil Torrese0d20482016-03-06 23:56:19 -06001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
3 * Copyright (c) 2014-2017, The University of Memphis,
4 * 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>
26
27namespace nlsr {
28
29class Statistics
30{
31
32public:
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
60 resetAll();
61
62 void
63 increment(PacketType);
64
65 const std::map<PacketType,int>&
66 getCounter() const
67 {
68 return m_packetCounter;
69 }
70
71private:
72 std::map<PacketType,int> m_packetCounter;
73};
74
75std::ostream&
76operator<<(std::ostream&, const Statistics& stats);
77
78} // namespace nlsr
79
80#endif // NLSR_STATISTICS_HPP