use async_trait::async_trait;
#[cfg(not(feature = "std"))]
use crate::internal_alloc::Box;
use super::blocking::BlockingStream;
use super::stream_async::AsyncByteStream;
use super::TransportError;
pub struct BlockingAsAsync<S> {
inner: S,
}
impl<S> BlockingAsAsync<S> {
#[must_use]
pub fn noxtls_new(inner: S) -> Self {
Self { inner }
}
pub fn into_inner(self) -> S {
self.inner
}
}
#[async_trait(?Send)]
impl<S: BlockingStream> AsyncByteStream for BlockingAsAsync<S> {
async fn read_async(&mut self, buf: &mut [u8]) -> Result<usize, TransportError> {
self.inner.read(buf)
}
async fn write_all_async(&mut self, data: &[u8]) -> Result<(), TransportError> {
self.inner.write_all(data)
}
}