openmina_node_native/service/
mod.rs1mod builder;
2pub use builder::*;
3
4use openmina_node_common::p2p::TaskSpawner;
5pub use openmina_node_common::NodeService;
6
7use node::core::thread;
8
9#[derive(Clone)]
10pub struct P2pTaskSpawner {}
11
12impl TaskSpawner for P2pTaskSpawner {
13 fn spawn_main<F>(&self, name: &str, fut: F)
14 where
15 F: 'static + Send + std::future::Future<Output = ()>,
16 {
17 let runtime = tokio::runtime::Builder::new_current_thread()
18 .enable_all()
19 .build()
20 .unwrap();
21 thread::Builder::new()
22 .name(format!("openmina_p2p_{name}"))
23 .spawn(move || {
24 let local_set = tokio::task::LocalSet::new();
25 local_set.block_on(&runtime, fut);
26 })
27 .unwrap();
28 }
29}