use std::io;
use crate::read::crc32::Crc32Reader;
pub enum EncryptionHeaderReader<R: io::Read> {
CRC32(Crc32Reader<R>),
None(R),
}
impl<R: io::Read> EncryptionHeaderReader<R> {
pub const fn get_ref(&self) -> &R {
match self {
Self::CRC32(reader) => reader.get_ref(),
Self::None(reader) => reader,
}
}
pub const fn get_mut(&mut self) -> &mut R {
match self {
Self::CRC32(reader) => reader.get_mut(),
Self::None(reader) => reader,
}
}
pub fn finalize(self) -> u32 {
match self {
Self::CRC32(reader) => reader.finalize(),
Self::None(_) => 0,
}
}
}
impl<R: io::Read> io::Read for EncryptionHeaderReader<R> {
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
match self {
Self::CRC32(reader) => reader.read(buf),
Self::None(reader) => reader.read(buf),
}
}
}