fix(registry): make add always succeed
This commit is contained in:
@@ -6,10 +6,10 @@ use std::sync::{Arc, Weak};
|
|||||||
pub struct Registry<T>(RwLock<Slab<Weak<T>>>);
|
pub struct Registry<T>(RwLock<Slab<Weak<T>>>);
|
||||||
|
|
||||||
impl<T> Registry<T> {
|
impl<T> Registry<T> {
|
||||||
pub fn add(&self, t: T) -> Result<Arc<T>> {
|
pub fn add(&self, t: T) -> Arc<T> {
|
||||||
let t_arc = Arc::new(t);
|
let t_arc = Arc::new(t);
|
||||||
self.0.write().insert(Arc::downgrade(&t_arc));
|
self.0.write().insert(Arc::downgrade(&t_arc));
|
||||||
Ok(t_arc)
|
t_arc
|
||||||
}
|
}
|
||||||
pub fn get_valid_contents(&self) -> Vec<Arc<T>> {
|
pub fn get_valid_contents(&self) -> Vec<Arc<T>> {
|
||||||
self.0
|
self.0
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ impl PulseSender {
|
|||||||
);
|
);
|
||||||
|
|
||||||
let sender = Default::default();
|
let sender = Default::default();
|
||||||
let sender = PULSE_SENDER_REGISTRY.add(sender)?;
|
let sender = PULSE_SENDER_REGISTRY.add(sender);
|
||||||
let _ = node.pulse_sender.set(sender);
|
let _ = node.pulse_sender.set(sender);
|
||||||
node.add_local_signal("setMask", PulseSender::set_mask_flex);
|
node.add_local_signal("setMask", PulseSender::set_mask_flex);
|
||||||
node.add_local_method("getReceivers", PulseSender::get_receivers_flex);
|
node.add_local_method("getReceivers", PulseSender::get_receivers_flex);
|
||||||
@@ -167,7 +167,7 @@ impl<'a> PulseReceiver {
|
|||||||
field: Arc::downgrade(&field),
|
field: Arc::downgrade(&field),
|
||||||
mask: Default::default(),
|
mask: Default::default(),
|
||||||
};
|
};
|
||||||
let receiver = PULSE_RECEIVER_REGISTRY.add(receiver)?;
|
let receiver = PULSE_RECEIVER_REGISTRY.add(receiver);
|
||||||
let _ = node.pulse_receiver.set(receiver);
|
let _ = node.pulse_receiver.set(receiver);
|
||||||
node.add_local_signal("setMask", PulseReceiver::set_mask_flex);
|
node.add_local_signal("setMask", PulseReceiver::set_mask_flex);
|
||||||
node.add_local_signal("sendData", PulseReceiver::send_data_flex);
|
node.add_local_signal("sendData", PulseReceiver::send_data_flex);
|
||||||
|
|||||||
Reference in New Issue
Block a user