A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
flow-monitor-helper.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#ifndef FLOW_MONITOR_HELPER_H
20#define FLOW_MONITOR_HELPER_H
21
22#include "ns3/flow-classifier.h"
23#include "ns3/flow-monitor.h"
24#include "ns3/node-container.h"
25#include "ns3/object-factory.h"
26
27#include <string>
28
29namespace ns3
30{
31
32class AttributeValue;
33class Ipv4FlowClassifier;
34class Ipv6FlowClassifier;
35
36/**
37 * \ingroup flow-monitor
38 * \brief Helper to enable IP flow monitoring on a set of Nodes
39 */
41{
42 public:
45
46 // Delete copy constructor and assignment operator to avoid misuse
49
50 /**
51 * \brief Set an attribute for the to-be-created FlowMonitor object
52 * \param n1 attribute name
53 * \param v1 attribute value
54 */
55 void SetMonitorAttribute(std::string n1, const AttributeValue& v1);
56
57 /**
58 * \brief Enable flow monitoring on a set of nodes
59 * \param nodes A NodeContainer holding the set of nodes to work with.
60 * \returns a pointer to the FlowMonitor object
61 */
63 /**
64 * \brief Enable flow monitoring on a single node
65 * \param node A Ptr<Node> to the node on which to enable flow monitoring.
66 * \returns a pointer to the FlowMonitor object
67 */
69 /**
70 * \brief Enable flow monitoring on all nodes
71 * \returns a pointer to the FlowMonitor object
72 */
74
75 /**
76 * \brief Retrieve the FlowMonitor object created by the Install* methods
77 * \returns a pointer to the FlowMonitor object
78 */
80
81 /**
82 * \brief Retrieve the FlowClassifier object for IPv4 created by the Install* methods
83 * \returns a pointer to the FlowClassifier object
84 */
86
87 /**
88 * \brief Retrieve the FlowClassifier object for IPv6 created by the Install* methods
89 * \returns a pointer to the FlowClassifier object
90 */
92
93 /**
94 * Serializes the results to an std::ostream in XML format
95 * \param os the output stream
96 * \param indent number of spaces to use as base indentation level
97 * \param enableHistograms if true, include also the histograms in the output
98 * \param enableProbes if true, include also the per-probe/flow pair statistics in the output
99 */
100 void SerializeToXmlStream(std::ostream& os,
101 uint16_t indent,
102 bool enableHistograms,
103 bool enableProbes);
104
105 /**
106 * Same as SerializeToXmlStream, but returns the output as a std::string
107 * \param indent number of spaces to use as base indentation level
108 * \param enableHistograms if true, include also the histograms in the output
109 * \param enableProbes if true, include also the per-probe/flow pair statistics in the output
110 * \return the XML output as string
111 */
112 std::string SerializeToXmlString(uint16_t indent, bool enableHistograms, bool enableProbes);
113
114 /**
115 * Same as SerializeToXmlStream, but writes to a file instead
116 * \param fileName name or path of the output file that will be created
117 * \param enableHistograms if true, include also the histograms in the output
118 * \param enableProbes if true, include also the per-probe/flow pair statistics in the output
119 */
120 void SerializeToXmlFile(std::string fileName, bool enableHistograms, bool enableProbes);
121
122 private:
123 ObjectFactory m_monitorFactory; //!< Object factory
124 Ptr<FlowMonitor> m_flowMonitor; //!< the FlowMonitor object
125 Ptr<FlowClassifier> m_flowClassifier4; //!< the FlowClassifier object for IPv4
126 Ptr<FlowClassifier> m_flowClassifier6; //!< the FlowClassifier object for IPv6
127};
128
129} // namespace ns3
130
131#endif /* FLOW_MONITOR_HELPER_H */
Hold a value for an Attribute.
Definition: attribute.h:70
Helper to enable IP flow monitoring on a set of Nodes.
Ptr< FlowClassifier > m_flowClassifier6
the FlowClassifier object for IPv6
FlowMonitorHelper & operator=(const FlowMonitorHelper &)=delete
FlowMonitorHelper(const FlowMonitorHelper &)=delete
std::string SerializeToXmlString(uint16_t indent, bool enableHistograms, bool enableProbes)
Same as SerializeToXmlStream, but returns the output as a std::string.
Ptr< FlowClassifier > GetClassifier6()
Retrieve the FlowClassifier object for IPv6 created by the Install* methods.
Ptr< FlowClassifier > GetClassifier()
Retrieve the FlowClassifier object for IPv4 created by the Install* methods.
void SetMonitorAttribute(std::string n1, const AttributeValue &v1)
Set an attribute for the to-be-created FlowMonitor object.
Ptr< FlowMonitor > InstallAll()
Enable flow monitoring on all nodes.
void SerializeToXmlStream(std::ostream &os, uint16_t indent, bool enableHistograms, bool enableProbes)
Serializes the results to an std::ostream in XML format.
Ptr< FlowMonitor > GetMonitor()
Retrieve the FlowMonitor object created by the Install* methods.
Ptr< FlowClassifier > m_flowClassifier4
the FlowClassifier object for IPv4
Ptr< FlowMonitor > Install(NodeContainer nodes)
Enable flow monitoring on a set of nodes.
ObjectFactory m_monitorFactory
Object factory.
void SerializeToXmlFile(std::string fileName, bool enableHistograms, bool enableProbes)
Same as SerializeToXmlStream, but writes to a file instead.
Ptr< FlowMonitor > m_flowMonitor
the FlowMonitor object
keep track of a set of node pointers.
Instantiate subclasses of ns3::Object.
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:77
NodeContainer nodes
Every class exported by the ns3 library is enclosed in the ns3 namespace.