A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
flow-classifier.h
Go to the documentation of this file.
1//
2// Copyright (c) 2009 INESC Porto
3//
4// This program is free software; you can redistribute it and/or modify
5// it under the terms of the GNU General Public License version 2 as
6// published by the Free Software Foundation;
7//
8// This program is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11// GNU General Public License for more details.
12//
13// You should have received a copy of the GNU General Public License
14// along with this program; if not, write to the Free Software
15// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16//
17// Author: Gustavo J. A. M. Carneiro <gjc@inescporto.pt> <gjcarneiro@gmail.com>
18//
19
20#ifndef FLOW_CLASSIFIER_H
21#define FLOW_CLASSIFIER_H
22
23#include "ns3/simple-ref-count.h"
24
25#include <ostream>
26
27namespace ns3
28{
29
30/**
31 * \ingroup flow-monitor
32 * \brief Abstract identifier of a packet flow
33 */
35
36/**
37 * \ingroup flow-monitor
38 * \brief Abstract identifier of a packet within a flow
39 */
41
42/// \ingroup flow-monitor
43/// Provides a method to translate raw packet data into abstract
44/// `flow identifier` and `packet identifier` parameters. These
45/// identifiers are unsigned 32-bit integers that uniquely identify a
46/// flow and a packet within that flow, respectively, for the whole
47/// simulation, regardless of the point in which the packet was
48/// captured. These abstract identifiers are used in the
49/// communication between FlowProbe and FlowMonitor, and all collected
50/// statistics reference only those abstract identifiers in order to
51/// keep the core architecture generic and not tied down to any
52/// particular flow capture method or classification system.
53class FlowClassifier : public SimpleRefCount<FlowClassifier>
54{
55 private:
56 FlowId m_lastNewFlowId; //!< Last known Flow ID
57
58 public:
60 virtual ~FlowClassifier();
61
62 // Delete copy constructor and assignment operator to avoid misuse
65
66 /// Serializes the results to an std::ostream in XML format
67 /// \param os the output stream
68 /// \param indent number of spaces to use as base indentation level
69 virtual void SerializeToXmlStream(std::ostream& os, uint16_t indent) const = 0;
70
71 protected:
72 /// Returns a new, unique Flow Identifier
73 /// \returns a new FlowId
75
76 ///
77 /// \brief Add a number of spaces for indentation purposes.
78 /// \param os The stream to write to.
79 /// \param level The number of spaces to add.
80 void Indent(std::ostream& os, uint16_t level) const;
81};
82
83inline void
84FlowClassifier::Indent(std::ostream& os, uint16_t level) const
85{
86 for (uint16_t __xpto = 0; __xpto < level; __xpto++)
87 {
88 os << ' ';
89 }
90}
91
92} // namespace ns3
93
94#endif /* FLOW_CLASSIFIER_H */
Provides a method to translate raw packet data into abstract flow identifier and packet identifier pa...
void Indent(std::ostream &os, uint16_t level) const
Add a number of spaces for indentation purposes.
FlowClassifier & operator=(const FlowClassifier &)=delete
FlowId GetNewFlowId()
Returns a new, unique Flow Identifier.
FlowClassifier(const FlowClassifier &)=delete
FlowId m_lastNewFlowId
Last known Flow ID.
virtual void SerializeToXmlStream(std::ostream &os, uint16_t indent) const =0
Serializes the results to an std::ostream in XML format.
A template-based reference counting class.
uint32_t FlowId
Abstract identifier of a packet flow.
uint32_t FlowPacketId
Abstract identifier of a packet within a flow.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Helper to indent output a specified number of steps.
Definition: test.cc:648