Dash Core
0.12.2.1
P2P Digital Currency
timedata.h
Go to the documentation of this file.
1
// Copyright (c) 2014 The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#ifndef BITCOIN_TIMEDATA_H
6
#define BITCOIN_TIMEDATA_H
7
8
#include <algorithm>
9
#include <assert.h>
10
#include <stdint.h>
11
#include <vector>
12
13
class
CNetAddr
;
14
19
template
<
typename
T>
20
class
CMedianFilter
21
{
22
private
:
23
std::vector<T>
vValues
;
24
std::vector<T>
vSorted
;
25
unsigned
int
nSize
;
26
27
public
:
28
CMedianFilter
(
unsigned
int
size
, T initial_value) :
nSize
(
size
)
29
{
30
vValues
.reserve(
size
);
31
vValues
.push_back(initial_value);
32
vSorted
=
vValues
;
33
}
34
35
void
input
(T value)
36
{
37
if
(
vValues
.size() ==
nSize
) {
38
vValues
.erase(
vValues
.begin());
39
}
40
vValues
.push_back(value);
41
42
vSorted
.resize(
vValues
.size());
43
std::copy(
vValues
.begin(),
vValues
.end(),
vSorted
.begin());
44
std::sort(
vSorted
.begin(),
vSorted
.end());
45
}
46
47
T
median
()
const
48
{
49
int
size
=
vSorted
.size();
50
assert(
size
> 0);
51
if
(
size
& 1)
// Odd number of elements
52
{
53
return
vSorted
[
size
/ 2];
54
}
else
// Even number of elements
55
{
56
return
(
vSorted
[
size
/ 2 - 1] +
vSorted
[
size
/ 2]) / 2;
57
}
58
}
59
60
int
size
()
const
61
{
62
return
vValues
.size();
63
}
64
65
std::vector<T>
sorted
()
const
66
{
67
return
vSorted
;
68
}
69
};
70
72
int64_t
GetTimeOffset
();
73
int64_t
GetAdjustedTime
();
74
void
AddTimeData
(
const
CNetAddr
& ip, int64_t nTime);
75
76
#endif // BITCOIN_TIMEDATA_H
CMedianFilter
Definition:
timedata.h:20
AddTimeData
void AddTimeData(const CNetAddr &ip, int64_t nTime)
Definition:
timedata.cpp:45
CMedianFilter::size
int size() const
Definition:
timedata.h:60
CMedianFilter::median
T median() const
Definition:
timedata.h:47
CNetAddr
Definition:
netaddress.h:30
CMedianFilter::CMedianFilter
CMedianFilter(unsigned int size, T initial_value)
Definition:
timedata.h:28
CMedianFilter::input
void input(T value)
Definition:
timedata.h:35
CMedianFilter::nSize
unsigned int nSize
Definition:
timedata.h:25
GetTimeOffset
int64_t GetTimeOffset()
Definition:
timedata.cpp:27
GetAdjustedTime
int64_t GetAdjustedTime()
Definition:
timedata.cpp:33
CMedianFilter::sorted
std::vector< T > sorted() const
Definition:
timedata.h:65
CMedianFilter::vSorted
std::vector< T > vSorted
Definition:
timedata.h:24
CMedianFilter::vValues
std::vector< T > vValues
Definition:
timedata.h:23
src
timedata.h
Generated on Thu Dec 14 2017 13:15:09 for Dash Core by
1.8.14