1
1
//! The inner list of listeners.
2
2
3
- use crate :: node:: { Node , TaskWaiting } ;
4
- use crate :: queue:: Queue ;
3
+ #[ path = "list/node.rs" ]
4
+ mod node;
5
+
6
+ #[ path = "list/queue.rs" ]
7
+ mod queue;
8
+
9
+ use node:: { Node , TaskWaiting } ;
10
+ use queue:: Queue ;
11
+
5
12
use crate :: sync:: atomic:: { AtomicBool , Ordering } ;
6
13
use crate :: sync:: cell:: { Cell , UnsafeCell } ;
7
14
use crate :: sync:: Arc ;
@@ -15,7 +22,7 @@ use slab::Slab;
15
22
16
23
impl crate :: Inner {
17
24
/// Locks the list.
18
- fn lock ( & self ) -> Option < ListGuard < ' _ > > {
25
+ fn try_lock ( & self ) -> Option < ListGuard < ' _ > > {
19
26
self . list . inner . try_lock ( ) . map ( |guard| ListGuard {
20
27
inner : self ,
21
28
guard : Some ( guard) ,
@@ -31,7 +38,7 @@ impl crate::Inner {
31
38
return ;
32
39
}
33
40
34
- match self . lock ( ) {
41
+ match self . try_lock ( ) {
35
42
Some ( mut lock) => {
36
43
let key = lock. insert ( State :: Created ) ;
37
44
* listener = Listener :: HasNode ( key) ;
@@ -50,7 +57,7 @@ impl crate::Inner {
50
57
pub ( crate ) fn remove ( & self , listener : & mut Listener , propogate : bool ) -> Option < State > {
51
58
let state = match mem:: replace ( listener, Listener :: Discarded ) {
52
59
Listener :: HasNode ( key) => {
53
- match self . lock ( ) {
60
+ match self . try_lock ( ) {
54
61
Some ( mut list) => {
55
62
// Fast path removal.
56
63
list. remove ( Listener :: HasNode ( key) , propogate)
@@ -85,7 +92,7 @@ impl crate::Inner {
85
92
/// Notifies a number of entries.
86
93
#[ cold]
87
94
pub ( crate ) fn notify ( & self , n : usize , additional : bool ) {
88
- match self . lock ( ) {
95
+ match self . try_lock ( ) {
89
96
Some ( mut guard) => {
90
97
// Notify the listeners.
91
98
guard. notify ( n, additional) ;
@@ -112,7 +119,7 @@ impl crate::Inner {
112
119
match mem:: replace ( listener, Listener :: Discarded ) {
113
120
Listener :: HasNode ( key) => {
114
121
* listener = Listener :: HasNode ( key) ;
115
- match self . lock ( ) {
122
+ match self . try_lock ( ) {
116
123
Some ( mut guard) => {
117
124
// Fast path registration.
118
125
return guard. register ( listener, task) ;
0 commit comments