use anyhow::Result;
use async_trait::async_trait;
use crate::message::{IncomingMessage, OutgoingMessage};
#[async_trait]
pub trait Channel: Send + Sync {
fn name(&self) -> &str;
async fn receive(&self) -> Result<Option<IncomingMessage>>;
async fn send(&self, msg: OutgoingMessage) -> Result<()>;
}