NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
ndn-strategy-choice-helper.cpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
21 
22 #include "ns3/log.h"
23 
24 #include "ndn-stack-helper.hpp"
25 
26 namespace ns3 {
27 namespace ndn {
28 
29 NS_LOG_COMPONENT_DEFINE("ndn.StrategyChoiceHelper");
30 
31 void
32 StrategyChoiceHelper::sendCommand(const ControlParameters& parameters, Ptr<Node> node)
33 {
34  NS_LOG_DEBUG("Strategy choice command was initialized");
35  Block encodedParameters(parameters.wireEncode());
36 
37  Name commandName("/localhost/nfd/strategy-choice");
38  commandName.append("set");
39  commandName.append(encodedParameters);
40 
41  shared_ptr<Interest> command(make_shared<Interest>(commandName));
42  command->setCanBePrefix(false);
43  StackHelper::getKeyChain().sign(*command);
44 
45  Ptr<L3Protocol> l3protocol = node->GetObject<L3Protocol>();
46  l3protocol->injectInterest(*command);
47 }
48 
49 void
50 StrategyChoiceHelper::Install(const NodeContainer& c, const Name& namePrefix, const Name& strategy)
51 {
52  for (NodeContainer::Iterator i = c.Begin(); i != c.End(); ++i) {
53  Install(*i, namePrefix, strategy);
54  }
55 }
56 
57 void
58 StrategyChoiceHelper::Install(Ptr<Node> node, const Name& namePrefix, const Name& strategy)
59 {
60  ControlParameters parameters;
61  parameters.setName(namePrefix);
62  NS_LOG_DEBUG("Node ID: " << node->GetId() << " with forwarding strategy " << strategy);
63  parameters.setStrategy(strategy);
64 
65  Simulator::ScheduleWithContext(node->GetId(), Seconds(0),
66  &StrategyChoiceHelper::sendCommand, parameters, node);
68 }
69 
70 void
71 StrategyChoiceHelper::InstallAll(const Name& namePrefix, const Name& strategy)
72 {
73  Install(NodeContainer::GetGlobal(), namePrefix, strategy);
74 }
75 
76 } // namespace ndn
77 
78 } // namespace ns
ndn-strategy-choice-helper.hpp
ns3::ndn::StrategyChoiceHelper::InstallAll
static void InstallAll(const Name &namePrefix, const Name &strategy)
Install a built-in strategy strategy on all nodes for namePrefix namespace.
Definition: ndn-strategy-choice-helper.cpp:71
ns3
Copyright (c) 2011-2015 Regents of the University of California.
Definition: ndn-app-link-service.cpp:32
ndn-stack-helper.hpp
ns3::ndn::Name
Name
Definition: ndn-common.cpp:25
ndn::tlv::nfd::ControlParameters
@ ControlParameters
Definition: tlv-nfd.hpp:35
ns3::ndn::StrategyChoiceHelper::Install
static void Install(Ptr< Node > node, const Name &namePrefix, const Name &strategy)
Install a built-in strategy strategy on node for namePrefix namespace.
Definition: ndn-strategy-choice-helper.cpp:58
ns3::ndn::L3Protocol
Implementation network-layer of NDN stack.
Definition: ndn-l3-protocol.hpp:81
ns3::ndn::StackHelper::ProcessWarmupEvents
static void ProcessWarmupEvents()
Definition: ndn-stack-helper.cpp:410
ns3::ndn::StackHelper::getKeyChain
static KeyChain & getKeyChain()
Definition: ndn-stack-helper.cpp:77
ndn
Copyright (c) 2011-2015 Regents of the University of California.
Definition: ndn-strategy-choice-helper.hpp:34
ns3::ndn::L3Protocol::injectInterest
void injectInterest(const Interest &interest)
Inject interest through internal Face.
Definition: ndn-l3-protocol.cpp:246