[ndnSIM] [2] ContentStore order

Wassim Drira drirawassim+ndnsim at gmail.com
Sun Nov 17 21:55:59 PST 2013


I resolved the issue by changing protected to public in :

template<class Policy>
class ContentStoreImpl : public ContentStore,
                         protected ndnSIM::trie_with_policy< Name,


Regards,


On Mon, Nov 18, 2013 at 5:48 AM, Wassim Drira
<drirawassim+ndnsim at gmail.com>wrote:

> Hi Alex,
>
> Thanks Alex!
> This resolves partially the issue, when I use cs->Print(std::cout); the
> entries are correctly printed but when I use for (Policy::iterator it =
> cs->GetPolicy().begin (); ... it gives me a build error.
>
> *%%%%%%%% ----- Build Error ----- %%%%%%%*
> ./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>)’:
> ./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
> ../src/ndnSIM/apps/ndn-anode-simple.cc:182:46: error: within this context
> ../src/ndnSIM/apps/ndn-anode-simple.cc: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>’
> ./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
> ../src/ndnSIM/apps/ndn-anode-simple.cc:183:30: error: within this context
> ../src/ndnSIM/apps/ndn-anode-simple.cc: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>’
>
> Regards,
>
>
> On Sun, Nov 17, 2013 at 10:58 PM, Alex Afanasyev <
> alexander.afanasyev at ucla.edu> wrote:
>
>> Hi Wassim,
>>
>> 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:
>>
>> #include "ns3/ndnSIM/model/cs/content-store-impl.h"
>> #include "ns3/ndnSIM/utils/trie/fifo-policy.h"
>> #include "ns3/ndnSIM/utils/trie/random-policy.h"
>>
>> ...
>>
>>
>>   // typedef ns3::ndn::ndnSIM::random_policy_traits policy;
>>   typedef ns3::ndn::ndnSIM::fifo_policy_traits policy;
>>
>>   typedef ns3::ndn::cs::ContentStoreImpl<policy> CS;
>>   typedef CS::super::policy_container Policy;
>>
>>   Ptr<CS> cs = DynamicCast<CS>
>> (NodeList::GetNode(1)->GetObject<ndn::ContentStore> ());
>>   if (!cs)
>>     {
>>       std::cerr << "Please select the right CS policy" << std::endl;
>>       exit (1);
>>     }
>>
>>   for (Policy::iterator it = cs->GetPolicy().begin ();
>>        it != cs->GetPolicy().end();
>>        it++)
>>     {
>>       std::cout << it->payload()->GetName() << std::endl;
>>     }
>>
>> ---
>> Alex
>>
>> On Nov 17, 2013, at 3:37 AM, Wassim Drira <drirawassim+ndnsim at gmail.com>
>> wrote:
>>
>> Hi all,
>>
>> I am using 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).
>>
>> Do you have an idea about the cause and may be a solution to this issue...
>>
>> *%%%%%%%% ----- Code ----- %%%%%%%*
>> ObjectFactory m_contentStoreFactory;
>> m_contentStoreFactory.SetTypeId ("ns3::ndn::cs::Stats::Fifo");
>> m_contentStoreFactory.Set("MaxSize", StringValue ("50"));
>> m_pubCS = m_contentStoreFactory.Create<ContentStore> ();
>> ......
>> Ptr<ns3::ndn::cs::Entry> entry = m_pubCS->Begin();
>> while(entry){
>>         NS_LOG_DEBUG("Cache Entry:"<< entry->GetData()->GetName());
>>         entry = m_pubCS->Next(entry);
>> }
>> *%%%%%%%% ----- OutPut ----- %%%%%%%*
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%02
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%01
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%04
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%03
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%06
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%05
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%08
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%07
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0A
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%09
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0C
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0B
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0E
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0D
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%10
>> 18.0186s 1 ndn.ANode:OnMsg(): [DEBUG] Cache Entry:/news/2/%00%0F
>>
>>
>> Best regards
>>  _______________________________________________
>> ndnSIM mailing list
>> ndnSIM at lists.cs.ucla.edu
>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndnsim/attachments/20131118/bb830d42/attachment.html>


More information about the ndnSIM mailing list