browser_fs/
write.rs

1use std::io::Result;
2use std::pin::Pin;
3use std::task::{Context, Poll};
4
5use futures_lite::AsyncWrite;
6
7use crate::external::write_access_handle;
8
9impl AsyncWrite for crate::File {
10    fn poll_write(
11        mut self: Pin<&mut Self>,
12        _cx: &mut Context<'_>,
13        buf: &[u8],
14    ) -> Poll<Result<usize>> {
15        let written = write_access_handle(&self.access, buf, self.offset);
16        self.offset += written;
17        Poll::Ready(Ok(written as usize))
18    }
19
20    fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<()>> {
21        Poll::Ready(self.access.flush().map_err(crate::from_js_error))
22    }
23
24    fn poll_close(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<()>> {
25        self.access.close();
26        Poll::Ready(Ok(()))
27    }
28}