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
payload-with-policy.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
20 #ifndef PAYLOAD_WITH_INDEX_H_
21 #define PAYLOAD_WITH_INDEX_H_
22 
24 
25 namespace ns3 {
26 namespace ndn {
27 namespace ndnSIM {
28 
29 template<typename PayloadTraits, typename IndexTraits>
30 class payload_with_index {
31 public:
32  typedef PayloadTraits::pointer_type iterator;
33 
34  typedef typename IndexTraits::
35  template index<PayloadTraits,
36  typename IndexTraits::template container_hook<parent_trie>::type>::type
37  index_container;
38 
39  inline payload_with_index()
40  : index_(*this)
41  {
42  }
43 
44  inline std::pair<iterator, bool>
45  insert(typename iterator payload)
46  {
47  bool ok = policy_.insert(s_iterator_to(item.first));
48  if (!ok) {
49  item.first->erase(); // cannot insert
50  return std::make_pair(end(), false);
51  }
52 
53  return item;
54  }
55 
56  // inline void
57  // erase (const FullKey &key)
58  // {
59  // iterator foundItem, lastItem;
60  // bool reachLast;
61  // std::tie (foundItem, reachLast, lastItem) = trie_.find (key);
62 
63  // if (!reachLast || lastItem->payload () == PayloadTraits::empty_payload)
64  // return; // nothing to invalidate
65 
66  // erase (lastItem);
67  // }
68 
69  // inline void
70  // erase (iterator node)
71  // {
72  // if (node == end ()) return;
73 
74  // policy_.erase (s_iterator_to (node));
75  // node->erase (); // will do cleanup here
76  // }
77 
78  // inline void
79  // clear ()
80  // {
81  // policy_.clear ();
82  // trie_.clear ();
83  // }
84 
85  // template<typename Modifier>
86  // bool
87  // modify (iterator position, Modifier mod)
88  // {
89  // if (position == end ()) return false;
90  // if (position->payload () == PayloadTraits::empty_payload) return false;
91 
92  // mod (*position->payload ());
93  // policy_.update (position);
94  // return true;
95  // }
96 
97 private:
98  mutable index_container policy_;
99 };
100 
101 } // ndnSIM
102 } // ndn
103 } // ns3
104 
106 
107 #endif // PAYLOAD_WITH_POLICY_H_