Coverage Report

Created: 2025-12-31 06:43

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/flate2-1.0.35/src/bufreader.rs
Line
Count
Source
1
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2
// file at the top-level directory of this distribution and at
3
// <https://github.com/rust-lang/rust/blob/HEAD/COPYRIGHT>.
4
//
5
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
// https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
// <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
8
// option. This file may not be copied, modified, or distributed
9
// except according to those terms.
10
11
use std::cmp;
12
use std::io;
13
use std::io::prelude::*;
14
use std::mem;
15
16
pub struct BufReader<R> {
17
    inner: R,
18
    buf: Box<[u8]>,
19
    pos: usize,
20
    cap: usize,
21
}
22
23
impl<R> ::std::fmt::Debug for BufReader<R>
24
where
25
    R: ::std::fmt::Debug,
26
{
27
0
    fn fmt(&self, fmt: &mut ::std::fmt::Formatter) -> Result<(), ::std::fmt::Error> {
28
0
        fmt.debug_struct("BufReader")
29
0
            .field("reader", &self.inner)
30
0
            .field(
31
0
                "buffer",
32
0
                &format_args!("{}/{}", self.cap - self.pos, self.buf.len()),
33
0
            )
34
0
            .finish()
35
0
    }
36
}
37
38
impl<R: Read> BufReader<R> {
39
21.7k
    pub fn new(inner: R) -> BufReader<R> {
40
21.7k
        BufReader::with_buf(vec![0; 32 * 1024], inner)
41
21.7k
    }
<flate2::bufreader::BufReader<suricata::http2::decompression::HTTP2cursor>>::new
Line
Count
Source
39
21.7k
    pub fn new(inner: R) -> BufReader<R> {
40
21.7k
        BufReader::with_buf(vec![0; 32 * 1024], inner)
41
21.7k
    }
Unexecuted instantiation: <flate2::bufreader::BufReader<_>>::new
42
43
37.1k
    pub fn with_buf(buf: Vec<u8>, inner: R) -> BufReader<R> {
44
37.1k
        BufReader {
45
37.1k
            inner,
46
37.1k
            buf: buf.into_boxed_slice(),
47
37.1k
            pos: 0,
48
37.1k
            cap: 0,
49
37.1k
        }
50
37.1k
    }
<flate2::bufreader::BufReader<suricata::http2::decompression::HTTP2cursor>>::with_buf
Line
Count
Source
43
37.1k
    pub fn with_buf(buf: Vec<u8>, inner: R) -> BufReader<R> {
44
37.1k
        BufReader {
45
37.1k
            inner,
46
37.1k
            buf: buf.into_boxed_slice(),
47
37.1k
            pos: 0,
48
37.1k
            cap: 0,
49
37.1k
        }
50
37.1k
    }
Unexecuted instantiation: <flate2::bufreader::BufReader<_>>::with_buf
51
}
52
53
impl<R> BufReader<R> {
54
0
    pub fn get_ref(&self) -> &R {
55
0
        &self.inner
56
0
    }
57
58
206k
    pub fn get_mut(&mut self) -> &mut R {
59
206k
        &mut self.inner
60
206k
    }
<flate2::bufreader::BufReader<suricata::http2::decompression::HTTP2cursor>>::get_mut
Line
Count
Source
58
206k
    pub fn get_mut(&mut self) -> &mut R {
59
206k
        &mut self.inner
60
206k
    }
Unexecuted instantiation: <flate2::bufreader::BufReader<_>>::get_mut
61
62
0
    pub fn into_inner(self) -> R {
63
0
        self.inner
64
0
    }
65
66
0
    pub fn reset(&mut self, inner: R) -> R {
67
0
        self.pos = 0;
68
0
        self.cap = 0;
69
0
        mem::replace(&mut self.inner, inner)
70
0
    }
71
}
72
73
impl<R: Read> Read for BufReader<R> {
74
1.85M
    fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
75
        // If we don't have any buffered data and we're doing a massive read
76
        // (larger than our internal buffer), bypass our internal buffer
77
        // entirely.
78
1.85M
        if self.pos == self.cap && buf.len() >= self.buf.len() {
79
1.63k
            return self.inner.read(buf);
80
1.85M
        }
81
1.79M
        let nread = {
82
1.85M
            let mut rem = self.fill_buf()?;
83
1.79M
            rem.read(buf)?
84
        };
85
1.79M
        self.consume(nread);
86
1.79M
        Ok(nread)
87
1.85M
    }
<flate2::bufreader::BufReader<suricata::http2::decompression::HTTP2cursor> as std::io::Read>::read
Line
Count
Source
74
1.85M
    fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
75
        // If we don't have any buffered data and we're doing a massive read
76
        // (larger than our internal buffer), bypass our internal buffer
77
        // entirely.
78
1.85M
        if self.pos == self.cap && buf.len() >= self.buf.len() {
79
1.63k
            return self.inner.read(buf);
80
1.85M
        }
81
1.79M
        let nread = {
82
1.85M
            let mut rem = self.fill_buf()?;
83
1.79M
            rem.read(buf)?
84
        };
85
1.79M
        self.consume(nread);
86
1.79M
        Ok(nread)
87
1.85M
    }
Unexecuted instantiation: <flate2::bufreader::BufReader<_> as std::io::Read>::read
88
}
89
90
impl<R: Read> BufRead for BufReader<R> {
91
2.18M
    fn fill_buf(&mut self) -> io::Result<&[u8]> {
92
        // If we've reached the end of our internal buffer then we need to fetch
93
        // some more data from the underlying reader.
94
2.18M
        if self.pos == self.cap {
95
142k
            self.cap = self.inner.read(&mut self.buf)?;
96
71.7k
            self.pos = 0;
97
2.03M
        }
98
2.10M
        Ok(&self.buf[self.pos..self.cap])
99
2.18M
    }
<flate2::bufreader::BufReader<suricata::http2::decompression::HTTP2cursor> as std::io::BufRead>::fill_buf
Line
Count
Source
91
2.18M
    fn fill_buf(&mut self) -> io::Result<&[u8]> {
92
        // If we've reached the end of our internal buffer then we need to fetch
93
        // some more data from the underlying reader.
94
2.18M
        if self.pos == self.cap {
95
142k
            self.cap = self.inner.read(&mut self.buf)?;
96
71.7k
            self.pos = 0;
97
2.03M
        }
98
2.10M
        Ok(&self.buf[self.pos..self.cap])
99
2.18M
    }
Unexecuted instantiation: <flate2::bufreader::BufReader<_> as std::io::BufRead>::fill_buf
100
101
2.10M
    fn consume(&mut self, amt: usize) {
102
2.10M
        self.pos = cmp::min(self.pos + amt, self.cap);
103
2.10M
    }
<flate2::bufreader::BufReader<suricata::http2::decompression::HTTP2cursor> as std::io::BufRead>::consume
Line
Count
Source
101
2.10M
    fn consume(&mut self, amt: usize) {
102
2.10M
        self.pos = cmp::min(self.pos + amt, self.cap);
103
2.10M
    }
Unexecuted instantiation: <flate2::bufreader::BufReader<_> as std::io::BufRead>::consume
104
}