rsiot/components/cmp_http_client_wasm/
fn_process.rs1use 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}