1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//! Преобразование mpsc::Receiver в broadcast::Sender

use tokio::sync::{
    broadcast::{self},
    mpsc,
};
use tracing::debug;

use rsiot_messages_core::IMessage;

/// Компонент для перенаправления сообщений из `tokio::sync::mpsc` в `tokio::sync::broadcast`
pub async fn new<TMessage>(mut input: mpsc::Receiver<TMessage>, output: broadcast::Sender<TMessage>)
where
    TMessage: IMessage,
{
    debug!("cmpbase_mpsc_to_broadcast started");
    while let Some(msg) = input.recv().await {
        output.send(msg).unwrap();
    }
}