diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/actions.rs | 12 | ||||
| -rw-r--r-- | src/main.rs | 20 | 
2 files changed, 15 insertions, 17 deletions
| diff --git a/src/actions.rs b/src/actions.rs index bf78414..d006207 100644 --- a/src/actions.rs +++ b/src/actions.rs @@ -1,6 +1,7 @@  use std::fmt;  use anyhow::Result; +use async_scoped::TokioScope;  use async_trait::async_trait;  use log::{debug, info, warn};  use serde::Deserialize; @@ -119,3 +120,14 @@ pub async fn get_actions<'a>(      result  } + +pub async fn run_actions( +    actions: &[&(dyn Action<'_> + Sync)], +    params: Option<MessageParams<'_, '_>>, +) { +    TokioScope::scope_and_block(|s| { +        for &action in actions { +            s.spawn(action.run(params.as_ref())); +        } +    }); +} diff --git a/src/main.rs b/src/main.rs index 0173eb8..6006348 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,7 +17,7 @@ mod config;  mod message;  mod wallets; -use crate::actions::get_actions; +use crate::actions::{get_actions, run_actions};  use crate::message::MessageParams;  use crate::{      blockchain::BlockchainState, @@ -63,14 +63,6 @@ fn set_signal_handlers() -> Result<()> {      Ok(())  } -async fn run_test_actions(actions: &[&(dyn Action<'_> + Sync)]) { -    TokioScope::scope_and_block(|s| { -        for &action in actions { -            s.spawn(action.run(None)); -        } -    }); -} -  fn get_and_handle_new_txs(      wallet_info: &SafeWalletInfo,      actions: &[&(dyn Action<'_> + Sync)], @@ -80,13 +72,7 @@ fn get_and_handle_new_txs(      TokioScope::scope_and_block(|s| {          for tx in txs.iter() {              let params = MessageParams::new(tx, &locked_wallet_info); -            s.spawn(async move { -                TokioScope::scope_and_block(|s| { -                    for &action in actions { -                        s.spawn(action.run(Some(¶ms))); -                    } -                }); -            }); +            s.spawn(run_actions(actions, Some(params)));          }      });      Ok(()) @@ -148,7 +134,7 @@ async fn do_main() -> Result<()> {      let actions_ref = actions.iter().map(Box::as_ref).collect::<Vec<_>>();      if args.test() { -        run_test_actions(&actions_ref).await; +        run_actions(&actions_ref, None).await;          return Ok(());      } | 
