|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
26 #include "ns3/abort.h"
28 #include "ns3/config.h"
29 #include "ns3/get-wildcard-matches.h"
39 m_outputFileNameWithoutExtension (
"file-helper"),
40 m_hasHeadingBeenSet (false)
52 m_fileType (fileType),
53 m_outputFileNameWithoutExtension (outputFileNameWithoutExtension),
54 m_hasHeadingBeenSet (false)
77 " may be destroyed if no references remain.");
91 const std::string &path,
92 const std::string &probeTraceSource)
96 std::string pathWithoutLastToken;
97 std::string lastToken;
100 bool pathHasNoWildcards = path.find (
"*") == std::string::npos;
103 size_t lastSlash = path.find_last_of (
"/");
104 if (lastSlash == std::string::npos)
106 pathWithoutLastToken = path;
112 pathWithoutLastToken = path.substr (0, lastSlash);
115 lastToken = path.substr (lastSlash + 1, std::string::npos);
121 uint32_t matchCount = matches.
GetN ();
124 std::string matchIdentifier;
127 bool onlyOneAggregator;
130 if (matchCount == 1 && pathHasNoWildcards)
135 matchIdentifier =
"0";
136 onlyOneAggregator =
true;
144 else if (matchCount > 0)
147 for (uint32_t i = 0; i < matchCount; i++)
150 std::ostringstream matchIdentifierStream;
151 matchIdentifierStream << i;
152 matchIdentifier = matchIdentifierStream.str ();
153 onlyOneAggregator =
false;
157 std::string wildcardSeparator =
"-";
181 const std::string &probeName,
182 const std::string &path)
203 probe->SetName (probeName);
206 probe->ConnectByPath (path);
212 m_probeMap[probeName] = std::make_pair (probe, typeId);
223 NS_ABORT_MSG (
"That time series adaptor has already been added");
230 timeSeriesAdaptor->Enable ();
238 const std::string &outputFileName,
239 bool onlyOneAggregator)
241 NS_LOG_FUNCTION (
this << aggregatorName << outputFileName << onlyOneAggregator);
246 NS_ABORT_MSG (
"That file aggregator has already been added");
251 if (onlyOneAggregator)
262 CreateObject<FileAggregator> (outputFileName,
m_fileType);
277 multipleAggregator->SetHeading (
m_heading);
280 multipleAggregator->Enable ();
292 std::map<std::string, std::pair <Ptr<Probe>, std::string> >::const_iterator mapIterator =
m_probeMap.find (probeName);
297 return mapIterator->second.first;
341 const std::string &outputFileName)
353 bool onlyOneAggregator =
false;
452 const std::string &matchIdentifier,
453 const std::string &path,
454 const std::string &probeTraceSource,
455 const std::string &outputFileNameWithoutExtension,
456 bool onlyOneAggregator)
458 NS_LOG_FUNCTION (
this << typeId << matchIdentifier << path << probeTraceSource
459 << outputFileNameWithoutExtension << onlyOneAggregator);
465 std::ostringstream probeNameStream;
467 std::string probeName = probeNameStream.str ();
470 std::string probeContext = probeName
471 +
"/" + matchIdentifier +
"/" + probeTraceSource;
485 m_probeMap[probeName].first->TraceConnectWithoutContext
492 m_probeMap[probeName].first->TraceConnectWithoutContext
499 m_probeMap[probeName].first->TraceConnectWithoutContext
506 m_probeMap[probeName].first->TraceConnectWithoutContext
513 m_probeMap[probeName].first->TraceConnectWithoutContext
520 m_probeMap[probeName].first->TraceConnectWithoutContext
527 m_probeMap[probeName].first->TraceConnectWithoutContext
534 m_probeMap[probeName].first->TraceConnectWithoutContext
541 m_probeMap[probeName].first->TraceConnectWithoutContext
548 m_probeMap[probeName].first->TraceConnectWithoutContext
560 std::string outputFileName = outputFileNameWithoutExtension +
".txt";
561 AddAggregator (probeContext, outputFileName, onlyOneAggregator);
564 std::string adaptorTraceSource =
"Output";
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
void AddProbe(const std::string &typeId, const std::string &probeName, const std::string &path)
Adds a probe to be used to write values to files.
Ptr< FileAggregator > GetAggregatorSingle()
Gets the single aggregator that is always constructed.
void SetHeading(const std::string &heading)
Sets the heading string that will be printed on the first line of the file.
std::map< std::string, Ptr< TimeSeriesAdaptor > > m_timeSeriesAdaptorMap
Maps time series adaptor names to time series adaptors.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::string m_9dFormat
Format string for 9D format C-style sprintf() function.
void Set9dFormat(const std::string &format)
Sets the 9D format string for the C-style sprintf() function.
std::string m_outputFileNameWithoutExtension
The name of the output file to created without its extension.
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
void TraceSinkUinteger32(uint32_t oldData, uint32_t newData)
Trace sink for receiving data from uint32_t valued trace sources.
void Set7dFormat(const std::string &format)
Sets the 7D format string for the C-style sprintf() function.
#define NS_LOG_WARN(msg)
Use NS_LOG to output a message of level LOG_WARN.
void Set5dFormat(const std::string &format)
Sets the 5D format string for the C-style sprintf() function.
std::string m_8dFormat
Format string for 8D format C-style sprintf() function.
void TraceSinkUinteger16(uint16_t oldData, uint16_t newData)
Trace sink for receiving data from uint16_t valued trace sources.
std::string m_heading
Heading line for the outputfile.
void Set1dFormat(const std::string &format)
Sets the 1D format string for the C-style sprintf() function.
MatchContainer LookupMatches(std::string path)
FileHelper()
Constructs a file helper that will create a space separated file named "file-helper....
void Write2d(std::string context, double v1, double v2)
Writes 2 values to the file.
std::map< std::string, std::pair< Ptr< Probe >, std::string > > m_probeMap
Maps probe names to probes.
std::string m_5dFormat
Format string for 5D format C-style sprintf() function.
hold a set of objects which match a specific search string.
Ptr< Probe > GetProbe(std::string probeName) const
Gets the specified probe.
std::string m_6dFormat
Format string for 6D format C-style sprintf() function.
std::map< std::string, Ptr< FileAggregator > > m_aggregatorMap
Maps aggregator names to aggregators when multiple aggregators are needed.
Smart pointer class similar to boost::intrusive_ptr.
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
void ConfigureFile(const std::string &outputFileNameWithoutExtension, enum FileAggregator::FileType fileType=FileAggregator::SPACE_SEPARATED)
void Set3dFormat(const std::string &format)
Sets the 3D format string for the C-style sprintf() function.
void Set4dFormat(const std::string &format)
Sets the 4D format string for the C-style sprintf() function.
std::string m_10dFormat
Format string for 10D format C-style sprintf() function.
Ptr< FileAggregator > m_aggregator
The single aggregator that is always created in the constructor.
std::string GetMatchedPath(uint32_t i) const
bool m_hasHeadingBeenSet
Indicates if the heading line for the file has been set.
void Set2dFormat(const std::string &format)
Sets the 2D format string for the C-style sprintf() function.
void TraceSinkBoolean(bool oldData, bool newData)
Trace sink for receiving data from bool valued trace sources.
FileType
The type of file written by the aggregator.
ObjectFactory m_factory
Used to create the probes and collectors as they are added.
uint32_t m_fileProbeCount
Number of file probes that have been created.
enum FileAggregator::FileType m_fileType
Determines the kind of file written by the aggregator.
Callback< R, Ts... > MakeCallback(R(T::*memPtr)(Ts...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
void Set8dFormat(const std::string &format)
Sets the 8D format string for the C-style sprintf() function.
void TraceSinkUinteger8(uint8_t oldData, uint8_t newData)
Trace sink for receiving data from uint8_t valued trace sources.
void WriteProbe(const std::string &typeId, const std::string &path, const std::string &probeTraceSource)
std::string m_4dFormat
Format string for 4D format C-style sprintf() function.
std::size_t GetN(void) const
std::string m_1dFormat
Format string for 1D format C-style sprintf() function.
void Set6dFormat(const std::string &format)
Sets the 6D format string for the C-style sprintf() function.
void AddTimeSeriesAdaptor(const std::string &adaptorName)
Adds a time series adaptor to be used to write the file.
std::string m_7dFormat
Format string for 7D format C-style sprintf() function.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
This aggregator sends values it receives to a file.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
std::string m_3dFormat
Format string for 3D format C-style sprintf() function.
Ptr< Object > Create(void) const
Create an Object instance of the configured TypeId.
void AddAggregator(const std::string &aggregatorName, const std::string &outputFileName, bool onlyOneAggregator)
Adds an aggregator to be used to write values to files.
void Set10dFormat(const std::string &format)
Sets the 10D format string for the C-style sprintf() function.
std::string GetWildcardMatches(const std::string &configPath, const std::string &matchedPath, const std::string &wildcardSeparator)
Returns the text matches from the matched path for each of the wildcards in the Config path,...
Ptr< FileAggregator > GetAggregatorMultiple(const std::string &aggregatorName, const std::string &outputFileName)
Gets one of the multiple aggregators from the map.
void ConnectProbeToAggregator(const std::string &typeId, const std::string &matchIdentifier, const std::string &path, const std::string &probeTraceSource, const std::string &outputFileNameWithoutExtension, bool onlyOneAggregator)
Connects the probe to the aggregator.
std::string m_2dFormat
Format string for 2D format C-style sprintf() function.
void TraceSinkDouble(double oldData, double newData)
Trace sink for receiving data from double valued trace sources.
#define NS_ABORT_MSG(msg)
Unconditional abnormal program termination with a message.