|
|
|
@@ -249,7 +249,7 @@ impl Action { |
|
|
|
|
|
|
|
#[namespace = #package_name] |
|
|
|
#[cxx_name = #cxx_downcast] |
|
|
|
fn #downcast(self: &mut #client_name, event: CombinedEvent) -> Result<()>; |
|
|
|
fn #downcast(self: &mut #client_name, event: CombinedEvent) -> Result<#result_type_raw>; |
|
|
|
}; |
|
|
|
|
|
|
|
let imp = quote! { |
|
|
|
@@ -374,7 +374,7 @@ impl Action { |
|
|
|
} |
|
|
|
|
|
|
|
#[allow(non_snake_case)] |
|
|
|
fn #downcast(&self, event: crate::ffi::CombinedEvent) -> eyre::Result<()> { |
|
|
|
fn #downcast(&self, event: crate::ffi::CombinedEvent) -> eyre::Result<ffi::#result_type_raw> { |
|
|
|
use eyre::WrapErr; |
|
|
|
|
|
|
|
match (*event.event).0 { |
|
|
|
@@ -382,10 +382,9 @@ impl Action { |
|
|
|
let result = event.event.downcast::<eyre::Result<ffi::#result_type_raw>>() |
|
|
|
.map_err(|_| eyre::eyre!("downcast to {} failed", #result_type_raw_str))?; |
|
|
|
|
|
|
|
let _data = result.with_context(|| format!("failed to receive {} response", #self_name_str)) |
|
|
|
let data = result.with_context(|| format!("failed to receive {} response", #self_name_str)) |
|
|
|
.map_err(|e| eyre::eyre!("{e:?}"))?; |
|
|
|
// Ok(data) |
|
|
|
Ok(()) |
|
|
|
Ok(data) |
|
|
|
}, |
|
|
|
_ => eyre::bail!("not a {} response event", #self_name_str), |
|
|
|
} |
|
|
|
|