meadow 0.4.0

Robotics-focused middleware for embedded Linux
Documentation
use crate::node::network_config::{Blocking, Nonblocking, Tcp};
use crate::node::{Node, Subscription};
use crate::prelude::*;
use std::ops::Deref;

impl<T: Message + 'static> Node<Nonblocking, Tcp, Subscription, T> {
    pub async fn get_subscribed_data(&self) -> Result<Msg<T>, crate::Error> {
        let data = self.subscription_data.lock().await.clone();
        if let Some(msg) = data {
            Ok(msg)
        } else {
            Err(Error::NoSubscriptionValue)
        }
    }
}

//----

impl<T: Message + 'static> Node<Blocking, Tcp, Subscription, T> {
    pub fn get_subscribed_data(&self) -> Result<Msg<T>, crate::Error> {
        let handle = match &self.rt_handle {
            Some(handle) => handle,
            None => return Err(Error::HandleAccess),
        };
        handle.block_on(async {
            let data = self.subscription_data.lock().await.clone();
            if let Some(msg) = data {
                Ok(msg)
            } else {
                Err(Error::NoSubscriptionValue)
            }
        })
    }
}