(&self)
| 81 | } |
| 82 | |
| 83 | pub fn receiver(&self) -> Receiver { |
| 84 | let count = self.storage.receiver_count.fetch_add(1, Ordering::Relaxed); |
| 85 | |
| 86 | if count > usize::MAX / 2 { |
| 87 | process::abort(); |
| 88 | } |
| 89 | |
| 90 | Receiver::new( |
| 91 | inner::Receiver { |
| 92 | channel: self.storage.clone(), |
| 93 | listener: None, |
| 94 | close_ops: self.rx_close_ops.clone(), |
| 95 | }, |
| 96 | self.receiver_epoch.clone(), |
| 97 | self.rx_counter.clone(), |
| 98 | ) |
| 99 | } |
| 100 | |
| 101 | pub fn len(&self) -> usize { |
| 102 | self.storage.queue.len() |