1use std::result::Result;
2
3use async_trait::async_trait;
4
5use crate::{Conn, Endpoint};
6
7pub type Listener<C, E> = Box<dyn ConnListener<Message = C, Error = E>>;
9
10pub trait ToListener {
12 type Message;
13 type Error;
14 fn to_listener(self) -> Listener<Self::Message, Self::Error>;
15}
16
17#[async_trait]
20pub trait ConnListener: Send + Sync {
21 type Message;
22 type Error;
23 fn local_endpoint(&self) -> Result<Endpoint, Self::Error>;
24 async fn accept(&self) -> Result<Conn<Self::Message, Self::Error>, Self::Error>;
25}