feat(scenegraph): use ScenegraphError signal/node errors
This commit is contained in:
@@ -48,7 +48,6 @@ impl<'a> scenegraph::Scenegraph for Scenegraph<'a> {
|
||||
.ok_or(ScenegraphError::NodeNotFound)?
|
||||
.borrow()
|
||||
.send_local_signal(self.get_client(), method, data)
|
||||
.map_err(|_| ScenegraphError::SignalNotFound)
|
||||
}
|
||||
fn execute_method(
|
||||
&self,
|
||||
@@ -60,6 +59,5 @@ impl<'a> scenegraph::Scenegraph for Scenegraph<'a> {
|
||||
.ok_or(ScenegraphError::NodeNotFound)?
|
||||
.borrow()
|
||||
.execute_local_method(self.get_client(), method, data)
|
||||
.map_err(|_| ScenegraphError::MethodNotFound)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,8 @@ use super::data::PulseSender;
|
||||
use super::field::Field;
|
||||
use super::spatial::Spatial;
|
||||
use crate::core::client::Client;
|
||||
use anyhow::{anyhow, Result};
|
||||
use anyhow::Result;
|
||||
use libstardustxr::scenegraph::ScenegraphError;
|
||||
use std::rc::{Rc, Weak};
|
||||
use std::sync::Arc;
|
||||
use std::{collections::HashMap, vec::Vec};
|
||||
@@ -81,24 +82,28 @@ impl<'a> Node<'a> {
|
||||
calling_client: Rc<Client>,
|
||||
method: &str,
|
||||
data: &[u8],
|
||||
) -> Result<()> {
|
||||
) -> Result<(), ScenegraphError> {
|
||||
let signal = self
|
||||
.local_signals
|
||||
.get(method)
|
||||
.ok_or_else(|| anyhow!("Signal {} not found", method))?;
|
||||
signal(self, calling_client, data)
|
||||
.ok_or(ScenegraphError::SignalNotFound)?;
|
||||
signal(self, calling_client, data).map_err(|err| ScenegraphError::SignalError {
|
||||
error: format!("{}", err),
|
||||
})
|
||||
}
|
||||
pub fn execute_local_method(
|
||||
&self,
|
||||
calling_client: Rc<Client>,
|
||||
method: &str,
|
||||
data: &[u8],
|
||||
) -> Result<Vec<u8>> {
|
||||
) -> Result<Vec<u8>, ScenegraphError> {
|
||||
let method = self
|
||||
.local_methods
|
||||
.get(method)
|
||||
.ok_or_else(|| anyhow!("Method {} not found", method))?;
|
||||
method(self, calling_client, data)
|
||||
.ok_or(ScenegraphError::MethodNotFound)?;
|
||||
method(self, calling_client, data).map_err(|err| ScenegraphError::MethodError {
|
||||
error: format!("{}", err),
|
||||
})
|
||||
}
|
||||
// pub fn send_remote_signal(&self, method: &str, data: &[u8]) -> Result<()> {
|
||||
// self.get_client()
|
||||
|
||||
Reference in New Issue
Block a user