Implementing new cache replacement strategies: Random and FIFO
diff --git a/examples/ccnx-grid.cc b/examples/ccnx-grid.cc
index 4bab1f8..07d3bbf 100644
--- a/examples/ccnx-grid.cc
+++ b/examples/ccnx-grid.cc
@@ -64,9 +64,6 @@
   Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("1Mbps"));
   Config::SetDefault ("ns3::PointToPointChannel::Delay", StringValue ("10ms"));
   Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("20"));
-
-  // Set maximum number of packets that will be cached (default 100)
-  Config::SetDefault ("ns3::CcnxContentStoreLru::Size", StringValue ("1000"));
   
   uint32_t nGrid = 3;
   Time finishTime = Seconds (20.0); 
@@ -84,6 +81,8 @@
   // Install CCNx stack on all nodes
   NS_LOG_INFO ("Installing CCNx stack on all nodes");
   CcnxStackHelper ccnxHelper;
+  ccnxHelper.SetContentStore ("ns3::CcnxContentStoreRandom",
+                              "Size", "10");
   ccnxHelper.InstallAll ();
 
   CcnxGlobalRoutingHelper ccnxGlobalRoutingHelper;
@@ -118,6 +117,16 @@
     
   NS_LOG_INFO ("Run Simulation.");
   Simulator::Run ();
+
+  for (NodeList::Iterator node = NodeList::Begin ();
+       node != NodeList::End ();
+       node ++)
+    {
+      std::cout << "Node #" << (*node)->GetId () << std::endl;
+      (*node)->GetObject<CcnxContentStore> ()->Print (std::cout);
+      std::cout << std::endl;
+    }
+  
   Simulator::Destroy ();
   NS_LOG_INFO ("Done!");
     
diff --git a/examples/trie.cc b/examples/trie.cc
index 4d82ba6..3e77a4f 100644
--- a/examples/trie.cc
+++ b/examples/trie.cc
@@ -20,7 +20,7 @@
 
 #include "ns3/core-module.h"
 #include "ns3/ndnSIM-module.h"
-#include "../utils/trie.h"
+#include "../utils/trie-with-policy.h"
 
 using namespace ns3;
 
@@ -46,9 +46,15 @@
 int
 main (int argc, char *argv[])
 {
-  typedef indexed_trie<ns3::CcnxNameComponents, Integer, smart_pointer_payload_traits<Integer> > trie;
+  typedef trie_with_policy<ns3::CcnxNameComponents,
+                           Integer,
+                           smart_pointer_payload_traits<Integer>,
+                           lru_policy_traits<CcnxNameComponents,
+                                             Integer,
+                                             smart_pointer_payload_traits<Integer> >
+                           > trie;
   trie x;
-  x.getPolicy ().set_max_size (2);
+  x.getPolicy ().set_max_size (100);
   
   // x.getTrie ().PrintStat (std::cout);
   
@@ -61,22 +67,23 @@
   ns3::Ptr<Integer> i = ns3::Create<Integer> (1);
   x.insert (n4, ns3::Create<Integer> (4));
 
-
-  
   x.insert (n3, ns3::Create<Integer> (3));
   
   std::pair< trie::iterator, bool > item =
     x.insert (n2, ns3::Create<Integer> (2));
-  x.erase (item.first);
+  // x.erase (item.first);
 
   x.insert (n1, ns3::Create<Integer> (1));
   x.insert (n4, ns3::Create<Integer> (4));
 
-  // std::cout << x.getTrie ();
-  BOOST_FOREACH (const trie::parent_trie &item, x.getPolicy ())
-    {
-      std::cout << *item.payload () << " " << std::endl;
-    }
+  std::cout << "digraph trie {\n";
+  std::cout << x.getTrie ();
+  std::cout << "}\n";
+
+  // BOOST_FOREACH (const trie::parent_trie &item, x.getPolicy ())
+  //   {
+  //     std::cout << *item.payload () << " " << std::endl;
+  //   }
 
   // ns3::CcnxNameComponents n4;
   // n4("a")("c");