EnergySourceContainer EnergySourceHelper::Install (NodeContainer c) const { EnergySourceContainer container; for (NodeContainer::Iterator i = c.Begin (); i != c.End (); ++i) { Ptr<EnergySource> src = DoInstall (*i); container.Add (src); /* * Check if EnergySourceContainer is already aggregated to target node. If * not, create a new EnergySourceContainer and aggregate it to node. */ Ptr<EnergySourceContainer> EnergySourceContrainerOnNode = (*i)->GetObject<EnergySourceContainer> (); if (EnergySourceContrainerOnNode == NULL) { ObjectFactory fac; fac.SetTypeId ("ns3::EnergySourceContainer"); EnergySourceContrainerOnNode = fac.Create<EnergySourceContainer> (); EnergySourceContrainerOnNode->Add (src); (*i)->AggregateObject (EnergySourceContrainerOnNode); } else { EnergySourceContrainerOnNode->Add (src); // append new EnergySource } } return container; }
void StrategyChoiceHelper::Install(const NodeContainer& c, const Name& namePrefix, const Name& strategy) { for (NodeContainer::Iterator i = c.Begin(); i != c.End(); ++i) { Install(*i, namePrefix, strategy); } }
void StackHelper::Update(const NodeContainer& c) { for (NodeContainer::Iterator i = c.Begin(); i != c.End(); ++i) { Update(*i); } }
Ptr<FaceContainer> StackHelper::Install(const NodeContainer& c) const { Ptr<FaceContainer> faces = Create<FaceContainer>(); for (NodeContainer::Iterator i = c.Begin(); i != c.End(); ++i) { faces->AddAll(Install(*i)); } return faces; }
void DsrMainHelper::Install (DsrHelper &dsrHelper, NodeContainer nodes) { NS_LOG_DEBUG ("Passed node container"); delete m_dsrHelper; m_dsrHelper = dsrHelper.Copy (); for (NodeContainer::Iterator i = nodes.Begin (); i != nodes.End (); ++i) { Install (*i); } }
ApplicationContainer BulkSendHelper::Install (NodeContainer c) const { ApplicationContainer apps; for (NodeContainer::Iterator i = c.Begin (); i != c.End (); ++i) { apps.Add (InstallPriv (*i)); } return apps; }
Ptr<FlowMonitor> FlowMonitorHelper::Install (NodeContainer nodes) { for (NodeContainer::Iterator i = nodes.Begin (); i != nodes.End (); ++i) { Ptr<Node> node = *i; if (node->GetObject<Ipv4L3Protocol> ()) { Install (node); } } return m_flowMonitor; }
int64_t OnOffHelper::AssignStreams (NodeContainer c, int64_t stream) { int64_t currentStream = stream; Ptr<Node> node; for (NodeContainer::Iterator i = c.Begin (); i != c.End (); ++i) { node = (*i); for (uint32_t j = 0; j < node->GetNApplications (); j++) { Ptr<OnOffApplication> onoff = DynamicCast<OnOffApplication> (node->GetApplication (j)); if (onoff) { currentStream += onoff->AssignStreams (currentStream); } } } return (currentStream - stream); }
int64_t AodvHelper::AssignStreams (NodeContainer c, int64_t stream) { int64_t currentStream = stream; Ptr<Node> node; for (NodeContainer::Iterator i = c.Begin (); i != c.End (); ++i) { node = (*i); Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> (); NS_ASSERT_MSG (ipv4, "Ipv4 not installed on node"); Ptr<Ipv4RoutingProtocol> proto = ipv4->GetRoutingProtocol (); NS_ASSERT_MSG (proto, "Ipv4 routing not installed on node"); Ptr<aodv::RoutingProtocol> aodv = DynamicCast<aodv::RoutingProtocol> (proto); if (aodv) { currentStream += aodv->AssignStreams (currentStream); continue; } // Aodv may also be in a list Ptr<Ipv4ListRouting> list = DynamicCast<Ipv4ListRouting> (proto); if (list) { int16_t priority; Ptr<Ipv4RoutingProtocol> listProto; Ptr<aodv::RoutingProtocol> listAodv; for (uint32_t i = 0; i < list->GetNRoutingProtocols (); i++) { listProto = list->GetRoutingProtocol (i, priority); listAodv = DynamicCast<aodv::RoutingProtocol> (listProto); if (listAodv) { currentStream += listAodv->AssignStreams (currentStream); break; } } } } return (currentStream - stream); }