Monero
Loading...
Searching...
No Matches
nodetool::peerlist_manager Class Reference

#include <net_peerlist.h>

Collaboration diagram for nodetool::peerlist_manager:

Classes

struct  by_time
struct  by_id
struct  by_addr
struct  modify_all_but_id
struct  modify_all
struct  modify_last_seen

Public Member Functions

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, const std::function< bool(const peerlist_entry &)> &f=NULL)
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)
void evict_host_from_peerlist (bool white, const peerlist_entry &pr)
bool append_with_peer_white (const peerlist_entry &pr, bool trust_last_seen=false)
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, uint32_t rpc_credits_per_hash)
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)
template<typename F>
size_t filter (bool white, const F &f)

Private Types

typedef boost::multi_index_container< peerlist_entry, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< by_addr >, boost::multi_index::member< peerlist_entry, epee::net_utils::network_address,&peerlist_entry::adr > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< by_time >, boost::multi_index::member< peerlist_entry, int64_t,&peerlist_entry::last_seen > > > > peers_indexed
typedef boost::multi_index_container< anchor_peerlist_entry, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< by_addr >, boost::multi_index::member< anchor_peerlist_entry, epee::net_utils::network_address,&anchor_peerlist_entry::adr > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< by_time >, boost::multi_index::member< anchor_peerlist_entry, int64_t,&anchor_peerlist_entry::first_seen > > > > anchor_peers_indexed

Private Member Functions

void trim_white_peerlist ()
void trim_gray_peerlist ()

Static Private Member Functions

static peerlist_entry get_nth_latest_peer (peers_indexed &peerlist, size_t n)

Private Attributes

epee::critical_section m_peerlist_lock
std::string m_config_folder
bool m_allow_local_ip
peers_indexed m_peers_gray
peers_indexed m_peers_white
anchor_peers_indexed m_peers_anchor

Friends

class boost::serialization::access

Member Typedef Documentation

◆ anchor_peers_indexed

typedef boost::multi_index_container< anchor_peerlist_entry, boost::multi_index::indexed_by< boost::multi_index::ordered_unique<boost::multi_index::tag<by_addr>, boost::multi_index::member<anchor_peerlist_entry,epee::net_utils::network_address,&anchor_peerlist_entry::adr> >, boost::multi_index::ordered_non_unique<boost::multi_index::tag<by_time>, boost::multi_index::member<anchor_peerlist_entry,int64_t,&anchor_peerlist_entry::first_seen> > > > nodetool::peerlist_manager::anchor_peers_indexed
private

◆ peers_indexed

typedef boost::multi_index_container< peerlist_entry, boost::multi_index::indexed_by< boost::multi_index::ordered_unique<boost::multi_index::tag<by_addr>, boost::multi_index::member<peerlist_entry,epee::net_utils::network_address,&peerlist_entry::adr> >, boost::multi_index::ordered_non_unique<boost::multi_index::tag<by_time>, boost::multi_index::member<peerlist_entry,int64_t,&peerlist_entry::last_seen> > > > nodetool::peerlist_manager::peers_indexed
private

Member Function Documentation

◆ append_with_peer_anchor()

bool nodetool::peerlist_manager::append_with_peer_anchor ( const anchor_peerlist_entry & ple)
inline

◆ append_with_peer_gray()

bool nodetool::peerlist_manager::append_with_peer_gray ( const peerlist_entry & pr)
inline

◆ append_with_peer_white()

bool nodetool::peerlist_manager::append_with_peer_white ( const peerlist_entry & pr,
bool trust_last_seen = false )
inline

◆ evict_host_from_peerlist()

void nodetool::peerlist_manager::evict_host_from_peerlist ( bool white,
const peerlist_entry & pr )

◆ filter()

template<typename F>
size_t nodetool::peerlist_manager::filter ( bool white,
const F & f )

◆ foreach()

template<typename F>
bool nodetool::peerlist_manager::foreach ( bool white,
const F & f )
inline

◆ get_and_empty_anchor_peerlist()

bool nodetool::peerlist_manager::get_and_empty_anchor_peerlist ( std::vector< anchor_peerlist_entry > & apl)
inline

◆ get_gray_peer_by_index()

bool nodetool::peerlist_manager::get_gray_peer_by_index ( peerlist_entry & p,
size_t i )
inline

◆ get_gray_peers_count()

size_t nodetool::peerlist_manager::get_gray_peers_count ( )
inline

◆ get_nth_latest_peer()

peerlist_entry nodetool::peerlist_manager::get_nth_latest_peer ( peers_indexed & peerlist,
size_t n )
inlinestaticprivate

◆ get_peerlist() [1/2]

void nodetool::peerlist_manager::get_peerlist ( peerlist_types & peers)

◆ get_peerlist() [2/2]

void nodetool::peerlist_manager::get_peerlist ( std::vector< peerlist_entry > & pl_gray,
std::vector< peerlist_entry > & pl_white )

◆ get_peerlist_head()

bool nodetool::peerlist_manager::get_peerlist_head ( std::vector< peerlist_entry > & bs_head,
bool anonymize,
uint32_t depth = P2P_DEFAULT_PEERS_IN_HANDSHAKE )
inline

◆ get_random_gray_peer()

bool nodetool::peerlist_manager::get_random_gray_peer ( peerlist_entry & pe)
inline

◆ get_white_peer_by_index()

bool nodetool::peerlist_manager::get_white_peer_by_index ( peerlist_entry & p,
size_t i )
inline

◆ get_white_peers_count()

size_t nodetool::peerlist_manager::get_white_peers_count ( )
inline

◆ init()

bool nodetool::peerlist_manager::init ( peerlist_types && peers,
bool allow_local_ip )

◆ is_host_allowed()

bool nodetool::peerlist_manager::is_host_allowed ( const epee::net_utils::network_address & address)
inline

◆ merge_peerlist()

bool nodetool::peerlist_manager::merge_peerlist ( const std::vector< peerlist_entry > & outer_bs,
const std::function< bool(const peerlist_entry &)> & f = NULL )
inline

◆ remove_from_peer_anchor()

bool nodetool::peerlist_manager::remove_from_peer_anchor ( const epee::net_utils::network_address & addr)
inline

◆ remove_from_peer_gray()

bool nodetool::peerlist_manager::remove_from_peer_gray ( const peerlist_entry & pe)
inline

◆ remove_from_peer_white()

bool nodetool::peerlist_manager::remove_from_peer_white ( const peerlist_entry & pe)
inline

◆ set_peer_just_seen()

bool nodetool::peerlist_manager::set_peer_just_seen ( peerid_type peer,
const epee::net_utils::network_address & addr,
uint32_t pruning_seed,
uint16_t rpc_port,
uint32_t rpc_credits_per_hash )
inline

◆ trim_gray_peerlist()

void nodetool::peerlist_manager::trim_gray_peerlist ( )
inlineprivate

◆ trim_white_peerlist()

void nodetool::peerlist_manager::trim_white_peerlist ( )
inlineprivate

◆ boost::serialization::access

friend class boost::serialization::access
friend

Member Data Documentation

◆ m_allow_local_ip

bool nodetool::peerlist_manager::m_allow_local_ip
private

◆ m_config_folder

std::string nodetool::peerlist_manager::m_config_folder
private

◆ m_peerlist_lock

epee::critical_section nodetool::peerlist_manager::m_peerlist_lock
private

◆ m_peers_anchor

anchor_peers_indexed nodetool::peerlist_manager::m_peers_anchor
private

◆ m_peers_gray

peers_indexed nodetool::peerlist_manager::m_peers_gray
private

◆ m_peers_white

peers_indexed nodetool::peerlist_manager::m_peers_white
private

The documentation for this class was generated from the following files: