use crate::TgzWriter;
use crate::refmut::RefMut;
use flate2::read::{DeflateDecoder, GzDecoder};
use std::io::{ErrorKind, Take, Write};
use std::ops::Range;
pub struct ChapterWriter<'a, W: Write> {
pub(crate) tgz: &'a mut TgzWriter<W>,
pub(crate) index: u32,
pub(crate) deferred_termination_sections: bool,
}
pub struct ChapterReader<'a, R> {
pub(crate) imp: ChapterReaderImpl<'a, R>,
}
pub(crate) enum ChapterReaderImpl<'a, R> {
SeekTo(Range<u64>, RefMut<'a, R>),
Smart(DeflateDecoder<Take<RefMut<'a, R>>>),
Dumb(GzDecoder<RefMut<'a, R>>),
Failed(ErrorKind),
}