ironrdp_session/
pointer.rs

1use std::collections::HashMap;
2use std::sync::Arc;
3
4use ironrdp_graphics::pointer::DecodedPointer;
5
6#[derive(Debug, Clone, Default)]
7pub struct PointerCache {
8    // TODO(@pacancoder) maybe use Vec<Optional<...>> instead?
9    cache: HashMap<usize, Arc<DecodedPointer>>,
10}
11
12impl PointerCache {
13    pub fn insert(&mut self, id: usize, pointer: Arc<DecodedPointer>) -> Option<Arc<DecodedPointer>> {
14        self.cache.insert(id, pointer)
15    }
16
17    pub fn get(&self, id: usize) -> Option<Arc<DecodedPointer>> {
18        self.cache.get(&id).cloned()
19    }
20
21    pub fn is_cached(&self, id: usize) -> bool {
22        self.cache.contains_key(&id)
23    }
24}