NS-3 based Named Data Networking (NDN) simulator
ndnSIM: NDN, CCN, CCNx, content centric networks
API Documentation
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Groups
Pages
content-store-impl.cc
1
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2011 University of California, Los Angeles
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 2 as
7
* published by the Free Software Foundation;
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
*
18
* Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
19
*/
20
21
#include "content-store-impl.h"
22
23
#include "../../utils/trie/random-policy.h"
24
#include "../../utils/trie/lru-policy.h"
25
#include "../../utils/trie/fifo-policy.h"
26
#include "../../utils/trie/lfu-policy.h"
27
#include "../../utils/trie/multi-policy.h"
28
#include "../../utils/trie/aggregate-stats-policy.h"
29
30
#define NS_OBJECT_ENSURE_REGISTERED_TEMPL(type, templ) \
31
static struct X ## type ## templ ## RegistrationClass \
32
{ \
33
X ## type ## templ ## RegistrationClass () { \
34
ns3::TypeId tid = type<templ>::GetTypeId (); \
35
tid.GetParent (); \
36
} \
37
} x_ ## type ## templ ## RegistrationVariable
38
39
namespace
ns3 {
40
namespace
ndn {
41
42
using namespace
ndnSIM;
43
44
namespace
cs {
45
46
// explicit instantiation and registering
50
template
class
ContentStoreImpl<lru_policy_traits>
;
51
55
template
class
ContentStoreImpl<random_policy_traits>
;
56
60
template
class
ContentStoreImpl<fifo_policy_traits>
;
61
65
template
class
ContentStoreImpl<lfu_policy_traits>
;
66
67
NS_OBJECT_ENSURE_REGISTERED_TEMPL(
ContentStoreImpl
,
lru_policy_traits
);
68
NS_OBJECT_ENSURE_REGISTERED_TEMPL(
ContentStoreImpl
,
random_policy_traits
);
69
NS_OBJECT_ENSURE_REGISTERED_TEMPL(
ContentStoreImpl
,
fifo_policy_traits
);
70
NS_OBJECT_ENSURE_REGISTERED_TEMPL(
ContentStoreImpl
,
lfu_policy_traits
);
71
72
73
typedef
multi_policy_traits
< boost::mpl::vector2<
lru_policy_traits
,
74
aggregate_stats_policy_traits
> >
LruWithCountsTraits
;
75
typedef
multi_policy_traits
< boost::mpl::vector2<
random_policy_traits
,
76
aggregate_stats_policy_traits
> >
RandomWithCountsTraits
;
77
typedef
multi_policy_traits
< boost::mpl::vector2<
fifo_policy_traits
,
78
aggregate_stats_policy_traits
> >
FifoWithCountsTraits
;
79
typedef
multi_policy_traits
< boost::mpl::vector2<
lfu_policy_traits
,
80
aggregate_stats_policy_traits
> >
LfuWithCountsTraits
;
81
82
template
class
ContentStoreImpl<LruWithCountsTraits>
;
83
NS_OBJECT_ENSURE_REGISTERED_TEMPL(
ContentStoreImpl
,
LruWithCountsTraits
);
84
85
template
class
ContentStoreImpl<RandomWithCountsTraits>
;
86
NS_OBJECT_ENSURE_REGISTERED_TEMPL(
ContentStoreImpl
,
RandomWithCountsTraits
);
87
88
template
class
ContentStoreImpl<FifoWithCountsTraits>
;
89
NS_OBJECT_ENSURE_REGISTERED_TEMPL(
ContentStoreImpl
,
FifoWithCountsTraits
);
90
91
template
class
ContentStoreImpl<LfuWithCountsTraits>
;
92
NS_OBJECT_ENSURE_REGISTERED_TEMPL(
ContentStoreImpl
,
LfuWithCountsTraits
);
93
94
#ifdef DOXYGEN
95
// /**
96
// * \brief Content Store implementing LRU cache replacement policy
97
// */
98
class
Lru
:
public
ContentStoreImpl<lru_policy_traits>
{ };
99
103
class
Fifo
:
public
ContentStoreImpl<fifo_policy_traits>
{ };
104
108
class
Random
:
public
ContentStoreImpl<random_policy_traits>
{ };
109
113
class
Lfu
:
public
ContentStoreImpl<lfu_policy_traits>
{ };
114
#endif
115
116
117
}
// namespace cs
118
}
// namespace ndn
119
}
// namespace ns3
ns3::ndn::ndnSIM::multi_policy_traits
Definition:
multi-policy.h:43
ns3::ndn::ndnSIM::lru_policy_traits
Traits for Least Recently Used replacement policy.
Definition:
lru-policy.h:34
ns3::ndn::cs::Lru
Content Store implementing LRU cache replacement policy.
Definition:
content-store-impl.cc:98
ns3::ndn::ndnSIM::aggregate_stats_policy_traits
Traits for policy that just keeps track of number of elements It's doing a rather expensive job...
Definition:
aggregate-stats-policy.h:35
ns3::ndn::cs::ContentStoreImpl< lru_policy_traits >
ns3::ndn::cs::Fifo
Content Store implementing FIFO cache replacement policy.
Definition:
content-store-impl.cc:103
ns3::ndn::cs::Random
Content Store implementing Random cache replacement policy.
Definition:
content-store-impl.cc:108
ns3::ndn::ndnSIM::random_policy_traits
Traits for random replacement policy.
Definition:
random-policy.h:36
ns3::ndn::ndnSIM::lfu_policy_traits
Traits for LFU replacement policy.
Definition:
lfu-policy.h:34
ns3::ndn::ndnSIM::fifo_policy_traits
Traits for First In First Out replacement policy.
Definition:
fifo-policy.h:34
ns3::ndn::cs::Lfu
Content Store implementing Least Frequently Used cache replacement policy.
Definition:
content-store-impl.cc:113
ndnSIM
model
cs
content-store-impl.cc
Generated on Mon Jan 19 2015 11:27:03 for ndnSIM by
1.8.7