#include <net_peerlist.h>
|
| bool | init (peerlist_types &&peers, bool allow_local_ip) |
| |
| size_t | get_white_peers_count () |
| |
| size_t | get_gray_peers_count () |
| |
| bool | merge_peerlist (const std::vector< peerlist_entry > &outer_bs) |
| |
| bool | get_peerlist_head (std::vector< peerlist_entry > &bs_head, bool anonymize, uint32_t depth=P2P_DEFAULT_PEERS_IN_HANDSHAKE) |
| |
| void | get_peerlist (std::vector< peerlist_entry > &pl_gray, std::vector< peerlist_entry > &pl_white) |
| |
| void | get_peerlist (peerlist_types &peers) |
| |
| bool | get_white_peer_by_index (peerlist_entry &p, size_t i) |
| |
| bool | get_gray_peer_by_index (peerlist_entry &p, size_t i) |
| |
| template<typename F > |
| bool | foreach (bool white, const F &f) |
| |
| bool | append_with_peer_white (const peerlist_entry &pr) |
| |
| bool | append_with_peer_gray (const peerlist_entry &pr) |
| |
| bool | append_with_peer_anchor (const anchor_peerlist_entry &ple) |
| |
| bool | set_peer_just_seen (peerid_type peer, const epee::net_utils::network_address &addr, uint32_t pruning_seed, uint16_t rpc_port) |
| |
| bool | set_peer_unreachable (const peerlist_entry &pr) |
| |
| bool | is_host_allowed (const epee::net_utils::network_address &address) |
| |
| bool | get_random_gray_peer (peerlist_entry &pe) |
| |
| bool | remove_from_peer_gray (const peerlist_entry &pe) |
| |
| bool | get_and_empty_anchor_peerlist (std::vector< anchor_peerlist_entry > &apl) |
| |
| bool | remove_from_peer_anchor (const epee::net_utils::network_address &addr) |
| |
| bool | remove_from_peer_white (const peerlist_entry &pe) |
| |
Definition at line 99 of file net_peerlist.h.
◆ append_with_peer_anchor()
Definition at line 403 of file net_peerlist.h.
409 auto by_addr_it_anchor = m_peers_anchor.get<by_addr>().find(ple.adr);
411 if(by_addr_it_anchor == m_peers_anchor.get<by_addr>().end()) {
412 m_peers_anchor.insert(ple);
417 CATCH_ENTRY_L0(
"peerlist_manager::append_with_peer_anchor()",
false);
#define CRITICAL_REGION_LOCAL(x)
#define CATCH_ENTRY_L0(lacation, return_val)
◆ append_with_peer_gray()
Definition at line 368 of file net_peerlist.h.
376 auto by_addr_it_wt = m_peers_white.get<by_addr>().find(ple.adr);
377 if(by_addr_it_wt != m_peers_white.get<by_addr>().end())
381 auto by_addr_it_gr = m_peers_gray.get<by_addr>().find(ple.adr);
382 if(by_addr_it_gr == m_peers_gray.get<by_addr>().end())
385 m_peers_gray.insert(ple);
386 trim_gray_peerlist();
391 if (by_addr_it_gr->pruning_seed && ple.pruning_seed == 0)
392 new_ple.pruning_seed = by_addr_it_gr->pruning_seed;
393 if (by_addr_it_gr->rpc_port && ple.rpc_port == 0)
394 new_ple.rpc_port = by_addr_it_gr->rpc_port;
395 new_ple.last_seen = by_addr_it_gr->last_seen;
396 m_peers_gray.replace(by_addr_it_gr, new_ple);
399 CATCH_ENTRY_L0(
"peerlist_manager::append_with_peer_gray()",
false);
#define CRITICAL_REGION_LOCAL(x)
#define CATCH_ENTRY_L0(lacation, return_val)
◆ append_with_peer_white()
Definition at line 332 of file net_peerlist.h.
340 auto by_addr_it_wt = m_peers_white.get<by_addr>().find(ple.adr);
341 if(by_addr_it_wt == m_peers_white.get<by_addr>().end())
344 m_peers_white.insert(ple);
345 trim_white_peerlist();
350 if (by_addr_it_wt->pruning_seed && ple.pruning_seed == 0)
351 new_ple.pruning_seed = by_addr_it_wt->pruning_seed;
352 if (by_addr_it_wt->rpc_port && ple.rpc_port == 0)
353 new_ple.rpc_port = by_addr_it_wt->rpc_port;
354 new_ple.last_seen = by_addr_it_wt->last_seen;
355 m_peers_white.replace(by_addr_it_wt, new_ple);
358 auto by_addr_it_gr = m_peers_gray.get<by_addr>().find(ple.adr);
359 if(by_addr_it_gr != m_peers_gray.get<by_addr>().end())
361 m_peers_gray.erase(by_addr_it_gr);
364 CATCH_ENTRY_L0(
"peerlist_manager::append_with_peer_white()",
false);
#define CRITICAL_REGION_LOCAL(x)
#define CATCH_ENTRY_L0(lacation, return_val)
◆ foreach()
template<typename F >
| bool nodetool::peerlist_manager::foreach |
( |
bool |
white, |
|
|
const F & |
f |
|
) |
| |
|
inline |
Definition at line 305 of file net_peerlist.h.
308 peers_indexed::index<by_time>::type& by_time_index = white ? m_peers_white.get<by_time>() : m_peers_gray.get<by_time>();
309 for(
const peers_indexed::value_type& vl: boost::adaptors::reverse(by_time_index))
#define CRITICAL_REGION_LOCAL(x)
◆ get_and_empty_anchor_peerlist()
Definition at line 478 of file net_peerlist.h.
484 auto begin = m_peers_anchor.get<by_time>().begin();
485 auto end = m_peers_anchor.get<by_time>().end();
491 m_peers_anchor.get<by_time>().clear();
495 CATCH_ENTRY_L0(
"peerlist_manager::get_and_empty_anchor_peerlist()",
false);
#define CRITICAL_REGION_LOCAL(x)
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
#define CATCH_ENTRY_L0(lacation, return_val)
◆ get_gray_peer_by_index()
Definition at line 242 of file net_peerlist.h.
245 if(i >= m_peers_gray.size())
248 peers_indexed::index<by_time>::type& by_time_index = m_peers_gray.get<by_time>();
#define CRITICAL_REGION_LOCAL(x)
t_iterator move_it_backward(t_iterator it, size_t count)
◆ get_gray_peers_count()
| size_t nodetool::peerlist_manager::get_gray_peers_count |
( |
| ) |
|
|
inline |
◆ get_peerlist() [1/2]
Definition at line 273 of file net_peerlist.cpp.
276 copy_peers(pl_gray, m_peers_gray.get<by_addr>());
277 copy_peers(pl_white, m_peers_white.get<by_addr>());
#define CRITICAL_REGION_LOCAL(x)
◆ get_peerlist() [2/2]
| void nodetool::peerlist_manager::get_peerlist |
( |
peerlist_types & |
peers | ) |
|
Definition at line 280 of file net_peerlist.cpp.
283 peers.white.reserve(peers.white.size() + m_peers_white.size());
284 peers.gray.reserve(peers.gray.size() + m_peers_gray.size());
285 peers.anchor.reserve(peers.anchor.size() + m_peers_anchor.size());
287 copy_peers(peers.white, m_peers_white.get<by_addr>());
288 copy_peers(peers.gray, m_peers_gray.get<by_addr>());
289 copy_peers(peers.anchor, m_peers_anchor.get<by_addr>());
#define CRITICAL_REGION_LOCAL(x)
◆ get_peerlist_head()
Definition at line 267 of file net_peerlist.h.
270 peers_indexed::index<by_time>::type& by_time_index=m_peers_white.get<by_time>();
282 const uint32_t pick_depth = anonymize ? depth + depth / 5 : depth;
283 bs_head.reserve(pick_depth);
284 for(
const peers_indexed::value_type& vl: boost::adaptors::reverse(by_time_index))
286 if(cnt++ >= pick_depth)
289 bs_head.push_back(vl);
294 std::random_shuffle(bs_head.begin(), bs_head.end());
295 if (bs_head.size() > depth)
296 bs_head.resize(depth);
297 for (
auto &e: bs_head)
#define CRITICAL_REGION_LOCAL(x)
◆ get_random_gray_peer()
Definition at line 421 of file net_peerlist.h.
427 if (m_peers_gray.empty()) {
433 peers_indexed::index<by_time>::type& by_time_index = m_peers_gray.get<by_time>();
438 CATCH_ENTRY_L0(
"peerlist_manager::get_random_gray_peer()",
false);
std::enable_if< std::is_unsigned< T >::value, T >::type rand_idx(T sz)
#define CRITICAL_REGION_LOCAL(x)
t_iterator move_it_backward(t_iterator it, size_t count)
#define CATCH_ENTRY_L0(lacation, return_val)
◆ get_white_peer_by_index()
Definition at line 230 of file net_peerlist.h.
233 if(i >= m_peers_white.size())
236 peers_indexed::index<by_time>::type& by_time_index = m_peers_white.get<by_time>();
#define CRITICAL_REGION_LOCAL(x)
t_iterator move_it_backward(t_iterator it, size_t count)
◆ get_white_peers_count()
| size_t nodetool::peerlist_manager::get_white_peers_count |
( |
| ) |
|
|
inline |
◆ init()
Definition at line 259 of file net_peerlist.cpp.
263 if (!m_peers_white.empty() || !m_peers_gray.empty() || !m_peers_anchor.empty())
266 add_peers(m_peers_white.get<by_addr>(),
std::move(peers.white));
267 add_peers(m_peers_gray.get<by_addr>(),
std::move(peers.gray));
268 add_peers(m_peers_anchor.get<by_addr>(),
std::move(peers.anchor));
269 m_allow_local_ip = allow_local_ip;
#define CRITICAL_REGION_LOCAL(x)
const T & move(const T &t)
◆ is_host_allowed()
◆ merge_peerlist()
| bool nodetool::peerlist_manager::merge_peerlist |
( |
const std::vector< peerlist_entry > & |
outer_bs | ) |
|
|
inline |
Definition at line 217 of file net_peerlist.h.
225 trim_gray_peerlist();
#define CRITICAL_REGION_LOCAL(x)
◆ remove_from_peer_anchor()
Definition at line 499 of file net_peerlist.h.
505 anchor_peers_indexed::index_iterator<by_addr>::type iterator = m_peers_anchor.get<by_addr>().find(addr);
507 if (iterator != m_peers_anchor.get<by_addr>().end()) {
508 m_peers_anchor.erase(iterator);
513 CATCH_ENTRY_L0(
"peerlist_manager::remove_from_peer_anchor()",
false);
#define CRITICAL_REGION_LOCAL(x)
#define CATCH_ENTRY_L0(lacation, return_val)
◆ remove_from_peer_gray()
Definition at line 460 of file net_peerlist.h.
466 peers_indexed::index_iterator<by_addr>::type iterator = m_peers_gray.get<by_addr>().find(pe.adr);
468 if (iterator != m_peers_gray.get<by_addr>().end()) {
469 m_peers_gray.erase(iterator);
474 CATCH_ENTRY_L0(
"peerlist_manager::remove_from_peer_gray()",
false);
#define CRITICAL_REGION_LOCAL(x)
#define CATCH_ENTRY_L0(lacation, return_val)
◆ remove_from_peer_white()
Definition at line 442 of file net_peerlist.h.
448 peers_indexed::index_iterator<by_addr>::type iterator = m_peers_white.get<by_addr>().find(pe.adr);
450 if (iterator != m_peers_white.get<by_addr>().end()) {
451 m_peers_white.erase(iterator);
456 CATCH_ENTRY_L0(
"peerlist_manager::remove_from_peer_white()",
false);
#define CRITICAL_REGION_LOCAL(x)
#define CATCH_ENTRY_L0(lacation, return_val)
◆ set_peer_just_seen()
Definition at line 316 of file net_peerlist.h.
324 ple.last_seen =
time(NULL);
325 ple.pruning_seed = pruning_seed;
326 ple.rpc_port = rpc_port;
#define CRITICAL_REGION_LOCAL(x)
#define CATCH_ENTRY_L0(lacation, return_val)
◆ set_peer_unreachable()
◆ boost::serialization::access
| friend class boost::serialization::access |
|
friend |
The documentation for this class was generated from the following files: