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
Copyright (c) 2011-2015 Regents of the University of California.
static void ProcessWarmupEvents()
static void Install(Ptr< Node > node, const Name &namePrefix, const Name &strategy)
Install a built-in strategy strategy on node for namePrefix namespace.
Copyright (c) 2011-2015 Regents of the University of California.
Implementation network-layer of NDN stack.
void injectInterest(const Interest &interest)
Inject interest through internal Face.
static KeyChain & getKeyChain()
static void InstallAll(const Name &namePrefix, const Name &strategy)
Install a built-in strategy strategy on all nodes for namePrefix namespace.