use crate::block::compress::compress as compress_block;
use byteorder::{ByteOrder, LittleEndian};
use std::io::Read;
use std::io::Write;
#[inline]
pub fn compress<R: Read, W: Write>(input: &mut R, output: &mut W) -> std::io::Result<()> {
let mut buf = [0; 4];
LittleEndian::write_u32(&mut buf, 0x184D2204); output.write_all(&buf)?;
let version_bits = 0b01000000; let _flg_byte = version_bits;
let _bit_indenpence = 0b00100000;
let _content_size_flag = 0b00001000;
let _dict_id_flag = 0b00000001;
let mut buffer = [0; u16::MAX as usize];
loop {
let n = input.read(&mut buffer[..])?;
if n == 0 {
break;
}
let compressed = compress_block(&buffer[..n]);
output.write_all(&compressed)?;
}
Ok(())
}