fn find_missing(
    id: &Pubkey,
    block_start_idx: u64,
    block_start: usize,
    window: &mut [WindowSlot],
) -> (usize, usize) {
    let mut data_missing = 0;
    let mut coding_missing = 0;
    let block_end = block_start + NUM_DATA;
    let coding_start = block_start + NUM_DATA - NUM_CODING;

    // count missing blobs in the block
    for i in block_start..block_end {
        let idx = (i - block_start) as u64 + block_start_idx;
        let n = i % window.len();

        if is_missing(id, idx, &mut window[n].data, "data") {
            data_missing += 1;
        }

        if i >= coding_start && is_missing(id, idx, &mut window[n].coding, "coding") {
            coding_missing += 1;
        }
    }
    (data_missing, coding_missing)
}
// examine the window beginning at block_start for missing or
//  stale (based on block_start_idx) blobs
// if a blob is stale, remove it from the window slot
//  side effect: block will be cleaned of old blobs
examine the window beginning at block_start for missing or
stale (based on block_start_idx) blobs
if a blob is stale, remove it from the window slot
side effect: block will be cleaned of old blobs
examine the window beginning at block_start for missing or stale ( based on block_start_idx ) blobs if a blob is stale remove it from the window slot side effect : block will be cleaned of old blobs
fn find_missing(
    id: &Pubkey,
    block_start_idx: u64,
    block_start: usize,
    window: &mut [WindowSlot],
) -> (usize, usize) {
    let mut data_missing = 0;
    let mut coding_missing = 0;
    let block_end = block_start + NUM_DATA;
    let coding_start = block_start + NUM_DATA - NUM_CODING;
    // count missing blobs in the block
    for i in block_start..block_end {
        let idx = (i - block_start) as u64 + block_start_idx;
        let n = i % window.len();
        if is_missing(id, idx, &mut window[n].data, "data") {
            data_missing += 1;
        }
        if i >= coding_start && is_missing(id, idx, &mut window[n].coding, "coding") {
            coding_missing += 1;
        }
    }
    (data_missing, coding_missing)
}
fn find_missing ( id : & Pubkey , block_start_idx : u64 , block_start : usize , window : & mut [ WindowSlot ] , ) -> ( usize , usize ) { let mut data_missing = 0 ; let mut coding_missing = 0 ; let block_end = block_start + NUM_DATA ; let coding_start = block_start + NUM_DATA - NUM_CODING ; // count missing blobs in the block for i in block_start .. block_end { let idx = ( i - block_start ) as u64 + block_start_idx ; let n = i % window . len ( ) ; if is_missing ( id , idx , & mut window [ n ] . data , " " ) { data_missing += 1 ; } if i >= coding_start && is_missing ( id , idx , & mut window [ n ] . coding , " " ) { coding_missing += 1 ; } } ( data_missing , coding_missing ) }
examine the window beginning at block_start for missing or
stale (based on block_start_idx) blobs
if a blob is stale, remove it from the window slot
side effect: block will be cleaned of old blobs
examine the window beginning at block_start for missing or stale ( based on block_start_idx ) blobs if a blob is stale remove it from the window slot side effect : block will be cleaned of old blobs
id
&Pubkey
block_start_idx
u64
block_start
usize
window
&mut [WindowSlot]
id
&Pubkey
block_start_idx
u64
block_start
usize
window
&mut [WindowSlot]