mprobe-diagnostics 0.1.1

A library for parsing and reading MongoDB FTDC metrics
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use std::io::{Error, ErrorKind, Read, Result};

use flate2::read::ZlibDecoder;

use crate::bytes;

pub(crate) fn decompress<R: Read + ?Sized>(reader: &mut R) -> Result<Vec<u8>> {
    let buffer_size: usize = bytes::read_le_u32(reader)?
        .try_into()
        .map_err(|err| Error::new(ErrorKind::InvalidData, err))?;
    let mut decoder = ZlibDecoder::new(reader);
    let mut buffer = Vec::with_capacity(buffer_size);

    decoder.read_to_end(&mut buffer)?;

    Ok(buffer)
}