[−][src]Struct grin_p2p::Peers
Fields
adapter: Arc<dyn ChainAdapter>
Methods
impl Peers
[src]
pub fn new(
store: PeerStore,
adapter: Arc<dyn ChainAdapter>,
config: P2PConfig
) -> Peers
[src]
store: PeerStore,
adapter: Arc<dyn ChainAdapter>,
config: P2PConfig
) -> Peers
pub fn add_connected(&self, peer: Arc<Peer>) -> Result<(), Error>
[src]
Adds the peer to our internal peer mapping. Note that the peer is still returned so the server can run it.
pub fn add_banned(
&self,
addr: PeerAddr,
ban_reason: ReasonForBan
) -> Result<(), Error>
[src]
&self,
addr: PeerAddr,
ban_reason: ReasonForBan
) -> Result<(), Error>
Add a peer as banned to block future connections, usually due to failed handshake
pub fn update_dandelion_relay(&self)
[src]
pub fn get_dandelion_relay(&self) -> Option<(i64, Arc<Peer>)>
[src]
pub fn is_known(&self, addr: PeerAddr) -> bool
[src]
pub fn connected_peers(&self) -> Vec<Arc<Peer>>
[src]
Get vec of peers we are currently connected to.
pub fn outgoing_connected_peers(&self) -> Vec<Arc<Peer>>
[src]
pub fn get_connected_peer(&self, addr: PeerAddr) -> Option<Arc<Peer>>
[src]
Get a peer we're connected to by address.
pub fn peer_count(&self) -> u32
[src]
Number of peers currently connected to.
pub fn peer_outbound_count(&self) -> u32
[src]
Number of outbound peers currently connected to.
pub fn more_work_peers(&self) -> Vec<Arc<Peer>>
[src]
pub fn more_or_same_work_peers(&self) -> usize
[src]
pub fn more_work_peer(&self) -> Option<Arc<Peer>>
[src]
Returns single random peer with more work than us.
pub fn most_work_peers(&self) -> Vec<Arc<Peer>>
[src]
Return vec of connected peers that currently have the most worked branch, showing the highest total difficulty.
pub fn most_work_peer(&self) -> Option<Arc<Peer>>
[src]
Returns single random peer with the most worked branch, showing the highest total difficulty.
pub fn is_banned(&self, peer_addr: PeerAddr) -> bool
[src]
pub fn ban_peer(&self, peer_addr: PeerAddr, ban_reason: ReasonForBan)
[src]
Ban a peer, disconnecting it if we're currently connected
pub fn unban_peer(&self, peer_addr: PeerAddr)
[src]
Unban a peer, checks if it exists and banned then unban
pub fn broadcast_compact_block(&self, b: &CompactBlock)
[src]
Broadcasts the provided compact block to PEER_MAX_COUNT of our peers. This is only used when initially broadcasting a newly mined block from a mining node so we want to broadcast it far and wide. A peer implementation may drop the broadcast request if it knows the remote peer already has the block.
pub fn broadcast_header(&self, bh: &BlockHeader)
[src]
Broadcasts the provided header to PEER_PREFERRED_COUNT of our peers. We may be connected to PEER_MAX_COUNT peers so we only want to broadcast to a random subset of peers. A peer implementation may drop the broadcast request if it knows the remote peer already has the header.
pub fn relay_stem_transaction(&self, tx: &Transaction) -> Result<(), Error>
[src]
Relays the provided stem transaction to our single stem peer.
pub fn broadcast_transaction(&self, tx: &Transaction)
[src]
Broadcasts the provided transaction to PEER_PREFERRED_COUNT of our peers. We may be connected to PEER_MAX_COUNT peers so we only want to broadcast to a random subset of peers. A peer implementation may drop the broadcast request if it knows the remote peer already has the transaction.
pub fn check_all(&self, total_difficulty: Difficulty, height: u64)
[src]
Ping all our connected peers. Always automatically expects a pong back or disconnects. This acts as a liveness test.
pub fn all_peers(&self) -> Vec<PeerData>
[src]
All peer information we have in storage
pub fn find_peers(
&self,
state: State,
cap: Capabilities,
count: usize
) -> Vec<PeerData>
[src]
&self,
state: State,
cap: Capabilities,
count: usize
) -> Vec<PeerData>
Find peers in store (not necessarily connected) and return their data
pub fn get_peer(&self, peer_addr: PeerAddr) -> Result<PeerData, Error>
[src]
Get peer in store by address
pub fn exists_peer(&self, peer_addr: PeerAddr) -> Result<bool, Error>
[src]
Whether we've already seen a peer with the provided address
pub fn save_peer(&self, p: &PeerData) -> Result<(), Error>
[src]
Saves updated information about a peer
pub fn update_state(
&self,
peer_addr: PeerAddr,
new_state: State
) -> Result<(), Error>
[src]
&self,
peer_addr: PeerAddr,
new_state: State
) -> Result<(), Error>
Updates the state of a peer in store
pub fn clean_peers(&self, max_count: usize)
[src]
Iterate over the peer list and prune all peers we have lost connection to or have been deemed problematic. Also avoid connected peer count getting too high.
pub fn stop(&self)
[src]
pub fn enough_peers(&self) -> bool
[src]
pub fn healthy_peers_mix(&self) -> bool
[src]
We have enough peers, both total connected and outbound connected
pub fn remove_expired(&self)
[src]
Removes those peers that seem to have expired
Trait Implementations
impl ChainAdapter for Peers
[src]
fn total_difficulty(&self) -> Difficulty
[src]
fn total_height(&self) -> u64
[src]
fn get_transaction(&self, kernel_hash: Hash) -> Option<Transaction>
[src]
fn tx_kernel_received(&self, kernel_hash: Hash, addr: PeerAddr)
[src]
fn transaction_received(&self, tx: Transaction, stem: bool)
[src]
fn block_received(
&self,
b: Block,
peer_addr: PeerAddr,
was_requested: bool
) -> bool
[src]
&self,
b: Block,
peer_addr: PeerAddr,
was_requested: bool
) -> bool
fn compact_block_received(&self, cb: CompactBlock, peer_addr: PeerAddr) -> bool
[src]
fn header_received(&self, bh: BlockHeader, peer_addr: PeerAddr) -> bool
[src]
fn headers_received(&self, headers: &[BlockHeader], peer_addr: PeerAddr) -> bool
[src]
fn locate_headers(&self, hs: &[Hash]) -> Vec<BlockHeader>
[src]
fn get_block(&self, h: Hash) -> Option<Block>
[src]
fn txhashset_read(&self, h: Hash) -> Option<TxHashSetRead>
[src]
fn txhashset_receive_ready(&self) -> bool
[src]
fn txhashset_write(
&self,
h: Hash,
txhashset_data: File,
peer_addr: PeerAddr
) -> bool
[src]
&self,
h: Hash,
txhashset_data: File,
peer_addr: PeerAddr
) -> bool
fn txhashset_download_update(
&self,
start_time: DateTime<Utc>,
downloaded_size: u64,
total_size: u64
) -> bool
[src]
&self,
start_time: DateTime<Utc>,
downloaded_size: u64,
total_size: u64
) -> bool
impl NetAdapter for Peers
[src]
fn find_peer_addrs(&self, capab: Capabilities) -> Vec<PeerAddr>
[src]
Find good peers we know with the provided capability and return their addresses.
fn peer_addrs_received(&self, peer_addrs: Vec<PeerAddr>)
[src]
A list of peers has been received from one of our peers.
fn peer_difficulty(&self, addr: PeerAddr, diff: Difficulty, height: u64)
[src]
fn is_banned(&self, addr: PeerAddr) -> bool
[src]
Auto Trait Implementations
Blanket Implementations
impl<T> From for T
[src]
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = !
try_from
)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
try_from
)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> UnsafeAny for T where
T: Any,
T: Any,
impl<T> Erased for T
impl<T> Same for T
type Output = T
Should always be Self
impl<T> SafeBorrow for T where
T: ?Sized,
T: ?Sized,