/usr/include/ns3.26/ns3/file-helper.h is in libns3-dev 3.26+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2013 University of Washington
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Mitch Watrous (watrous@u.washington.edu)
*/
#ifndef FILE_HELPER_H
#define FILE_HELPER_H
#include <map>
#include <string>
#include "ns3/object-factory.h"
#include "ns3/ptr.h"
#include "ns3/probe.h"
#include "ns3/file-aggregator.h"
#include "ns3/time-series-adaptor.h"
namespace ns3 {
/**
* \ingroup stats
* \brief Helper class used to put data values into a file.
**/
class FileHelper
{
public:
/**
* Constructs a file helper that will create a space separated file
* named "file-helper.txt" unless it is later configured otherwise.
*/
FileHelper ();
/**
* \param outputFileNameWithoutExtension name of output file to
* write with no extension
* \param fileType type of file to write.
*
* Constructs a file helper that will create a file named
* outputFileNameWithoutExtension plus possible extra information
* from wildcard matches plus ".txt" with values printed as
* specified by fileType. The default file type is space-separated.
*/
FileHelper (const std::string &outputFileNameWithoutExtension,
enum FileAggregator::FileType fileType = FileAggregator::SPACE_SEPARATED);
virtual ~FileHelper ();
/**
* \param outputFileNameWithoutExtension name of output file to
* write with no extension
* \param fileType type of file to write.
*
* Configures file related parameters for this file helper so that
* it will create a file named outputFileNameWithoutExtension plus
* possible extra information from wildcard matches plus ".txt" with
* values printed as specified by fileType. The default file type
* is space-separated.
*/
void ConfigureFile (const std::string &outputFileNameWithoutExtension,
enum FileAggregator::FileType fileType = FileAggregator::SPACE_SEPARATED);
/**
* \param typeId the type ID for the probe used when it is created.
* \param path Config path for underlying trace source to be probed
* \param probeTraceSource the probe trace source to access.
*
* Creates output files generated by hooking the ns-3 trace source
* with a probe, and then writing the values from the
* probeTraceSource. The output file names will have the text stored
* in m_outputFileNameWithoutExtension plus ".txt", and will consist
* of the 'newValue' at each timestamp.
*
* This method will create one or more probes according to the TypeId
* provided, connect the probe(s) to the trace source specified by
* the config path, and hook the probeTraceSource(s) to the downstream
* aggregator.
*
* If the config path has more than one match in the system
* (e.g. there is a wildcard), then one output file for each match
* will be created. The output file names will contain the text in
* m_outputFileNameWithoutExtension plus the matched characters for
* each of the wildcards in the config path, separated by dashes,
* plus ".txt". For example, if the value in
* m_outputFileNameWithoutExtension is the string
* "packet-byte-count", and there are two wildcards in the path,
* then output file names like "packet-byte-count-0-0.txt" or
* "packet-byte-count-12-9.txt" will be possible as names for the
* files that will be created.
*
* A fatal error will result if an unknown probe type is used.
*/
void WriteProbe (const std::string &typeId,
const std::string &path,
const std::string &probeTraceSource);
/**
* \param adaptorName the timeSeriesAdaptor's name.
*
* \brief Adds a time series adaptor to be used to write the file.
*/
void AddTimeSeriesAdaptor (const std::string &adaptorName);
/**
* \param aggregatorName the aggregator's name.
* \param outputFileName name of the file to write.
* \param onlyOneAggregator indicates if more than one aggregator
* should be created or not.
*
* \brief Adds an aggregator to be used to write values to files.
*/
void AddAggregator (const std::string &aggregatorName,
const std::string &outputFileName,
bool onlyOneAggregator);
/**
* \param probeName the probe's name.
* \return Ptr to the probe
* \brief Gets the specified probe.
*/
Ptr<Probe> GetProbe (std::string probeName) const;
/**
* \return Ptr to a FileAggregator object
* \brief Gets the single aggregator that is always constructed.
*
* This function is non-const because an aggregator may be lazily
* created by this method.
*/
Ptr<FileAggregator> GetAggregatorSingle ();
/**
* \param aggregatorName name for aggregator.
* \param outputFileName name of output file to write.
* \return Ptr to a FileAggregator object
* \brief Gets one of the multiple aggregators from the map.
*
* This function is non-const because an aggregator may be lazily
* created by this method.
*/
Ptr<FileAggregator> GetAggregatorMultiple (const std::string &aggregatorName,
const std::string &outputFileName);
/**
* \param heading the heading string.
*
* \brief Sets the heading string that will be printed on the first
* line of the file.
*
* Note that the heading string will only be printed if it has been
* set by calling this function.
*/
void SetHeading (const std::string &heading);
/**
* \param format the 1D format string.
*
* \brief Sets the 1D format string for the C-style sprintf()
* function.
*/
void Set1dFormat (const std::string &format);
/**
* \param format the 2D format string.
*
* \brief Sets the 2D format string for the C-style sprintf()
* function.
*/
void Set2dFormat (const std::string &format);
/**
* \param format the 3D format string.
*
* \brief Sets the 3D format string for the C-style sprintf()
* function.
*/
void Set3dFormat (const std::string &format);
/**
* \param format the 4D format string.
*
* \brief Sets the 4D format string for the C-style sprintf()
* function.
*/
void Set4dFormat (const std::string &format);
/**
* \param format the 5D format string.
*
* \brief Sets the 5D format string for the C-style sprintf()
* function.
*/
void Set5dFormat (const std::string &format);
/**
* \param format the 6D format string.
*
* \brief Sets the 6D format string for the C-style sprintf()
* function.
*/
void Set6dFormat (const std::string &format);
/**
* \param format the 7D format string.
*
* \brief Sets the 7D format string for the C-style sprintf()
* function.
*/
void Set7dFormat (const std::string &format);
/**
* \param format the 8D format string.
*
* \brief Sets the 8D format string for the C-style sprintf()
* function.
*/
void Set8dFormat (const std::string &format);
/**
* \param format the 9D format string.
*
* \brief Sets the 9D format string for the C-style sprintf()
* function.
*/
void Set9dFormat (const std::string &format);
/**
* \param format the 10D format string.
*
* \brief Sets the 10D format string for the C-style sprintf()
* function.
*/
void Set10dFormat (const std::string &format);
private:
/**
* \param typeId the type ID for the probe used when it is created.
* \param probeName the probe's name.
* \param path Config path to access the probe
*
* \brief Adds a probe to be used to write values to files.
*/
void AddProbe (const std::string &typeId,
const std::string &probeName,
const std::string &path);
/**
* \param typeId the type ID for the probe used when it is created.
* \param matchIdentifier this string is used to make the probe's
* context be unique.
* \param path Config path to access the probe.
* \param probeTraceSource the probe trace source to access.
* \param outputFileNameWithoutExtension name of output file to
* write with no extension
* \param onlyOneAggregator indicates if more than one aggregator
* should be created or not.
*
* \brief Connects the probe to the aggregator.
*
* A fatal error will result if an unknown probe type is used.
*/
void ConnectProbeToAggregator (const std::string &typeId,
const std::string &matchIdentifier,
const std::string &path,
const std::string &probeTraceSource,
const std::string &outputFileNameWithoutExtension,
bool onlyOneAggregator);
/// Used to create the probes and collectors as they are added.
ObjectFactory m_factory;
/// The single aggregator that is always created in the constructor.
Ptr<FileAggregator> m_aggregator;
/// Maps aggregator names to aggregators when multiple aggregators
/// are needed.
std::map<std::string, Ptr<FileAggregator> > m_aggregatorMap;
/// Maps probe names to probes.
std::map<std::string, std::pair <Ptr<Probe>, std::string> > m_probeMap;
/// Maps time series adaptor names to time series adaptors.
std::map<std::string, Ptr<TimeSeriesAdaptor> > m_timeSeriesAdaptorMap;
/// Number of file probes that have been created.
uint32_t m_fileProbeCount;
/// Determines the kind of file written by the aggregator.
enum FileAggregator::FileType m_fileType;
/// The name of the output file to created without its extension.
std::string m_outputFileNameWithoutExtension;
/// Indicates if the heading line for the file has been set.
bool m_hasHeadingBeenSet;
/// Heading line for the outputfile.
std::string m_heading;
std::string m_1dFormat; //!< Format string for 1D format C-style sprintf() function.
std::string m_2dFormat; //!< Format string for 2D format C-style sprintf() function.
std::string m_3dFormat; //!< Format string for 3D format C-style sprintf() function.
std::string m_4dFormat; //!< Format string for 4D format C-style sprintf() function.
std::string m_5dFormat; //!< Format string for 5D format C-style sprintf() function.
std::string m_6dFormat; //!< Format string for 6D format C-style sprintf() function.
std::string m_7dFormat; //!< Format string for 7D format C-style sprintf() function.
std::string m_8dFormat; //!< Format string for 8D format C-style sprintf() function.
std::string m_9dFormat; //!< Format string for 9D format C-style sprintf() function.
std::string m_10dFormat; //!< Format string for 10D format C-style sprintf() function.
}; // class FileHelper
} // namespace ns3
#endif // FILE_HELPER_H
|