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
36
37
38
39
40
41
42
43
44
45
46
47
use proxy_wasm::types::Bytes;
use crate::host;
pub trait Service {
fn get_data(&self, key: &str) -> host::Result<(Option<Bytes>, Option<u32>)>;
fn set_data(&self, key: &str, value: Option<&[u8]>, cas: Option<u32>) -> host::Result<()>;
}
pub mod ops {
use proxy_wasm::hostcalls;
use proxy_wasm::types::Bytes;
use super::Service;
use crate::host;
pub struct Host;
impl Service for Host {
fn get_data(&self, key: &str) -> host::Result<(Option<Bytes>, Option<u32>)> {
hostcalls::get_shared_data(key).map_err(|status| {
host::Function::new("env", "proxy_get_shared_data").call_error(status)
})
}
fn set_data(&self, key: &str, value: Option<&[u8]>, cas: Option<u32>) -> host::Result<()> {
hostcalls::set_shared_data(key, value, cas).map_err(|status| {
host::Function::new("env", "proxy_set_shared_data").call_error(status)
})
}
}
}