ap_client/
memory_psk_store.rs1use std::collections::HashMap;
2
3use async_trait::async_trait;
4
5use crate::error::ClientError;
6use crate::traits::{PskEntry, PskStore};
7use crate::types::PskId;
8
9pub struct MemoryPskStore {
13 entries: HashMap<PskId, PskEntry>,
14}
15
16impl MemoryPskStore {
17 pub fn new() -> Self {
18 Self {
19 entries: HashMap::new(),
20 }
21 }
22}
23
24impl Default for MemoryPskStore {
25 fn default() -> Self {
26 Self::new()
27 }
28}
29
30#[async_trait]
31impl PskStore for MemoryPskStore {
32 async fn get(&self, psk_id: &PskId) -> Option<PskEntry> {
33 self.entries.get(psk_id).cloned()
34 }
35
36 async fn save(&mut self, entry: PskEntry) -> Result<(), ClientError> {
37 self.entries.insert(entry.psk_id.clone(), entry);
38 Ok(())
39 }
40
41 async fn remove(&mut self, psk_id: &PskId) -> Result<(), ClientError> {
42 self.entries.remove(psk_id);
43 Ok(())
44 }
45
46 async fn list(&self) -> Vec<PskEntry> {
47 self.entries.values().cloned().collect()
48 }
49}