File tree 6 files changed +27
-16
lines changed 6 files changed +27
-16
lines changed Original file line number Diff line number Diff line change 1
1
use super :: { CursorDirection , CursorSys } ;
2
- use crate :: future:: { EventTargetResult , PollUnpinned , VoidRequest } ;
2
+ use crate :: future:: request:: listeners:: EventTargetResult ;
3
+ use crate :: future:: { PollUnpinned , Request } ;
3
4
use crate :: internal_utils:: SystemRepr ;
4
5
use crate :: primitive:: { TryFromJs , TryToJs } ;
5
6
use fancy_constructor:: new;
@@ -27,7 +28,7 @@ pub(crate) enum CursorState {
27
28
TryNext ,
28
29
29
30
/// We are currently reading the next record.
30
- ReadingNext ( VoidRequest ) ,
31
+ ReadingNext ( Request < EventTargetResult > ) ,
31
32
}
32
33
33
34
impl BaseCursor {
@@ -108,8 +109,8 @@ impl BaseCursor {
108
109
self . as_sys ( ) . direction ( )
109
110
}
110
111
111
- pub ( crate ) fn req ( & self ) -> VoidRequest {
112
- VoidRequest :: new ( self . as_sys ( ) . req ( ) )
112
+ pub ( crate ) fn req ( & self ) -> Request < EventTargetResult > {
113
+ Request :: new ( self . as_sys ( ) . req ( ) )
113
114
}
114
115
115
116
pub ( crate ) fn poll_state < R , F > (
Original file line number Diff line number Diff line change @@ -5,15 +5,15 @@ pub use basic::BasicRequest;
5
5
pub use get_all:: * ;
6
6
pub use maybe_errored:: MaybeErrored ;
7
7
pub use open_db:: { OpenDbListener , OpenDbRequest } ;
8
- pub use request:: { EventTargetResult , Request , VoidRequest } ;
8
+ pub use request:: { Request , VoidRequest } ;
9
9
pub use traits:: * ;
10
10
11
11
mod array_map;
12
12
mod basic;
13
13
mod get_all;
14
14
mod maybe_errored;
15
15
mod open_db;
16
- mod request;
16
+ pub ( crate ) mod request;
17
17
mod traits;
18
18
19
19
iffeat ! {
Original file line number Diff line number Diff line change @@ -71,7 +71,7 @@ impl OpenDbRequest {
71
71
impl OpenDbRequest {
72
72
fn phase_poll_req ( & mut self , cx : & mut Context ) -> Poll < crate :: OpenDbResult < Database > > {
73
73
match self . req . poll_unpinned ( cx) {
74
- Poll :: Ready ( Ok ( _ ) ) => {
74
+ Poll :: Ready ( Ok ( ( ) ) ) => {
75
75
cfg_if ! {
76
76
if #[ cfg( feature = "async-upgrade" ) ] {
77
77
self . polling_fn = Self :: phase_poll_listeners;
Original file line number Diff line number Diff line change 1
- mod listeners;
1
+ pub ( crate ) mod listeners;
2
2
mod untyped;
3
3
4
4
use crate :: internal_utils:: SystemRepr ;
5
5
use internal_macros:: { FutureFromPollUnpinned , StructNameDebug } ;
6
- pub use listeners:: EventTargetResult ;
7
6
use listeners:: Listeners ;
8
7
use sealed:: sealed;
9
8
use std:: marker:: PhantomData ;
@@ -63,11 +62,22 @@ impl PollUnpinned for Request {
63
62
}
64
63
65
64
#[ sealed]
66
- impl PollUnpinned for Request < ( ) > {
67
- type Output = crate :: Result < EventTargetResult > ;
65
+ #[ cfg( feature = "cursors" ) ]
66
+ impl PollUnpinned for Request < listeners:: EventTargetResult > {
67
+ type Output = crate :: Result < listeners:: EventTargetResult > ;
68
68
69
69
#[ inline]
70
70
fn poll_unpinned ( & mut self , cx : & mut Context ) -> Poll < Self :: Output > {
71
71
self . inner . poll_unpinned ( cx)
72
72
}
73
73
}
74
+
75
+ #[ sealed]
76
+ impl PollUnpinned for Request < ( ) > {
77
+ type Output = crate :: Result < ( ) > ;
78
+
79
+ #[ inline]
80
+ fn poll_unpinned ( & mut self , cx : & mut Context ) -> Poll < Self :: Output > {
81
+ self . inner . poll_unpinned ( cx) . map ( |res| res. map ( |_| ( ) ) )
82
+ }
83
+ }
Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ use wasm_bindgen::prelude::*;
8
8
type Callback = Closure < dyn FnMut ( web_sys:: Event ) + ' static > ;
9
9
10
10
/// represents the value on an event.target.result
11
- pub enum EventTargetResult {
11
+ pub ( crate ) enum EventTargetResult {
12
12
/// the event.target.result was null
13
13
Null ,
14
14
/// the event.target.result was a [`web_sys::IdbCursor`] instance
Original file line number Diff line number Diff line change @@ -39,9 +39,9 @@ impl UntypedRequest {
39
39
}
40
40
}
41
41
42
- fn poll_request ( req : & web_sys:: IdbRequest ) -> Poll < crate :: Result < ( ) > > {
42
+ fn poll_request < T > ( req : & web_sys:: IdbRequest , v : T ) -> Poll < crate :: Result < T > > {
43
43
if matches ! ( req. ready_state( ) , IdbRequestReadyState :: Done ) {
44
- Poll :: Ready ( Self :: req_to_result ( req, ( ) ) )
44
+ Poll :: Ready ( Self :: req_to_result ( req, v ) )
45
45
} else {
46
46
Poll :: Pending
47
47
}
@@ -62,8 +62,8 @@ impl PollUnpinned for UntypedRequest {
62
62
match self {
63
63
Self :: WithListeners ( listeners) => listeners. poll_unpinned ( cx) ,
64
64
Self :: Bare ( req) => {
65
- if let Poll :: Ready ( res) = Self :: poll_request ( req) {
66
- Poll :: Ready ( res. map ( | ( ) | EventTargetResult :: NotNull ) )
65
+ if let Poll :: Ready ( res) = Self :: poll_request ( req, EventTargetResult :: NotNull ) {
66
+ Poll :: Ready ( res)
67
67
} else {
68
68
let mut listeners = Self :: create_listeners ( req) ;
69
69
let out = listeners. poll_unpinned ( cx) ;
You can’t perform that action at this time.
0 commit comments