20 #ifndef NDN_CONTENT_STORE_WITH_FRESHNESS_H_    21 #define NDN_CONTENT_STORE_WITH_FRESHNESS_H_    23 #include "ns3/ndnSIM/model/ndn-common.hpp"    27 #include "../../utils/trie/multi-policy.hpp"    38 template<
class Policy>
    41                               multi_policy_traits<boost::mpl::
    43                                                             ndnSIM::freshness_policy_traits>>> {
    47                                                                  ndnSIM::freshness_policy_traits>>>
    56   Print(std::ostream& os) 
const;
    59   Add(shared_ptr<const Data> data);
    69   static LogComponent g_log; 
    72   Time m_scheduledCleaningTime;
    79 template<
class Policy>
    81                                                                       + Policy::GetName()).c_str(), __FILE__);
    83 template<
class Policy>
    87   static TypeId tid = TypeId((
"ns3::ndn::cs::Freshness::" + Policy::GetName()).c_str())
    98 template<
class Policy>
   106   NS_LOG_DEBUG(data->getName() << 
" added to cache");
   107   RescheduleCleaning();
   111 template<
class Policy>
   116     this->getPolicy().template get<freshness_policy_container>();
   118   if (freshness.size() > 0) {
   120       freshness_policy_container::policy_base::get_freshness(&(*freshness.begin()));
   122     if (m_scheduledCleaningTime.IsZero() ||      
   123         m_scheduledCleaningTime > nextStateTime) 
   125       if (m_cleanEvent.IsRunning()) {
   126         Simulator::Remove(m_cleanEvent); 
   130       m_cleanEvent = Simulator::Schedule(nextStateTime - Now(),
   132       m_scheduledCleaningTime = nextStateTime;
   136     if (m_cleanEvent.IsRunning()) {
   137       Simulator::Remove(m_cleanEvent); 
   142 template<
class Policy>
   147     this->getPolicy().template get<freshness_policy_container>();
   151   Time now = Simulator::Now();
   153   while (!freshness.empty()) {
   156     if (freshness_policy_container::policy_base::get_freshness(&(*entry))
   159       super::erase(&(*entry));
   167   m_scheduledCleaningTime = Time();
   168   RescheduleCleaning();
   171 template<
class Policy>
   178   for (
typename super::policy_container::const_iterator item = this->getPolicy().begin();
   179        item != this->getPolicy().end(); item++) {
   180     Time ttl = freshness_policy_container::policy_base::get_freshness(&(*item)) - Simulator::Now();
   181     os << item->payload()->GetName() << 
"(left: " << ttl.ToDouble(Time::S) << 
"s)" << std::endl;
   189 #endif // NDN_CONTENT_STORE_WITH_FRESHNESS_H_ static TypeId GetTypeId()
 
Copyright (c) 2011-2015 Regents of the University of California. 
 
ContentStoreImpl< ndnSIM::multi_policy_traits< boost::mpl::vector2< Policy, ndnSIM::freshness_policy_traits > > > super
 
virtual void Print(std::ostream &os) const 
Print out content store entries. 
 
Cache entry implementation with additional references to the base container. 
 
Table::const_iterator iterator
 
Opaque type (shared_ptr) representing ID of a scheduled event. 
 
Special content store realization that honors Freshness parameter in Data packets. 
 
Copyright (c) 2011-2015 Regents of the University of California. 
 
super::policy_container::template index< 1 >::type freshness_policy_container
 
virtual bool Add(shared_ptr< const Data > data)
 
Base implementation of NDN content store. 
 
virtual bool Add(shared_ptr< const Data > data)
Add a new content to the content store.