From 849d827486c75b2ab223d7b0e638dbb5b74d4d1d Mon Sep 17 00:00:00 2001 From: hozan23 Date: Thu, 9 Nov 2023 11:38:19 +0300 Subject: rename crates --- karyons_p2p/src/protocol.rs | 113 -------------------------------------------- 1 file changed, 113 deletions(-) delete mode 100644 karyons_p2p/src/protocol.rs (limited to 'karyons_p2p/src/protocol.rs') diff --git a/karyons_p2p/src/protocol.rs b/karyons_p2p/src/protocol.rs deleted file mode 100644 index 515efc6..0000000 --- a/karyons_p2p/src/protocol.rs +++ /dev/null @@ -1,113 +0,0 @@ -use std::sync::Arc; - -use async_trait::async_trait; - -use karyons_core::{event::EventValue, Executor}; - -use crate::{peer::ArcPeer, utils::Version, Result}; - -pub type ArcProtocol = Arc; - -pub type ProtocolConstructor = dyn Fn(ArcPeer) -> Arc + Send + Sync; - -pub type ProtocolID = String; - -/// Protocol event -#[derive(Debug, Clone)] -pub enum ProtocolEvent { - /// Message event, contains a vector of bytes. - Message(Vec), - /// Shutdown event signals the protocol to gracefully shut down. - Shutdown, -} - -impl EventValue for ProtocolEvent { - fn id() -> &'static str { - "ProtocolEvent" - } -} - -/// The Protocol trait defines the interface for core protocols -/// and custom protocols. -/// -/// # Example -/// ``` -/// use std::sync::Arc; -/// -/// use async_trait::async_trait; -/// use smol::Executor; -/// -/// use karyons_p2p::{ -/// protocol::{ArcProtocol, Protocol, ProtocolID, ProtocolEvent}, -/// Backend, PeerID, Config, Version, P2pError, ArcPeer}; -/// -/// pub struct NewProtocol { -/// peer: ArcPeer, -/// } -/// -/// impl NewProtocol { -/// fn new(peer: ArcPeer) -> ArcProtocol { -/// Arc::new(Self { -/// peer, -/// }) -/// } -/// } -/// -/// #[async_trait] -/// impl Protocol for NewProtocol { -/// async fn start(self: Arc, ex: Arc>) -> Result<(), P2pError> { -/// let listener = self.peer.register_listener::().await; -/// loop { -/// let event = listener.recv().await.unwrap(); -/// -/// match event { -/// ProtocolEvent::Message(msg) => { -/// println!("{:?}", msg); -/// } -/// ProtocolEvent::Shutdown => { -/// break; -/// } -/// } -/// } -/// -/// listener.cancel().await; -/// Ok(()) -/// } -/// -/// fn version() -> Result { -/// "0.2.0, >0.1.0".parse() -/// } -/// -/// fn id() -> ProtocolID { -/// "NEWPROTOCOLID".into() -/// } -/// } -/// -/// async { -/// let peer_id = PeerID::random(); -/// let config = Config::default(); -/// -/// // Create a new Backend -/// let backend = Backend::new(peer_id, config); -/// -/// // Attach the NewProtocol -/// let c = move |peer| NewProtocol::new(peer); -/// backend.attach_protocol::(c).await.unwrap(); -/// }; -/// -/// ``` -#[async_trait] -pub trait Protocol: Send + Sync { - /// Start the protocol - async fn start(self: Arc, ex: Executor<'_>) -> Result<()>; - - /// Returns the version of the protocol. - fn version() -> Result - where - Self: Sized; - - /// Returns the unique ProtocolID associated with the protocol. - fn id() -> ProtocolID - where - Self: Sized; -} -- cgit v1.2.3