提交 4521b37b authored 作者: Serhij S's avatar Serhij S

iterators for client and receiver

上级 01d9caaa
...@@ -103,7 +103,7 @@ impl Worker<Message, Variables> for ModbusRelays1 { ...@@ -103,7 +103,7 @@ impl Worker<Message, Variables> for ModbusRelays1 {
event_matches!(Message::EnvSensorData(_)), event_matches!(Message::EnvSensorData(_)),
) )
.unwrap(); .unwrap();
while let Ok(msg) = hc.recv() { for msg in hc {
match msg { match msg {
Message::EnvSensorData(mut cell) => { Message::EnvSensorData(mut cell) => {
// if data is not expired // if data is not expired
......
...@@ -242,6 +242,16 @@ pub struct Client<T: DataDeliveryPolicy + Clone> { ...@@ -242,6 +242,16 @@ pub struct Client<T: DataDeliveryPolicy + Clone> {
rx: Receiver<T>, rx: Receiver<T>,
} }
impl<T> Iterator for Client<T>
where
T: DataDeliveryPolicy + Clone,
{
type Item = T;
fn next(&mut self) -> Option<Self::Item> {
self.recv().ok()
}
}
impl<T: DataDeliveryPolicy + Clone> Client<T> { impl<T: DataDeliveryPolicy + Clone> Client<T> {
/// Sends a message to hub-subscribed clients, ignores send errors /// Sends a message to hub-subscribed clients, ignores send errors
pub fn send(&self, message: T) { pub fn send(&self, message: T) {
......
...@@ -257,6 +257,16 @@ where ...@@ -257,6 +257,16 @@ where
channel: Channel<T>, channel: Channel<T>,
} }
impl<T> Iterator for Receiver<T>
where
T: DataDeliveryPolicy,
{
type Item = T;
fn next(&mut self) -> Option<Self::Item> {
self.recv().ok()
}
}
impl<T> Receiver<T> impl<T> Receiver<T>
where where
T: DataDeliveryPolicy, T: DataDeliveryPolicy,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论