rsiot/components/cmp_http_client_wasm/
fn_process.rs

1use tokio::task::JoinSet;
2use tracing::info;
3
4use crate::{
5    components::shared_tasks::cmp_http_client::HttpClientGeneral,
6    executor::{join_set_spawn, CmpInOut},
7    message::MsgDataBound,
8};
9
10use super::{config, tasks, Result};
11
12pub async fn fn_process<TMsg>(msg_bus: CmpInOut<TMsg>, config: config::Config<TMsg>) -> Result<()>
13where
14    TMsg: MsgDataBound + 'static,
15{
16    info!("Starting http-client, configuration: {:?}", config);
17
18    let mut task_set = JoinSet::new();
19
20    let http_client_general = HttpClientGeneral {
21        msg_bus,
22        buffer_size: 1000,
23        task_set: &mut task_set,
24        requests_input: config.requests_input,
25        requests_periodic: config.requests_periodic,
26    };
27
28    let (ch_rx_requests, ch_tx_reponse) = http_client_general.spawn();
29
30    let task = tasks::HttpClient {
31        input: ch_rx_requests,
32        output: ch_tx_reponse,
33        base_url: config.base_url,
34    };
35    join_set_spawn(&mut task_set, task.spawn());
36
37    while let Some(res) = task_set.join_next().await {
38        res??;
39    }
40    Ok(())
41}