Electroneum
Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
nodetool::peerlist_manager Class Reference

#include <net_peerlist.h>

Classes

struct  by_addr
 
struct  by_id
 
struct  by_time
 
struct  modify_all
 
struct  modify_all_but_id
 
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)
 
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)
 

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 ()
 

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)
inline

◆ 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_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)
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 
)
inline

◆ set_peer_unreachable()

bool nodetool::peerlist_manager::set_peer_unreachable ( const peerlist_entry pr)

◆ trim_gray_peerlist()

void nodetool::peerlist_manager::trim_gray_peerlist ( )
inlineprivate

◆ trim_white_peerlist()

void nodetool::peerlist_manager::trim_white_peerlist ( )
inlineprivate

Friends And Related Function Documentation

◆ 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: