Skip to main content

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}