pub struct UringWriter { /* private fields */ }Expand description
io_uring writer: write → fsync → journal → fsync as one linked submission.
§Durability on return
Identical to SafeWriter: the pack bytes
are on the device and a journal row on the device references them. What
differs is the cost of getting there — one io_uring_enter instead of four
blocking syscalls — not what is promised.
Implementations§
Source§impl UringWriter
impl UringWriter
Sourcepub fn create(archive: &Path) -> Result<Self>
pub fn create(archive: &Path) -> Result<Self>
Open archive, set up the ring, register the journal staging buffer, and
open the journal beside it — appending to the rows already there, and
emitting the Arrow IPC schema header only if the file is new.
Returns a named error — never a silent fallback — if this kernel cannot provide what the chain needs. Nothing on disk is touched before that point is passed.
Sourcepub fn journal_path(archive: &Path) -> PathBuf
pub fn journal_path(archive: &Path) -> PathBuf
Path of the journal segment beside archive.
Sourcepub fn journal_file(&self) -> &Path
pub fn journal_file(&self) -> &Path
The journal file path this writer is appending rows to.
Trait Implementations§
Source§impl ArchiveWrite for UringWriter
impl ArchiveWrite for UringWriter
Source§fn append(&self, bytes: &[u8]) -> Result<Extent>
fn append(&self, bytes: &[u8]) -> Result<Extent>
Source§fn durability(&self) -> &'static str
fn durability(&self) -> &'static str
append returns
does to the bytes. On the bench table next to the throughput, because a
throughput without this is not a comparison.