snap_coin/node/peer_behavior.rs
1use std::sync::Arc;
2
3use crate::node::{message::Message, peer::{PeerError, PeerHandle}};
4
5pub type SharedPeerBehavior = Arc<dyn PeerBehavior + Send + Sync>;
6
7#[async_trait::async_trait]
8pub trait PeerBehavior {
9 /// Handles what this peer does when it receives a message, and creates this peers response
10 async fn on_message(&self, message: Message, peer: &PeerHandle) -> Result<Message, PeerError>;
11
12 /// Handles what happens when this peer gets killed (apart from peer process' being killed)
13 async fn on_kill(&self, peer: &PeerHandle);
14
15 /// Return current blockchain height
16 async fn get_height(&self) -> usize;
17}