feat(alias): add aliasing remote signals/methods

This commit is contained in:
Nova
2022-06-19 23:31:38 -04:00
parent 82140c09fa
commit cceda8f72d
6 changed files with 122 additions and 56 deletions

View File

@@ -7,15 +7,16 @@ use libstardustxr::messenger::Messenger;
use mio::net::UnixStream;
use std::sync::Arc;
#[derive(Default)]
pub struct Client {
pub messenger: Messenger,
pub messenger: Option<Messenger>,
pub scenegraph: Scenegraph,
}
impl Client {
pub fn from_connection(connection: UnixStream) -> Arc<Self> {
let client = Arc::new(Client {
messenger: Messenger::new(connection),
messenger: Some(Messenger::new(connection)),
scenegraph: Default::default(),
});
let _ = client.scenegraph.client.set(Arc::downgrade(&client));
@@ -26,6 +27,10 @@ impl Client {
client
}
pub fn dispatch(&self) -> Result<(), std::io::Error> {
self.messenger.dispatch(&self.scenegraph)
if let Some(messenger) = &self.messenger {
messenger.dispatch(&self.scenegraph)
} else {
Err(std::io::Error::from(std::io::ErrorKind::Unsupported))
}
}
}