use std::future::Future;
use std::pin::Pin;
use super::CommandError;
pub trait ChannelSink: Send {
fn send<'a>(
&'a mut self,
msg: &'a str,
) -> Pin<Box<dyn Future<Output = Result<(), CommandError>> + Send + 'a>>;
fn flush_chunks<'a>(
&'a mut self,
) -> Pin<Box<dyn Future<Output = Result<(), CommandError>> + Send + 'a>>;
fn send_queue_count<'a>(
&'a mut self,
count: usize,
) -> Pin<Box<dyn Future<Output = Result<(), CommandError>> + Send + 'a>>;
fn supports_exit(&self) -> bool;
}
pub struct NullSink;
impl ChannelSink for NullSink {
fn send<'a>(
&'a mut self,
_msg: &'a str,
) -> Pin<Box<dyn Future<Output = Result<(), CommandError>> + Send + 'a>> {
Box::pin(async { Ok(()) })
}
fn flush_chunks<'a>(
&'a mut self,
) -> Pin<Box<dyn Future<Output = Result<(), CommandError>> + Send + 'a>> {
Box::pin(async { Ok(()) })
}
fn send_queue_count<'a>(
&'a mut self,
_count: usize,
) -> Pin<Box<dyn Future<Output = Result<(), CommandError>> + Send + 'a>> {
Box::pin(async { Ok(()) })
}
fn supports_exit(&self) -> bool {
false
}
}