Skip to content

Commit 2bcc32d

Browse files
泰友bergwolf
authored andcommitted
feat: ZeroCopyWriter pass through available bytes from inner writer
Useful for writer of fixed buffer, such FuseDevWriter, VirtioFsWriter Signed-off-by: 泰友 <[email protected]>
1 parent 79d673d commit 2bcc32d

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

src/api/filesystem/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,11 @@ pub trait ZeroCopyWriter: io::Write {
370370
}
371371
}
372372
}
373+
374+
/// Return number of bytes available for writing.
375+
///
376+
/// Useful for buffer fixed writers, such as FuseDevWriter, VirtioFsWriter
377+
fn available_bytes(&self) -> usize;
373378
}
374379

375380
/// Additional context associated with requests.

src/api/server/async_io.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ impl<'a, S: BitmapSlice> ZeroCopyWriter for AsyncZcWriter<'a, S> {
8888
) -> io::Result<usize> {
8989
self.0.write_from_at(f, count, off)
9090
}
91+
92+
fn available_bytes(&self) -> usize {
93+
self.0.available_bytes()
94+
}
9195
}
9296

9397
impl<'a, S: BitmapSlice> io::Write for AsyncZcWriter<'a, S> {

src/api/server/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ impl<'a, S: BitmapSlice> ZeroCopyWriter for ZcWriter<'a, S> {
9696
) -> io::Result<usize> {
9797
self.0.write_from_at(f, count, off)
9898
}
99+
100+
fn available_bytes(&self) -> usize {
101+
self.0.available_bytes()
102+
}
99103
}
100104

101105
impl<'a, S: BitmapSlice> io::Write for ZcWriter<'a, S> {

0 commit comments

Comments
 (0)