@@ -38,8 +38,6 @@ pub(crate) struct Cfg {
38
38
pub ( crate ) start_paused : bool ,
39
39
}
40
40
41
- pub ( crate ) type Unpark = TimerUnpark ;
42
-
43
41
impl Driver {
44
42
pub ( crate ) fn new ( cfg : Cfg ) -> io:: Result < ( Self , Handle ) > {
45
43
let ( io_stack, io_handle, signal_handle) = create_io_stack ( cfg. enable_io ) ?;
@@ -60,10 +58,6 @@ impl Driver {
60
58
) )
61
59
}
62
60
63
- pub ( crate ) fn unpark ( & self ) -> TimerUnpark {
64
- self . inner . unpark ( )
65
- }
66
-
67
61
pub ( crate ) fn park ( & mut self ) {
68
62
self . inner . park ( )
69
63
}
@@ -77,11 +71,21 @@ impl Driver {
77
71
}
78
72
}
79
73
74
+ impl Handle {
75
+ pub ( crate ) fn unpark ( & self ) {
76
+ #[ cfg( feature = "time" ) ]
77
+ if let Some ( handle) = & self . time {
78
+ handle. unpark ( ) ;
79
+ }
80
+
81
+ self . io . unpark ( ) ;
82
+ }
83
+ }
84
+
80
85
// ===== io driver =====
81
86
82
87
cfg_io_driver ! {
83
88
pub ( crate ) type IoDriver = crate :: runtime:: io:: Driver ;
84
- pub ( crate ) type IoHandle = IoUnpark ;
85
89
86
90
#[ derive( Debug ) ]
87
91
pub ( crate ) enum IoStack {
@@ -90,7 +94,7 @@ cfg_io_driver! {
90
94
}
91
95
92
96
#[ derive( Debug , Clone ) ]
93
- pub ( crate ) enum IoUnpark {
97
+ pub ( crate ) enum IoHandle {
94
98
Enabled ( crate :: runtime:: io:: Handle ) ,
95
99
Disabled ( UnparkThread ) ,
96
100
}
@@ -106,23 +110,25 @@ cfg_io_driver! {
106
110
let ( signal_driver, signal_handle) = create_signal_driver( io_driver) ?;
107
111
let process_driver = create_process_driver( signal_driver) ;
108
112
109
- ( IoStack :: Enabled ( process_driver) , IoUnpark :: Enabled ( io_handle) , signal_handle)
113
+ ( IoStack :: Enabled ( process_driver) , IoHandle :: Enabled ( io_handle) , signal_handle)
110
114
} else {
111
115
let park_thread = ParkThread :: new( ) ;
112
116
let unpark_thread = park_thread. unpark( ) ;
113
- ( IoStack :: Disabled ( park_thread) , IoUnpark :: Disabled ( unpark_thread) , Default :: default ( ) )
117
+ ( IoStack :: Disabled ( park_thread) , IoHandle :: Disabled ( unpark_thread) , Default :: default ( ) )
114
118
} ;
115
119
116
120
Ok ( ret)
117
121
}
118
122
119
123
impl IoStack {
120
- pub ( crate ) fn unpark( & self ) -> IoUnpark {
124
+ /*
125
+ pub(crate) fn handle(&self) -> IoHandle {
121
126
match self {
122
- IoStack :: Enabled ( v) => IoUnpark :: Enabled ( v. unpark ( ) ) ,
123
- IoStack :: Disabled ( v) => IoUnpark :: Disabled ( v. unpark( ) ) ,
127
+ IoStack::Enabled(v) => IoHandle ::Enabled(v.handle ()),
128
+ IoStack::Disabled(v) => IoHandle ::Disabled(v.unpark()),
124
129
}
125
- }
130
+ }]
131
+ */
126
132
127
133
pub ( crate ) fn park( & mut self ) {
128
134
match self {
@@ -146,37 +152,36 @@ cfg_io_driver! {
146
152
}
147
153
}
148
154
149
- impl IoUnpark {
155
+ impl IoHandle {
150
156
pub ( crate ) fn unpark( & self ) {
151
157
match self {
152
- IoUnpark :: Enabled ( v ) => v . unpark( ) ,
153
- IoUnpark :: Disabled ( v ) => v . unpark( ) ,
158
+ IoHandle :: Enabled ( handle ) => handle . unpark( ) ,
159
+ IoHandle :: Disabled ( handle ) => handle . unpark( ) ,
154
160
}
155
161
}
156
162
157
163
#[ track_caller]
158
164
pub ( crate ) fn expect( self , msg: & ' static str ) -> crate :: runtime:: io:: Handle {
159
165
match self {
160
- IoUnpark :: Enabled ( v) => v,
161
- IoUnpark :: Disabled ( ..) => panic!( "{}" , msg) ,
166
+ IoHandle :: Enabled ( v) => v,
167
+ IoHandle :: Disabled ( ..) => panic!( "{}" , msg) ,
162
168
}
163
169
}
164
170
165
171
cfg_unstable! {
166
172
pub ( crate ) fn as_ref( & self ) -> Option <& crate :: runtime:: io:: Handle > {
167
173
match self {
168
- IoUnpark :: Enabled ( v) => Some ( v) ,
169
- IoUnpark :: Disabled ( ..) => None ,
174
+ IoHandle :: Enabled ( v) => Some ( v) ,
175
+ IoHandle :: Disabled ( ..) => None ,
170
176
}
171
177
}
172
178
}
173
179
}
174
180
}
175
181
176
182
cfg_not_io_driver ! {
177
- pub ( crate ) type IoHandle = IoUnpark ;
183
+ pub ( crate ) type IoHandle = UnparkThread ;
178
184
pub ( crate ) type IoStack = ParkThread ;
179
- pub ( crate ) type IoUnpark = UnparkThread ;
180
185
181
186
fn create_io_stack( _enabled: bool ) -> io:: Result <( IoStack , IoHandle , SignalHandle ) > {
182
187
let park_thread = ParkThread :: new( ) ;
@@ -249,11 +254,6 @@ cfg_time! {
249
254
Disabled ( IoStack ) ,
250
255
}
251
256
252
- pub ( crate ) enum TimerUnpark {
253
- Enabled ( crate :: runtime:: time:: TimerUnpark ) ,
254
- Disabled ( IoUnpark ) ,
255
- }
256
-
257
257
pub ( crate ) type Clock = crate :: time:: Clock ;
258
258
pub ( crate ) type TimeHandle = Option <crate :: runtime:: time:: Handle >;
259
259
@@ -276,13 +276,6 @@ cfg_time! {
276
276
}
277
277
278
278
impl TimeDriver {
279
- pub ( crate ) fn unpark( & self ) -> TimerUnpark {
280
- match self {
281
- TimeDriver :: Enabled { driver, .. } => TimerUnpark :: Enabled ( driver. unpark( ) ) ,
282
- TimeDriver :: Disabled ( v) => TimerUnpark :: Disabled ( v. unpark( ) ) ,
283
- }
284
- }
285
-
286
279
pub ( crate ) fn park( & mut self ) {
287
280
match self {
288
281
TimeDriver :: Enabled { driver, handle } => driver. park( handle) ,
@@ -304,20 +297,10 @@ cfg_time! {
304
297
}
305
298
}
306
299
}
307
-
308
- impl TimerUnpark {
309
- pub ( crate ) fn unpark( & self ) {
310
- match self {
311
- TimerUnpark :: Enabled ( v) => v. unpark( ) ,
312
- TimerUnpark :: Disabled ( v) => v. unpark( ) ,
313
- }
314
- }
315
- }
316
300
}
317
301
318
302
cfg_not_time ! {
319
303
type TimeDriver = IoStack ;
320
- type TimerUnpark = IoUnpark ;
321
304
322
305
pub ( crate ) type Clock = ( ) ;
323
306
pub ( crate ) type TimeHandle = ( ) ;
0 commit comments