@@ -19,31 +19,40 @@ pub enum TaskState {
19
19
pub type Task < T > = async_task:: Task < T > ;
20
20
type Payload = ( TaskIdentifier , async_task:: Runnable ) ;
21
21
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
+ }
47
56
}
48
57
49
58
pub struct TickedAsyncExecutorSpawner < O > {
0 commit comments