NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.0: NDN, CCN, CCNx, content centric networks
API Documentation
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
probability-policy.hpp
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
20
#ifndef PROBABILITY_POLICY_H_
21
#define PROBABILITY_POLICY_H_
22
24
25
#include "ns3/ndnSIM/model/ndn-common.hpp"
26
27
#include <boost/intrusive/options.hpp>
28
#include <boost/intrusive/list.hpp>
29
30
#include <ns3/random-variable.h>
31
32
namespace
ns3 {
33
namespace
ndn {
34
namespace
ndnSIM {
35
39
struct
probability_policy_traits {
40
static
std::string
41
GetName()
42
{
43
return
"ProbabilityImpl"
;
44
}
45
46
struct
policy_hook_type :
public
boost::intrusive::list_member_hook<> {
47
};
48
49
template
<
class
Container>
50
struct
container_hook {
51
typedef
boost::intrusive::member_hook<Container, policy_hook_type, &Container::policy_hook_>
52
type;
53
};
54
55
template
<
class
Base,
class
Container,
class
Hook>
56
struct
policy {
57
typedef
typename
boost::intrusive::list<Container, Hook> policy_container;
58
59
class
type :
public
policy_container {
60
public
:
61
typedef
policy policy_base;
// to get access to get_freshness methods from outside
62
typedef
Container parent_trie;
63
64
type(Base& base)
65
: base_(base)
66
, max_size_(100)
67
, probability_(1.0)
68
{
69
}
70
71
inline
void
72
update(
typename
parent_trie::iterator item)
73
{
74
}
75
76
inline
bool
77
insert(
typename
parent_trie::iterator item)
78
{
79
if
(ns3_rand_.GetValue() < probability_) {
80
policy_container::push_back(*item);
81
82
// allow caching
83
return
true
;
84
}
85
else
{
86
// don't allow caching
87
return
false
;
88
}
89
}
90
91
inline
void
92
lookup(
typename
parent_trie::iterator item)
93
{
94
// do nothing. it's random policy
95
}
96
97
inline
void
98
erase(
typename
parent_trie::iterator item)
99
{
100
policy_container::erase(policy_container::s_iterator_to(*item));
101
}
102
103
inline
void
104
clear()
105
{
106
policy_container::clear();
107
}
108
109
inline
void
110
set_max_size(
size_t
max_size)
111
{
112
max_size_ = max_size;
113
}
114
115
inline
size_t
116
get_max_size()
const
117
{
118
return
max_size_;
119
}
120
121
inline
void
122
set_probability(
double
probability)
123
{
124
probability_ = probability;
125
}
126
127
inline
double
128
get_probability()
const
129
{
130
return
probability_;
131
}
132
133
private
:
134
type()
135
: base_(*((Base*)0)){};
136
137
private
:
138
Base& base_;
139
size_t
max_size_;
140
double
probability_;
141
UniformVariable ns3_rand_;
142
};
143
};
144
};
145
146
}
// ndnSIM
147
}
// ndn
148
}
// ns3
149
151
152
#endif // PROBABILITY_POLICY_H
ndnSIM
model
cs
custom-policies
probability-policy.hpp
Generated on Wed Feb 18 2015 16:31:16 for ndnSIM by
1.8.7