use super::super::Connection;
use dbus_message_parser::message::Message;
use retain_mut::RetainMut;
impl Connection {
pub(super) fn signal(&mut self, msg: Message) {
let path = msg.get_path().unwrap();
if let Some(list) = self.signals.get_mut(path) {
list.retain_mut(move |(filter, sender)| {
if let Some(filter) = filter {
if filter(&msg) {
return true;
}
}
if let Err(e) = sender.try_send(msg.clone()) {
if e.is_disconnected() {
return false;
}
}
true
});
} else {
debug!("Signal: UNHANDLED: {:?}", msg);
}
}
}