use super::BufReadDecompressor;
use crate::lz4f::{FrameInfo, Result};
use std::{
borrow::Cow,
fmt,
io::{BufReader, Read},
};
pub struct ReadDecompressor<'a, R: Read> {
inner: BufReadDecompressor<'a, BufReader<R>>,
}
impl<R> fmt::Debug for ReadDecompressor<'_, R>
where
R: Read + fmt::Debug,
{
fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt.debug_struct("ReadDecompressor")
.field("reader", &self.inner.inner.get_ref())
.finish()
}
}
impl<'a, R: Read> ReadDecompressor<'a, R> {
pub fn new(reader: R) -> Result<Self> {
Ok(Self {
inner: BufReadDecompressor::new(BufReader::new(reader))?,
})
}
pub fn set_dict<D>(&mut self, dict: D)
where
D: Into<Cow<'a, [u8]>>,
{
self.inner.set_dict(dict);
}
pub fn read_frame_info(&mut self) -> std::io::Result<FrameInfo> {
self.inner.read_frame_info()
}
pub fn into_inner(self) -> R {
self.inner.into_inner().into_inner()
}
pub fn get_mut(&mut self) -> &mut R {
self.inner.get_mut().get_mut()
}
pub fn get_ref(&self) -> &R {
self.inner.get_ref().get_ref()
}
}
impl<R: Read> Read for ReadDecompressor<'_, R> {
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
self.inner.read(buf)
}
}