pub struct Pit { /* private fields */ }Expand description
The Pending Interest Table.
On native targets uses DashMap for sharded concurrent access with no
global lock on the forwarding hot path. On wasm32 uses a
Mutex<HashMap> (single-threaded WASM has no contention).
Implementations§
Source§impl Pit
impl Pit
pub fn new() -> Self
pub fn clear(&self)
pub fn insert(&self, token: PitToken, entry: PitEntry)
Sourcepub fn contains(&self, token: &PitToken) -> bool
pub fn contains(&self, token: &PitToken) -> bool
Returns true if the PIT contains an entry for token.
Sourcepub fn with_entry<R, F: FnOnce(&PitEntry) -> R>(
&self,
token: &PitToken,
f: F,
) -> Option<R>
pub fn with_entry<R, F: FnOnce(&PitEntry) -> R>( &self, token: &PitToken, f: F, ) -> Option<R>
Apply f to the entry for token, returning the closure’s result.
Returns None if no entry exists.
Sourcepub fn with_entry_mut<R, F: FnOnce(&mut PitEntry) -> R>(
&self,
token: &PitToken,
f: F,
) -> Option<R>
pub fn with_entry_mut<R, F: FnOnce(&mut PitEntry) -> R>( &self, token: &PitToken, f: F, ) -> Option<R>
Apply f to the mutable entry for token, returning the closure’s result.
Returns None if no entry exists.
Sourcepub fn get(&self, token: &PitToken) -> Option<Ref<'_, PitToken, PitEntry>>
pub fn get(&self, token: &PitToken) -> Option<Ref<'_, PitToken, PitEntry>>
Look up an entry by reference. Prefer contains() or with_entry() for new code.
Sourcepub fn get_mut(
&self,
token: &PitToken,
) -> Option<RefMut<'_, PitToken, PitEntry>>
pub fn get_mut( &self, token: &PitToken, ) -> Option<RefMut<'_, PitToken, PitEntry>>
Look up a mutable entry. Prefer with_entry_mut() for new code.
pub fn remove(&self, token: &PitToken) -> Option<(PitToken, PitEntry)>
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
Sourcepub fn drain_expired(&self, now_ns: u64) -> Vec<PitToken>
pub fn drain_expired(&self, now_ns: u64) -> Vec<PitToken>
Remove all entries whose expires_at ≤ now_ns.
Returns the tokens of expired entries.
Sourcepub fn remove_face(&self, face_id: u32) -> usize
pub fn remove_face(&self, face_id: u32) -> usize
Remove PIT entries whose only in-record face is face_id.
Entries that also have in-records from other faces are kept (with the dead face’s records removed). This prevents stale PIT entries from suppressing Interests after a face disconnects.