File size: 669 Bytes
224e773
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use std::collections::HashMap;

pub struct SharedMemory {
    pub data: HashMap<String, Vec<u8>>,
    pub version: u64,
}

impl SharedMemory {
    pub fn new() -> Self {
        Self {
            data: HashMap::new(),
            version: 0,
        }
    }

    pub fn write(&mut self, key: &str, value: &[u8]) {
        self.data.insert(key.to_string(), value.to_vec());
        self.version += 1;
    }

    pub fn read(&self, key: &str) -> Option<&[u8]> {
        self.data.get(key).map(|v| v.as_slice())
    }

    pub fn version(&self) -> u64 {
        self.version
    }
}

impl Default for SharedMemory {
    fn default() -> Self {
        Self::new()
    }
}