1 use futures_util::{stream::StreamExt, Sink, SinkExt, Stream};
4 client::{ReceivedMessage, TransportReceiverT, TransportSenderT},
12 #[derive(Debug, Error)]
14 #[error("Other: {0}")]
20 struct Sender<T: Send + Sink<String>> {
25 impl<T: Send + Sink<String, Error = impl std::error::Error> + Unpin + 'static> TransportSenderT
30 async fn send(&mut self, body: String) -> Result<(), Self::Error> {
34 .map_err(|e| Errors::Other(format!("{:?}", e)))?;
38 async fn close(&mut self) -> Result<(), Self::Error> {
42 .map_err(|e| Errors::Other(format!("{:?}", e)))?;
47 struct Receiver<T: Send + Stream> {
52 impl<T: Send + Stream<Item = Result<String, std::io::Error>> + Unpin + 'static> TransportReceiverT
57 async fn receive(&mut self) -> Result<ReceivedMessage, Self::Error> {
58 match self.inner.next().await {
59 None => Err(Errors::Closed),
60 Some(Ok(msg)) => Ok(ReceivedMessage::Text(msg)),
61 Some(Err(e)) => Err(Errors::Other(format!("{:?}", e))),