Skip to content

Commit ac0ea73

Browse files
committed
Added SplitTickedAsyncExecutor instead of a function
1 parent a78ee85 commit ac0ea73

File tree

3 files changed

+37
-29
lines changed

3 files changed

+37
-29
lines changed

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,8 @@ assert_eq!(executor.num_tasks(), 0);
2727
use ticked_async_executor::*;
2828

2929
const DELTA: f64 = 1000.0 / 60.0;
30-
let task_state_cb: fn(TaskState) = |_state| {};
3130

32-
let (spawner, ticker) = new_split_ticked_async_executor(task_state_cb);
31+
let (spawner, ticker) = SplitTickedAsyncExecutor::default();
3332

3433
spawner.spawn_local("MyIdentifier", async move {}).detach();
3534

src/split_ticked_async_executor.rs

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,40 @@ pub enum TaskState {
1919
pub type Task<T> = async_task::Task<T>;
2020
type Payload = (TaskIdentifier, async_task::Runnable);
2121

22-
pub fn new_split_ticked_async_executor<O>(
23-
observer: O,
24-
) -> (TickedAsyncExecutorSpawner<O>, TickedAsyncExecutorTicker<O>)
25-
where
26-
O: Fn(TaskState) + Clone + Send + Sync + 'static,
27-
{
28-
let (tx_channel, rx_channel) = mpsc::channel();
29-
let num_woken_tasks = Arc::new(AtomicUsize::new(0));
30-
let num_spawned_tasks = Arc::new(AtomicUsize::new(0));
31-
let (tx_tick_event, rx_tick_event) = tokio::sync::watch::channel(1.0);
32-
let spawner = TickedAsyncExecutorSpawner {
33-
tx_channel,
34-
num_woken_tasks: num_woken_tasks.clone(),
35-
num_spawned_tasks: num_spawned_tasks.clone(),
36-
observer: observer.clone(),
37-
rx_tick_event,
38-
};
39-
let ticker = TickedAsyncExecutorTicker {
40-
rx_channel,
41-
num_woken_tasks,
42-
num_spawned_tasks,
43-
observer,
44-
tx_tick_event,
45-
};
46-
(spawner, ticker)
22+
pub struct SplitTickedAsyncExecutor;
23+
24+
impl SplitTickedAsyncExecutor {
25+
pub fn default() -> (
26+
TickedAsyncExecutorSpawner<fn(TaskState)>,
27+
TickedAsyncExecutorTicker<fn(TaskState)>,
28+
) {
29+
Self::new(|_state| {})
30+
}
31+
32+
pub fn new<O>(observer: O) -> (TickedAsyncExecutorSpawner<O>, TickedAsyncExecutorTicker<O>)
33+
where
34+
O: Fn(TaskState) + Clone + Send + Sync + 'static,
35+
{
36+
let (tx_channel, rx_channel) = mpsc::channel();
37+
let num_woken_tasks = Arc::new(AtomicUsize::new(0));
38+
let num_spawned_tasks = Arc::new(AtomicUsize::new(0));
39+
let (tx_tick_event, rx_tick_event) = tokio::sync::watch::channel(1.0);
40+
let spawner = TickedAsyncExecutorSpawner {
41+
tx_channel,
42+
num_woken_tasks: num_woken_tasks.clone(),
43+
num_spawned_tasks: num_spawned_tasks.clone(),
44+
observer: observer.clone(),
45+
rx_tick_event,
46+
};
47+
let ticker = TickedAsyncExecutorTicker {
48+
rx_channel,
49+
num_woken_tasks,
50+
num_spawned_tasks,
51+
observer,
52+
tx_tick_event,
53+
};
54+
(spawner, ticker)
55+
}
4756
}
4857

4958
pub struct TickedAsyncExecutorSpawner<O> {

src/ticked_async_executor.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::future::Future;
22

33
use crate::{
4-
new_split_ticked_async_executor, Task, TaskIdentifier, TaskState, TickedAsyncExecutorSpawner,
4+
SplitTickedAsyncExecutor, Task, TaskIdentifier, TaskState, TickedAsyncExecutorSpawner,
55
TickedAsyncExecutorTicker, TickedTimer,
66
};
77

@@ -21,7 +21,7 @@ where
2121
O: Fn(TaskState) + Clone + Send + Sync + 'static,
2222
{
2323
pub fn new(observer: O) -> Self {
24-
let (spawner, ticker) = new_split_ticked_async_executor(observer);
24+
let (spawner, ticker) = SplitTickedAsyncExecutor::new(observer);
2525
Self { spawner, ticker }
2626
}
2727

0 commit comments

Comments
 (0)