NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.0: NDN, CCN, CCNx, content centric networks
API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 #include "ns3/ndnSIM/model/ndn-face.hpp"
25 
26 #include "ns3/object.h"
27 #include "ns3/ptr.h"
28 
29 #include <list>
30 #include <tuple>
31 
32 namespace ns3 {
33 
34 class Channel;
35 
36 namespace ndn {
37 
38 class L3Protocol;
39 
44 class GlobalRouter : public Object {
45 public:
49  typedef std::tuple<Ptr<GlobalRouter>, shared_ptr<Face>, Ptr<GlobalRouter>> Incidency;
53  typedef std::list<Incidency> IncidencyList;
57  typedef std::list<shared_ptr<Name>> LocalPrefixList;
58 
64  static TypeId
65  GetTypeId();
66 
70  GlobalRouter();
71 
75  uint32_t
76  GetId() const;
77 
81  Ptr<L3Protocol>
82  GetL3Protocol() const;
83 
88  void
89  AddLocalPrefix(shared_ptr<Name> prefix);
90 
96  void
97  AddIncidency(shared_ptr<Face> face, Ptr<GlobalRouter> ndn);
98 
103  GetIncidencies();
104 
108  const LocalPrefixList&
109  GetLocalPrefixes() const;
110 
111  // ??
112 protected:
113  virtual void
115 
117 private:
118  uint32_t m_id;
119 
120  Ptr<L3Protocol> m_ndn;
121  LocalPrefixList m_localPrefixes;
122  IncidencyList m_incidencies;
123 
124  static uint32_t m_idCounter;
125 };
126 
127 inline bool
129 {
130  return std::get<0>(a) == std::get<0>(b) && std::get<1>(a) == std::get<1>(b)
131  && std::get<2>(a) == std::get<2>(b);
132 }
133 
134 inline bool
136 {
137  return !(a == b);
138 }
139 
140 } // namespace ndn
141 } // namespace ns3
142 
143 #endif // NDN_GLOBAL_ROUTER_H
void AddLocalPrefix(shared_ptr< Name > prefix)
Add new locally exported prefix.
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.
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)
const LocalPrefixList & GetLocalPrefixes() const
Get list of locally exported prefixes.
bool operator==(const GlobalRouter::Incidency &a, const GlobalRouter::Incidency &b)