wasi_passthrough_blobstore/
container.rs

1use crate::bindings::exports;
2use crate::bindings::exports::wasi::blobstore::types::OutgoingValueBorrow;
3use crate::bindings::wasi::blobstore::container::{Container, StreamObjectNames};
4use crate::bindings::wasi::blobstore::types::Error;
5
6impl From<exports::wasi::blobstore::container::StreamObjectNames> for StreamObjectNames {
7    fn from(value: exports::wasi::blobstore::container::StreamObjectNames) -> Self {
8        value.into_inner()
9    }
10}
11
12impl From<StreamObjectNames> for exports::wasi::blobstore::container::StreamObjectNames {
13    fn from(value: StreamObjectNames) -> Self {
14        Self::new(value)
15    }
16}
17
18impl From<exports::wasi::blobstore::container::Container> for Container {
19    fn from(value: exports::wasi::blobstore::container::Container) -> Self {
20        value.into_inner()
21    }
22}
23
24impl From<Container> for exports::wasi::blobstore::container::Container {
25    fn from(value: Container) -> Self {
26        Self::new(value)
27    }
28}
29
30impl exports::wasi::blobstore::container::GuestContainer for Container {
31    fn name(&self) -> Result<String, Error> {
32        Self::name(self)
33    }
34
35    fn info(&self) -> Result<exports::wasi::blobstore::types::ContainerMetadata, Error> {
36        let res = Self::info(self)?;
37        Ok(res.into())
38    }
39
40    fn get_data(
41        &self,
42        name: String,
43        start: u64,
44        end: u64,
45    ) -> Result<exports::wasi::blobstore::types::IncomingValue, Error> {
46        let res = Self::get_data(self, &name, start, end)?;
47        Ok(res.into())
48    }
49
50    fn write_data(&self, name: String, data: OutgoingValueBorrow<'_>) -> Result<(), Error> {
51        Self::write_data(self, &name, data.get())
52    }
53
54    fn list_objects(
55        &self,
56    ) -> Result<exports::wasi::blobstore::container::StreamObjectNames, Error> {
57        let res = Self::list_objects(self)?;
58        Ok(res.into())
59    }
60
61    fn delete_object(&self, name: String) -> Result<(), Error> {
62        Self::delete_object(self, &name)
63    }
64
65    fn delete_objects(&self, names: Vec<String>) -> Result<(), Error> {
66        Self::delete_objects(self, &names)
67    }
68
69    fn has_object(&self, name: String) -> Result<bool, Error> {
70        Self::has_object(self, &name)
71    }
72
73    fn object_info(
74        &self,
75        name: String,
76    ) -> Result<exports::wasi::blobstore::types::ObjectMetadata, Error> {
77        let res = Self::object_info(self, &name)?;
78        Ok(res.into())
79    }
80
81    fn clear(&self) -> Result<(), Error> {
82        Self::clear(self)
83    }
84}
85
86impl exports::wasi::blobstore::container::GuestStreamObjectNames for StreamObjectNames {
87    fn read_stream_object_names(&self, len: u64) -> Result<(Vec<String>, bool), Error> {
88        Self::read_stream_object_names(self, len)
89    }
90
91    fn skip_stream_object_names(&self, num: u64) -> Result<(u64, bool), Error> {
92        Self::skip_stream_object_names(self, num)
93    }
94}
95
96impl exports::wasi::blobstore::container::Guest for () {
97    type Container = Container;
98    type StreamObjectNames = StreamObjectNames;
99}