<div dir="ltr">Thanks! this is better, I will add getPolicy( )to ContentStoreImpl class.<div><br></div><div>Regards,<br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Nov 18, 2013 at 9:15 PM, Alex Afanasyev <span dir="ltr"><<a href="mailto:alexander.afanasyev@ucla.edu" target="_blank">alexander.afanasyev@ucla.edu</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Oh... I forgot to mention to update the ndnSIM codebase.  I have added GetPolicy() method to ContentStoreImpl class.</div>

<div><br></div><div>Making it public also solves the problem, but I have intentionally made the qualifier protected, so to ensure that access to the data is only through ContentStore interface.</div><div><br></div><div>---</div>

<div>Alex<div><div class="h5"><br><div><br></div><div><br><div><div>On Nov 17, 2013, at 9:55 PM, Wassim Drira <<a href="mailto:drirawassim+ndnsim@gmail.com" target="_blank">drirawassim+ndnsim@gmail.com</a>> wrote:</div>

<br><blockquote type="cite"><div dir="ltr"><div>I resolved the issue by changing protected to public in :<br><br>template<class Policy><br>class ContentStoreImpl : public ContentStore,<br>                         <span style="color:rgb(255,0,0)">protected </span>ndnSIM::trie_with_policy< Name,<br>



<br><br></div>Regards,<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Nov 18, 2013 at 5:48 AM, Wassim Drira <span dir="ltr"><<a href="mailto:drirawassim+ndnsim@gmail.com" target="_blank">drirawassim+ndnsim@gmail.com</a>></span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Hi Alex, <br><br></div>Thanks Alex! <br>This resolves partially the issue, when I use <span style="color:rgb(0,0,255)"><span style="font-family:courier new,monospace">cs->Print(std::cout);</span></span> the entries are correctly printed but when I use <span style="color:rgb(0,0,255)"><span style="font-family:courier new,monospace">for (Policy::iterator it = cs->GetPolicy().begin (); ...</span></span> it gives me a build error.<br>




<br><b>%%%%%%%% ----- Build Error ----- %%%%%%%</b><br>./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h: In member function ‘virtual void ns3::ndn::ANode::OnMsg(ns3::Ptr<const ns3::ndn::Data>)’:<br>./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h:288:3: error: ‘ns3::ndn::ndnSIM::trie_with_policy<FullKey, PayloadTraits, PolicyTraits>::policy_container& ns3::ndn::ndnSIM::trie_with_policy<FullKey, PayloadTraits, PolicyTraits>::getPolicy() [with FullKey = ns3::ndn::Name, PayloadTraits = ns3::ndn::ndnSIM::smart_pointer_payload_traits<ns3::ndn::cs::EntryImpl<ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits> >, ns3::ndn::cs::Entry>, PolicyTraits = ns3::ndn::ndnSIM::fifo_policy_traits, ns3::ndn::ndnSIM::trie_with_policy<FullKey, PayloadTraits, PolicyTraits>::policy_container = ns3::ndn::ndnSIM::fifo_policy_traits::policy<ns3::ndn::ndnSIM::trie_with_policy<ns3::ndn::Name, ns3::ndn::ndnSIM::smart_pointer_payload_traits<ns3::ndn::cs::EntryImpl<ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>, ns3::ndn::ndnSIM::trie<ns3::ndn::Name, ns3::ndn::ndnSIM::smart_pointer_payload_traits<ns3::ndn::cs::EntryImpl<ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, boost::intrusive::member_hook<ns3::ndn::ndnSIM::trie<ns3::ndn::Name, ns3::ndn::ndnSIM::smart_pointer_payload_traits<ns3::ndn::cs::EntryImpl<ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type, &ns3::ndn::ndnSIM::trie<ns3::ndn::Name, ns3::ndn::ndnSIM::smart_pointer_payload_traits<ns3::ndn::cs::EntryImpl<ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>::policy_hook_> >::type]’ is inaccessible<br>




../src/ndnSIM/apps/<a href="http://ndn-anode-simple.cc" target="_blank">ndn-anode-simple.cc</a>:182:46: error: within this context<br>../src/ndnSIM/apps/<a href="http://ndn-anode-simple.cc" target="_blank">ndn-anode-simple.cc</a>:182:46: error: ‘ns3::ndn::ndnSIM::trie_with_policy<ns3::ndn::Name, ns3::ndn::ndnSIM::smart_pointer_payload_traits<ns3::ndn::cs::EntryImpl<ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>’ is not an accessible base of ‘ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits>’<br>




./ns3/ndnSIM/model/cs/../../utils/trie/trie-with-policy.h:288:3: error: ‘ns3::ndn::ndnSIM::trie_with_policy<FullKey, PayloadTraits, PolicyTraits>::policy_container& ns3::ndn::ndnSIM::trie_with_policy<FullKey, PayloadTraits, PolicyTraits>::getPolicy() [with FullKey = ns3::ndn::Name, PayloadTraits = ns3::ndn::ndnSIM::smart_pointer_payload_traits<ns3::ndn::cs::EntryImpl<ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits> >, ns3::ndn::cs::Entry>, PolicyTraits = ns3::ndn::ndnSIM::fifo_policy_traits, ns3::ndn::ndnSIM::trie_with_policy<FullKey, PayloadTraits, PolicyTraits>::policy_container = ns3::ndn::ndnSIM::fifo_policy_traits::policy<ns3::ndn::ndnSIM::trie_with_policy<ns3::ndn::Name, ns3::ndn::ndnSIM::smart_pointer_payload_traits<ns3::ndn::cs::EntryImpl<ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>, ns3::ndn::ndnSIM::trie<ns3::ndn::Name, ns3::ndn::ndnSIM::smart_pointer_payload_traits<ns3::ndn::cs::EntryImpl<ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, boost::intrusive::member_hook<ns3::ndn::ndnSIM::trie<ns3::ndn::Name, ns3::ndn::ndnSIM::smart_pointer_payload_traits<ns3::ndn::cs::EntryImpl<ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type, &ns3::ndn::ndnSIM::trie<ns3::ndn::Name, ns3::ndn::ndnSIM::smart_pointer_payload_traits<ns3::ndn::cs::EntryImpl<ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits::policy_hook_type>::policy_hook_> >::type]’ is inaccessible<br>




../src/ndnSIM/apps/<a href="http://ndn-anode-simple.cc" target="_blank">ndn-anode-simple.cc</a>:183:30: error: within this context<br>../src/ndnSIM/apps/<a href="http://ndn-anode-simple.cc" target="_blank">ndn-anode-simple.cc</a>:183:30: error: ‘ns3::ndn::ndnSIM::trie_with_policy<ns3::ndn::Name, ns3::ndn::ndnSIM::smart_pointer_payload_traits<ns3::ndn::cs::EntryImpl<ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits> >, ns3::ndn::cs::Entry>, ns3::ndn::ndnSIM::fifo_policy_traits>’ is not an accessible base of ‘ns3::ndn::cs::ContentStoreImpl<ns3::ndn::ndnSIM::fifo_policy_traits>’<br>




<br></div>Regards,<br></div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Nov 17, 2013 at 10:58 PM, Alex Afanasyev <span dir="ltr"><<a href="mailto:alexander.afanasyev@ucla.edu" target="_blank">alexander.afanasyev@ucla.edu</a>></span> wrote:<br>




<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Hi Wassim,</div><div><br></div><div>Cache is organized as a hash-based container, so it is expected that entries are not in any particular order.  To get access to policy-based ordering (FIFO in your case), you would need a little bit more complex code.  Here is a basic example:</div>




<div><br></div><div><div>#include "ns3/ndnSIM/model/cs/content-store-impl.h"</div><div>#include "ns3/ndnSIM/utils/trie/fifo-policy.h"</div><div>#include "ns3/ndnSIM/utils/trie/random-policy.h"</div>




</div><div><br></div><div>...</div><div><br></div><div><br></div><div><div>  // typedef ns3::ndn::ndnSIM::random_policy_traits policy;</div><div>  typedef ns3::ndn::ndnSIM::fifo_policy_traits policy;</div><div>  </div><div>




  typedef ns3::ndn::cs::ContentStoreImpl<policy> CS;</div><div>  typedef CS::super::policy_container Policy;</div><div><br></div><div>  Ptr<CS> cs = DynamicCast<CS> (NodeList::GetNode(1)->GetObject<ndn::ContentStore> ());</div>




<div>  if (!cs)</div><div>    {</div><div>      std::cerr << "Please select the right CS policy" << std::endl;</div><div>      exit (1);</div><div>    }</div><div><br></div><div>  for (Policy::iterator it = cs->GetPolicy().begin ();</div>




<div>       it != cs->GetPolicy().end();</div><div>       it++)</div><div>    {</div><div>      std::cout << it->payload()->GetName() << std::endl;</div><div>    }</div></div><div><br></div><div>---</div>




<div>Alex</div><br><div><div><div>On Nov 17, 2013, at 3:37 AM, Wassim Drira <<a href="mailto:drirawassim+ndnsim@gmail.com" target="_blank">drirawassim+ndnsim@gmail.com</a>> wrote:</div><br></div>
<blockquote type="cite"><div><div dir="ltr"><div><div>Hi all,<br></div><div><br></div><div><span style="font-family:arial,helvetica,sans-serif">I am using </span><span style="font-family:courier new,monospace"><span style="font-family:arial,helvetica,sans-serif">ContentStore
 to store some msgs in reception order. I am using the fifo variant. The
 issue is when printing the content of the cache, it looks not ordered 
as you can see below (sequence number in the end of the name)</span>.<br>
<br></span></div><div><span style="font-family:courier new,monospace"><span style="font-family:arial,helvetica,sans-serif">Do you have an idea about the cause and may be a solution to this issue...</span><br></span></div>







<div><span style="font-family:courier new,monospace"><br></span></div><b>%%%%%%%% ----- Code ----- %%%%%%%</b><br><span style="font-family:courier new,monospace">ObjectFactory m_contentStoreFactory;<br>m_contentStoreFactory.SetTypeId ("ns3::ndn::cs::Stats::Fifo");<br>







m_contentStoreFactory.Set("MaxSize", StringValue ("50"));<br>m_pubCS = m_contentStoreFactory.Create<ContentStore> ();<br>......<br>Ptr<ns3::ndn::cs::Entry> entry = m_pubCS->Begin();<br>






while(entry){<br>
        NS_LOG_DEBUG("Cache Entry:"<< entry->GetData()->GetName());<br>        entry = m_pubCS->Next(entry);<br>}</span><br><b>%%%%%%%% ----- OutPut ----- %%%%%%%</b><br>18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%02<br>







18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%01<br>18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%04<br>18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%03<br>18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%06<br>







18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%05<br>18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%08<br>18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%07<br>18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0A<br>







18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%09<br>18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0C<br>18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0B<br>18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0E<br>







18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0D<br>18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%10<br>18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0F<br><br><br></div>Best regards</div>




</div>

_______________________________________________<br>ndnSIM mailing list<br><a href="mailto:ndnSIM@lists.cs.ucla.edu" target="_blank">ndnSIM@lists.cs.ucla.edu</a><br><a href="http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim" target="_blank">http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim</a><br>




</blockquote></div><br></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
_______________________________________________<br>ndnSIM mailing list<br><a href="mailto:ndnSIM@lists.cs.ucla.edu" target="_blank">ndnSIM@lists.cs.ucla.edu</a><br><a href="http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim" target="_blank">http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim</a><br>

</blockquote></div><br></div></div></div></div></div></blockquote></div><br></div>