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