Module sv::peer [−][src]
Expand description
Node connection and message handling
Examples
Send and receive a message to a node syncronously:
use sv::messages::{Message, Ping, Version, NODE_BITCOIN_CASH, PROTOCOL_VERSION};
use sv::network::Network;
use sv::peer::{Peer, SVPeerFilter};
use sv::util::rx::Observable;
use sv::util::secs_since;
use std::time::UNIX_EPOCH;
let (ip, port) = Network::Mainnet.seed_iter().next().unwrap();
let version = Version {
version: PROTOCOL_VERSION,
services: NODE_BITCOIN_CASH,
timestamp: secs_since(UNIX_EPOCH) as i64,
user_agent: "rust-sv".to_string(),
..Default::default()
};
let peer = Peer::connect(ip, port, Network::Mainnet, version, SVPeerFilter::new(0));
peer.connected_event().poll();
let ping = Message::Ping(Ping { nonce: 0 });
peer.send(&ping).unwrap();
let response = peer.messages().poll();
Handle node events asynronously:
use sv::messages::{Version, NODE_BITCOIN_CASH, PROTOCOL_VERSION};
use sv::network::Network;
use sv::peer::{Peer, PeerConnected, PeerDisconnected, PeerMessage, SVPeerFilter};
use sv::util::rx::{Observable, Observer};
use sv::util::secs_since;
use std::sync::Arc;
use std::time::UNIX_EPOCH;
let (ip, port) = Network::Mainnet.seed_iter().next().unwrap();
let version = Version {
version: PROTOCOL_VERSION,
services: NODE_BITCOIN_CASH,
timestamp: secs_since(UNIX_EPOCH) as i64,
user_agent: "rust-sv".to_string(),
..Default::default()
};
let peer = Peer::connect(ip, port, Network::Mainnet, version, SVPeerFilter::new(0));
struct EventHandler {}
impl Observer<PeerConnected> for EventHandler {
fn next(&self, event: &PeerConnected) {
// Handle node connected
}
}
impl Observer<PeerDisconnected> for EventHandler {
fn next(&self, event: &PeerDisconnected) {
// Handle node disconnected
}
}
impl Observer<PeerMessage> for EventHandler {
fn next(&self, event: &PeerMessage) {
// Handle message from node
}
}
let event_handler = Arc::new(EventHandler {});
peer.connected_event().subscribe(&event_handler);
peer.disconnected_event().subscribe(&event_handler);
peer.messages().subscribe(&event_handler);
Structs
Node on the network to send and receive messages
Event emitted when a connection is established with the peer
Event emitted when the connection with the peer is terminated
Event emitted when the peer receives a network message
Filters out all peers except for Bitcoin SV full nodes
Traits
Filters peers based on their version information before connecting