Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F12944908
timedata.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
1 KB
Subscribers
None
timedata.h
View Options
// Copyright (c) 2014 The Bitcoin developers
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_TIMEDATA_H
#define BITCOIN_TIMEDATA_H
#include
<algorithm>
#include
<assert.h>
#include
<stdint.h>
#include
<vector>
class
CNetAddr
;
/** Median filter over a stream of values.
* Returns the median of the last N numbers
*/
template
<
typename
T
>
class
CMedianFilter
{
private
:
std
::
vector
<
T
>
vValues
;
std
::
vector
<
T
>
vSorted
;
unsigned
int
nSize
;
public
:
CMedianFilter
(
unsigned
int
size
,
T
initial_value
)
:
nSize
(
size
)
{
vValues
.
reserve
(
size
);
vValues
.
push_back
(
initial_value
);
vSorted
=
vValues
;
}
void
input
(
T
value
)
{
if
(
vValues
.
size
()
==
nSize
)
{
vValues
.
erase
(
vValues
.
begin
());
}
vValues
.
push_back
(
value
);
vSorted
.
resize
(
vValues
.
size
());
std
::
copy
(
vValues
.
begin
(),
vValues
.
end
(),
vSorted
.
begin
());
std
::
sort
(
vSorted
.
begin
(),
vSorted
.
end
());
}
T
median
()
const
{
int
size
=
vSorted
.
size
();
assert
(
size
>
0
);
if
(
size
&
1
)
// Odd number of elements
{
return
vSorted
[
size
/
2
];
}
else
// Even number of elements
{
return
(
vSorted
[
size
/
2-1
]
+
vSorted
[
size
/
2
])
/
2
;
}
}
int
size
()
const
{
return
vValues
.
size
();
}
std
::
vector
<
T
>
sorted
()
const
{
return
vSorted
;
}
};
/* Functions to keep track of adjusted P2P time */
int64_t
GetTimeOffset
();
int64_t
GetAdjustedTime
();
void
AddTimeData
(
const
CNetAddr
&
ip
,
int64_t
nTime
);
#endif
// BITCOIN_TIMEDATA_H
File Metadata
Details
Attached
Mime Type
text/x-c++
Expires
Fri, Feb 7, 16:06 (1 d, 17 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5082663
Default Alt Text
timedata.h (1 KB)
Attached To
rABC Bitcoin ABC
Event Timeline
Log In to Comment