Skip to content

Commit bbf53ad

Browse files
committed
add insert_service into GlobalSystem
1 parent 45da69f commit bbf53ad

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

src/uactor/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "uactor"
3-
version = "0.15.0"
3+
version = "0.15.1"
44
edition = "2021"
55
repository = "https://github.com/EnvOut/uactor"
66
license = "MIT"

src/uactor/src/system/global.rs

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
use std::sync::{Arc, LazyLock};
2-
use tokio::sync::mpsc::UnboundedSender;
3-
use tokio::sync::RwLock;
4-
use tokio::task::JoinHandle;
1+
use super::{ActorRunningError, System};
52
use crate::actor::abstract_actor::{Actor, Handler};
63
use crate::actor::message::Message;
74
use crate::actor::select::ActorSelect;
85
use crate::aliases::ActorName;
96
use crate::dependency_injection::Inject;
107
use crate::system::builder::SystemBuilder;
11-
use super::{ActorRunningError, System};
8+
use std::sync::{Arc, LazyLock};
9+
use tokio::sync::mpsc::UnboundedSender;
10+
use tokio::sync::RwLock;
11+
use tokio::task::JoinHandle;
1212

13-
static GLOBAL_SYSTEM: LazyLock<Arc<RwLock<System>>> = LazyLock::new(|| {
14-
Arc::new(RwLock::new(SystemBuilder::new_global().build()))
15-
});
13+
static GLOBAL_SYSTEM: LazyLock<Arc<RwLock<System>>> =
14+
LazyLock::new(|| Arc::new(RwLock::new(SystemBuilder::new_global().build())));
1615

1716
pub struct GlobalSystem {}
1817

@@ -43,7 +42,9 @@ impl GlobalSystem {
4342
R: From<(ActorName, UnboundedSender<M>, A::State)>,
4443
{
4544
let mut system = GLOBAL_SYSTEM.write().await;
46-
system.register_ref_with_state::<A, M, R>(actor_name, state).await
45+
system
46+
.register_ref_with_state::<A, M, R>(actor_name, state)
47+
.await
4748
}
4849

4950
pub async fn spawn_actor<A, S>(
@@ -59,12 +60,20 @@ impl GlobalSystem {
5960
<A as Actor>::Inject: Inject + Sized + Send,
6061
{
6162
let mut system = GLOBAL_SYSTEM.write().await;
62-
system.spawn_actor::<A, S>(actor_name, actor, state, aggregator).await
63+
system
64+
.spawn_actor::<A, S>(actor_name, actor, state, aggregator)
65+
.await
6366
}
6467

6568
pub async fn with(&mut self, with: impl FnOnce(&mut System)) -> Self {
6669
let mut system = GLOBAL_SYSTEM.write().await;
6770
with(&mut system);
6871
GlobalSystem {}
6972
}
70-
}
73+
74+
pub async fn insert_service<T: Send + Sync + 'static>(&mut self, data: T) {
75+
let mut system = GLOBAL_SYSTEM.write().await;
76+
system.insert_service(data)
77+
}
78+
}
79+

0 commit comments

Comments
 (0)