pub trait Agent: 'static + Sync + Send + Sized {
type Error: Debug + Send + Sync;
fn handle(&self, message: Message) -> Result<Message, Self::Error>;
fn handle_async(
&self,
message: Message
) -> Box<dyn Future<Item = Message, Error = Self::Error> + Send + Sync> { ... }
fn run_listener(
self,
socket: UnixListener
) -> Result<(), Box<dyn Error + Send + Sync>> { ... }
fn run_unix(
self,
path: impl AsRef<Path>
) -> Result<(), Box<dyn Error + Send + Sync>> { ... }
fn run_tcp(self, addr: &str) -> Result<(), Box<dyn Error + Send + Sync>> { ... }
}