1use std::any::Any;
2use as_any::AsAny;
3use sfo_split::{RHalf, Splittable, WHalf};
4use tokio::io::{AsyncRead, AsyncWrite};
5use crate::PeerId;
6
7pub trait CmdTunnelRead: Send + AsyncRead + 'static + Unpin + Any + AsAny {
8 fn get_remote_peer_id(&self) -> PeerId;
9}
10
11pub trait CmdTunnelWrite: AsyncWrite + Send + 'static + Unpin + Any + AsAny {
12 fn get_remote_peer_id(&self) -> PeerId;
13}
14
15pub type CmdTunnel<R, W> = Splittable<R, W>;
16pub type CmdTunnelRHalf<R, W> = RHalf<R, W>;
17pub type CmdTunnelWHalf<R, W> = WHalf<R, W>;
18