Bitcoin Core  27.99.0
P2P Digital Currency
timeoffsets.h
Go to the documentation of this file.
1 // Copyright (c) 2024-present 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_NODE_TIMEOFFSETS_H
6 #define BITCOIN_NODE_TIMEOFFSETS_H
7 
8 #include <sync.h>
9 
10 #include <chrono>
11 #include <cstddef>
12 #include <deque>
13 
15 {
17  static constexpr size_t MAX_SIZE{50};
19  static constexpr std::chrono::minutes WARN_THRESHOLD{10};
20 
21  mutable Mutex m_mutex;
24  std::deque<std::chrono::seconds> m_offsets GUARDED_BY(m_mutex){};
25 
26 public:
28  void Add(std::chrono::seconds offset) EXCLUSIVE_LOCKS_REQUIRED(!m_mutex);
29 
32  std::chrono::seconds Median() const EXCLUSIVE_LOCKS_REQUIRED(!m_mutex);
33 
37 };
38 
39 #endif // BITCOIN_NODE_TIMEOFFSETS_H
void Add(std::chrono::seconds offset) EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
Add a new time offset sample.
Definition: timeoffsets.cpp:23
static constexpr size_t MAX_SIZE
Maximum number of timeoffsets stored.
Definition: timeoffsets.h:17
bool WarnIfOutOfSync() const EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
Raise warnings if the median time offset exceeds the warnings threshold.
Definition: timeoffsets.cpp:47
std::deque< std::chrono::seconds > m_offsets GUARDED_BY(m_mutex)
The observed time differences between our local clock and those of our outbound peers.
Definition: timeoffsets.h:24
Mutex m_mutex
Definition: timeoffsets.h:21
std::chrono::seconds Median() const EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
Compute and return the median of the collected time offset samples.
Definition: timeoffsets.cpp:35
static constexpr std::chrono::minutes WARN_THRESHOLD
Minimum difference between system and network time for a warning to be raised.
Definition: timeoffsets.h:19
#define EXCLUSIVE_LOCKS_REQUIRED(...)
Definition: threadsafety.h:49