From d088640855c8bba435e64f4037d8c1d87825afde Mon Sep 17 00:00:00 2001 From: Pere Diaz Bou Date: Fri, 26 Jul 2024 14:26:41 +0200 Subject: [PATCH] core: cqe result Signed-off-by: Pere Diaz Bou --- core/io/linux.rs | 2 +- core/io/mod.rs | 8 ++++---- core/sqlite3_ondisk.rs | 10 ++++------ 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/core/io/linux.rs b/core/io/linux.rs index d5da77c52..24621dd93 100644 --- a/core/io/linux.rs +++ b/core/io/linux.rs @@ -101,7 +101,7 @@ impl IO for LinuxIO { ))); } let c = unsafe { Rc::from_raw(cqe.user_data() as *const Completion) }; - c.complete(); + c.complete(cqe.result()); } Ok(()) } diff --git a/core/io/mod.rs b/core/io/mod.rs index cf8ef25a3..cb26bb832 100644 --- a/core/io/mod.rs +++ b/core/io/mod.rs @@ -23,7 +23,7 @@ pub trait IO { } pub type Complete = dyn Fn(Rc>); -pub type WriteComplete = dyn Fn(usize); +pub type WriteComplete = dyn Fn(i32); pub enum Completion { Read(ReadCompletion), @@ -36,10 +36,10 @@ pub struct ReadCompletion { } impl Completion { - pub fn complete(&self) { + pub fn complete(&self, result: i32) { match self { Completion::Read(r) => r.complete(), - Completion::Write(w) => w.complete(234234), // fix + Completion::Write(w) => w.complete(result), // fix } } } @@ -70,7 +70,7 @@ impl WriteCompletion { pub fn new(complete: Box) -> Self { Self { complete } } - pub fn complete(&self, bytes_written: usize) { + pub fn complete(&self, bytes_written: i32) { (self.complete)(bytes_written); } } diff --git a/core/sqlite3_ondisk.rs b/core/sqlite3_ondisk.rs index 528e4a1f2..ad9a37b55 100644 --- a/core/sqlite3_ondisk.rs +++ b/core/sqlite3_ondisk.rs @@ -174,10 +174,10 @@ pub fn begin_write_database_header(header: &DatabaseHeader, pager: &Pager) -> Re pager.io.run_once()?; let buffer_in_cb = buffer_to_copy.clone(); - let write_complete = Box::new(move |bytes_written: usize| { + let write_complete = Box::new(move |bytes_written: i32| { let buf = buffer_in_cb.clone(); let buf_len = std::cell::RefCell::borrow(&buf).len(); - if bytes_written < buf_len { + if bytes_written < buf_len as i32 { log::error!("wrote({bytes_written}) less than expected({buf_len})"); } // finish_read_database_header(buf, header).unwrap(); @@ -324,14 +324,12 @@ pub fn begin_write_btree_page(pager: &Pager, page: &Rc>) -> Result let buffer = contents.buffer.clone(); let write_complete = { let buf_copy = buffer.clone(); - Box::new(move |bytes_written: usize| { + Box::new(move |bytes_written: i32| { let buf_copy = buf_copy.clone(); let buf_len = buf_copy.borrow().len(); - if bytes_written < buf_len { + if bytes_written < buf_len as i32 { log::error!("wrote({bytes_written}) less than expected({buf_len})"); } - println!("done"); - // finish_read_database_header(buf, header).unwrap(); }) }; dbg!(buffer.borrow().len());