diff options
| author | Oliver Rockstedt <[email protected]> | 2024-04-08 00:39:58 +0200 |
|---|---|---|
| committer | Oliver Rockstedt <[email protected]> | 2024-04-08 00:40:42 +0200 |
| commit | fa05256f0563716ffa6e865b73679f4d545bcff9 (patch) | |
| tree | add818437ac9764b2095686adab92e23bb854a1d /embassy-sync/src | |
| parent | a4eebdcc6895d6b530e38fbf652bc1a4df00ab0c (diff) | |
embassy-sync: Add len, is_empty and is_full functions to Channel.
Diffstat (limited to 'embassy-sync/src')
| -rw-r--r-- | embassy-sync/src/channel.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/embassy-sync/src/channel.rs b/embassy-sync/src/channel.rs index 48f4dafd6..18be462cb 100644 --- a/embassy-sync/src/channel.rs +++ b/embassy-sync/src/channel.rs | |||
| @@ -449,6 +449,18 @@ impl<T, const N: usize> ChannelState<T, N> { | |||
| 449 | Poll::Pending | 449 | Poll::Pending |
| 450 | } | 450 | } |
| 451 | } | 451 | } |
| 452 | |||
| 453 | fn len(&self) -> usize { | ||
| 454 | self.queue.len() | ||
| 455 | } | ||
| 456 | |||
| 457 | fn is_empty(&self) -> bool { | ||
| 458 | self.queue.is_empty() | ||
| 459 | } | ||
| 460 | |||
| 461 | fn is_full(&self) -> bool { | ||
| 462 | self.queue.is_full() | ||
| 463 | } | ||
| 452 | } | 464 | } |
| 453 | 465 | ||
| 454 | /// A bounded channel for communicating between asynchronous tasks | 466 | /// A bounded channel for communicating between asynchronous tasks |
| @@ -572,6 +584,21 @@ where | |||
| 572 | pub fn try_receive(&self) -> Result<T, TryReceiveError> { | 584 | pub fn try_receive(&self) -> Result<T, TryReceiveError> { |
| 573 | self.lock(|c| c.try_receive()) | 585 | self.lock(|c| c.try_receive()) |
| 574 | } | 586 | } |
| 587 | |||
| 588 | /// Returns the number of elements currently in the channel. | ||
| 589 | pub fn len(&self) -> usize { | ||
| 590 | self.lock(|c| c.len()) | ||
| 591 | } | ||
| 592 | |||
| 593 | /// Returns whether the channel is empty. | ||
| 594 | pub fn is_empty(&self) -> bool { | ||
| 595 | self.lock(|c| c.is_empty()) | ||
| 596 | } | ||
| 597 | |||
| 598 | /// Returns whether the channel is full. | ||
| 599 | pub fn is_full(&self) -> bool { | ||
| 600 | self.lock(|c| c.is_full()) | ||
| 601 | } | ||
| 575 | } | 602 | } |
| 576 | 603 | ||
| 577 | /// Implements the DynamicChannel to allow creating types that are unaware of the queue size with the | 604 | /// Implements the DynamicChannel to allow creating types that are unaware of the queue size with the |
