Skip to main content

Module request_dedup

Module request_dedup 

Source
Expand description

Request deduplication for concurrent DHT/Bitswap lookups.

When multiple callers request the same CID simultaneously, only one DHT/Bitswap request should be issued. All additional callers coalesce onto the first (“leader”) request and share its result once resolved.

§Example

use ipfrs_network::request_dedup::{RequestDeduplicator, AcquireResult, ResolveResult};
use std::time::Duration;

let dedup = RequestDeduplicator::new(64, Duration::from_secs(30));

let cid = "QmExample";
match dedup.try_acquire(cid) {
    AcquireResult::Leader => {
        // Issue the DHT/Bitswap request, then call resolve()
        dedup.resolve(cid, ResolveResult::NotFound);
    }
    AcquireResult::Waiter(handle) => {
        // Another request is in flight; handle tracks the waiter slot
        let _ = handle;
    }
}

Structs§

DedupStats
Atomic performance counters for RequestDeduplicator.
DedupStatsSnapshot
A point-in-time view of DedupStats counters.
RequestDeduplicator
Deduplicates concurrent requests for the same CID.
WaiterHandle
A lightweight handle returned to a caller that coalesced onto an existing in-flight request.

Enums§

AcquireResult
Returned by RequestDeduplicator::try_acquire.
ResolveResult
The outcome of a DHT/Bitswap lookup operation.