NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.3: NDN, CCN, CCNx, content centric networks
API Documentation
ndn-global-router.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
20 #ifndef NDN_GLOBAL_ROUTER_H
21 #define NDN_GLOBAL_ROUTER_H
22 
23 #include "ns3/ndnSIM/model/ndn-common.hpp"
24 
25 #include "ns3/object.h"
26 #include "ns3/ptr.h"
27 
28 #include <list>
29 #include <tuple>
30 
31 namespace ns3 {
32 
33 class Channel;
34 
35 namespace ndn {
36 
37 class L3Protocol;
38 
43 class GlobalRouter : public Object {
44 public:
48  typedef std::tuple<Ptr<GlobalRouter>, shared_ptr<Face>, Ptr<GlobalRouter>> Incidency;
52  typedef std::list<Incidency> IncidencyList;
56  typedef std::list<shared_ptr<Name>> LocalPrefixList;
57 
63  static TypeId
64  GetTypeId();
65 
69  GlobalRouter();
70 
74  uint32_t
75  GetId() const;
76 
80  Ptr<L3Protocol>
81  GetL3Protocol() const;
82 
87  void
88  AddLocalPrefix(shared_ptr<Name> prefix);
89 
95  void
96  AddIncidency(shared_ptr<Face> face, Ptr<GlobalRouter> ndn);
97 
101  IncidencyList&
102  GetIncidencies();
103 
107  const LocalPrefixList&
108  GetLocalPrefixes() const;
109 
113  static void
114  clear();
115 
116 protected:
117  virtual void
119 
121 private:
122  uint32_t m_id;
123 
124  Ptr<L3Protocol> m_ndn;
125  LocalPrefixList m_localPrefixes;
126  IncidencyList m_incidencies;
127 
128  static uint32_t m_idCounter;
129 };
130 
131 inline bool
133 {
134  return std::get<0>(a) == std::get<0>(b) && std::get<1>(a) == std::get<1>(b)
135  && std::get<2>(a) == std::get<2>(b);
136 }
137 
138 inline bool
140 {
141  return !(a == b);
142 }
143 
144 } // namespace ndn
145 } // namespace ns3
146 
147 #endif // NDN_GLOBAL_ROUTER_H
void AddLocalPrefix(shared_ptr< Name > prefix)
Add new locally exported prefix.
Copyright (c) 2011-2015 Regents of the University of California.
GlobalRouter()
Default constructor.
std::list< shared_ptr< Name > > LocalPrefixList
List of locally exported prefixes.
Class representing global router interface for ndnSIM.
std::tuple< Ptr< GlobalRouter >, shared_ptr< Face >, Ptr< GlobalRouter > > Incidency
Graph edge.
void AddIncidency(shared_ptr< Face > face, Ptr< GlobalRouter > ndn)
Add edge to the node.
virtual void NotifyNewAggregate()
Notify when the object is aggregated to another object (e.g., Node)
uint32_t GetId() const
Get numeric ID of the node (internally assigned)
std::list< Incidency > IncidencyList
List of graph edges.
Copyright (c) 2011-2015 Regents of the University of California.
IncidencyList & GetIncidencies()
Get list of edges that are connected to this node.
ndn L3Protocol
Copyright (c) 2011-2015 Regents of the University of California.
static TypeId GetTypeId()
Interface ID.
bool operator!=(const GlobalRouter::Incidency &a, const GlobalRouter::Incidency &b)
Ptr< L3Protocol > GetL3Protocol() const
Helper function to get smart pointer to ndn::L3Protocol object (basically, self)
static void clear()
Clear global state.
const LocalPrefixList & GetLocalPrefixes() const
Get list of locally exported prefixes.
bool operator==(const GlobalRouter::Incidency &a, const GlobalRouter::Incidency &b)