78 NS_LOG_FUNCTION(
this);
84 <<
" is not a valid output type for this statistics.");
94 "EnableContextPrinting",
102 EnumValue(ScalarCollector::INPUT_DATA_TYPE_UINTEGER));
105 EnumValue(ScalarCollector::OUTPUT_TYPE_AVERAGE_PER_SAMPLE));
109 &MultiFileAggregator::Write1d);
112 NodeContainer uts = Singleton<SatTopology>::Get()->GetUtNodes();
113 for (NodeContainer::Iterator it = uts.Begin(); it != uts.End(); ++it)
115 InstallProbe(*it, &ScalarCollector::TraceSinkUinteger32);
132 EnumValue(UnitConversionCollector::TRANSPARENT));
136 &MultiFileAggregator::Write2d);
139 NodeContainer uts = Singleton<SatTopology>::Get()->GetUtNodes();
140 for (NodeContainer::Iterator it = uts.Begin(); it != uts.End(); ++it)
142 InstallProbe(*it, &UnitConversionCollector::TraceSinkUinteger32);
160 DistributionCollector::OutputType_t outputType =
161 DistributionCollector::OUTPUT_TYPE_HISTOGRAM;
164 outputType = DistributionCollector::OUTPUT_TYPE_PROBABILITY;
168 outputType = DistributionCollector::OUTPUT_TYPE_CUMULATIVE;
174 &MultiFileAggregator::Write2d);
177 &MultiFileAggregator::AddContextHeading);
180 &MultiFileAggregator::EnableContextWarning);
183 NodeContainer uts = Singleton<SatTopology>::Get()->GetUtNodes();
184 for (NodeContainer::Iterator it = uts.Begin(); it != uts.End(); ++it)
186 InstallProbe(*it, &DistributionCollector::TraceSinkUinteger32);
195 <<
" is not a valid output type for this statistics.");
205 Ptr<MagisterGnuplotAggregator> plotAggregator =
207 NS_ASSERT(plotAggregator !=
nullptr);
209 plotAggregator->SetLegend(
"Time (in seconds)",
"Resources granted (in bytes)");
210 plotAggregator->Set2dDatasetDefaultStyle(Gnuplot2dDataset::LINES_POINTS);
215 EnumValue(UnitConversionCollector::TRANSPARENT));
221 const std::string context = it->second->GetName();
222 plotAggregator->Add2dDataset(context, context);
226 &MagisterGnuplotAggregator::Write2d);
229 NodeContainer uts = Singleton<SatTopology>::Get()->GetUtNodes();
230 for (NodeContainer::Iterator it = uts.Begin(); it != uts.End(); ++it)
232 InstallProbe(*it, &UnitConversionCollector::TraceSinkUinteger32);
247 Ptr<MagisterGnuplotAggregator> plotAggregator =
249 NS_ASSERT(plotAggregator !=
nullptr);
251 plotAggregator->SetLegend(
"Resources granted (in bytes)",
"Frequency");
252 plotAggregator->Set2dDatasetDefaultStyle(Gnuplot2dDataset::LINES);
256 DistributionCollector::OutputType_t outputType =
257 DistributionCollector::OUTPUT_TYPE_HISTOGRAM;
260 outputType = DistributionCollector::OUTPUT_TYPE_PROBABILITY;
264 outputType = DistributionCollector::OUTPUT_TYPE_CUMULATIVE;
272 const std::string context = it->second->GetName();
273 plotAggregator->Add2dDataset(context, context);
277 &MagisterGnuplotAggregator::Write2d);
280 NodeContainer uts = Singleton<SatTopology>::Get()->GetUtNodes();
281 for (NodeContainer::Iterator it = uts.Begin(); it != uts.End(); ++it)
283 InstallProbe(*it, &DistributionCollector::TraceSinkUinteger32);
290 NS_FATAL_ERROR(
"SatStatsResourcesGrantedHelper - Invalid output type");
300 NS_LOG_FUNCTION(
this << utNode);
302 const int32_t utId =
GetUtId(utNode);
303 NS_ASSERT_MSG(utId > 0,
"Node " << utNode->GetId() <<
" is not a valid UT");
307 std::ostringstream probeName;
309 Ptr<BytesProbe> probe = CreateObject<BytesProbe>();
310 probe->SetName(probeName.str());
313 Ptr<SatNetDevice> satDev = dev->GetObject<
SatNetDevice>();
314 NS_ASSERT(satDev !=
nullptr);
315 Ptr<SatMac> satMac = satDev->GetMac();
316 NS_ASSERT(satMac !=
nullptr);
317 Ptr<SatUtMac> satUtMac = satMac->GetObject<
SatUtMac>();
318 NS_ASSERT(satUtMac !=
nullptr);
321 if (probe->ConnectByObject(
"DaResourcesTrace", satUtMac))
329 NS_LOG_INFO(
this <<
" created probe " << probeName.str() <<
", connected to collector "
332 std::make_pair(probe->GetObject<Probe>(), std::make_pair(utNode, identifier)));
336 NS_LOG_WARN(
this <<
" unable to connect probe " << probeName.str() <<
" to collector "
342 NS_FATAL_ERROR(
"Error connecting to DaResourcesTrace trace source of SatUtMac"
343 <<
" at node ID " << utNode->GetId() <<
" device #" << satDev->GetIfIndex());
352 NS_LOG_FUNCTION(
this);
354 std::map<Ptr<Probe>, std::pair<Ptr<Node>, uint32_t>>::iterator it;
358 Ptr<Probe> probe = it->first;
359 Ptr<Node> node = it->second.first;
360 uint32_t identifier = it->second.second;
366 <<
" is not a valid output type for this statistics.");
373 &ScalarCollector::TraceSinkUinteger32))
375 NS_FATAL_ERROR(
"Error disconnecting trace file on handover");
383 &ScalarCollector::TraceSinkUinteger32))
385 NS_FATAL_ERROR(
"Error connecting trace file on handover");
388 it->second.second = identifier;
394 probe->GetObject<Probe>(),
397 &UnitConversionCollector::TraceSinkUinteger32))
399 NS_FATAL_ERROR(
"Error disconnecting trace file on handover");
405 probe->GetObject<Probe>(),
408 &UnitConversionCollector::TraceSinkUinteger32))
410 NS_FATAL_ERROR(
"Error connecting trace file on handover");
413 it->second.second = identifier;
421 probe->GetObject<Probe>(),
424 &DistributionCollector::TraceSinkUinteger32))
426 NS_FATAL_ERROR(
"Error disconnecting trace file on handover");
434 &DistributionCollector::TraceSinkUinteger32))
436 NS_FATAL_ERROR(
"Error connecting trace file on handover");
439 it->second.second = identifier;
445 <<
" is not a valid output type for this statistics.");
450 probe->GetObject<Probe>(),
453 &UnitConversionCollector::TraceSinkUinteger32))
455 NS_FATAL_ERROR(
"Error disconnecting trace file on handover");
461 probe->GetObject<Probe>(),
464 &UnitConversionCollector::TraceSinkUinteger32))
466 NS_FATAL_ERROR(
"Error connecting trace file on handover");
469 it->second.second = identifier;
477 probe->GetObject<Probe>(),
480 &DistributionCollector::TraceSinkUinteger32))
482 NS_FATAL_ERROR(
"Error disconnecting trace file on handover");
490 &DistributionCollector::TraceSinkUinteger32))
492 NS_FATAL_ERROR(
"Error connecting trace file on handover");
495 it->second.second = identifier;
500 NS_FATAL_ERROR(
"SatStatsResourcesGrantedHelper - Invalid output type");
Ptr< DataCollectionObject > CreateAggregator(std::string aggregatorTypeId, std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue())
Create the aggregator according to the output type.