Merge pull request #3354 from mammothbane/main
embassy_sync/pubsub: fix PubSubBehavior visibility
This commit is contained in:
		
						commit
						d7780fcf83
					
				| @ -194,6 +194,25 @@ impl<M: RawMutex, T: Clone, const CAP: usize, const SUBS: usize, const PUBS: usi | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | impl<M: RawMutex, T: Clone, const CAP: usize, const SUBS: usize, const PUBS: usize> crate::pubsub::PubSubBehavior<T> | ||||||
|  |     for PubSubChannel<M, T, CAP, SUBS, PUBS> | ||||||
|  | { | ||||||
|  |     fn publish_immediate(&self, message: T) { | ||||||
|  |         self.inner.lock(|s| { | ||||||
|  |             let mut s = s.borrow_mut(); | ||||||
|  |             s.publish_immediate(message) | ||||||
|  |         }) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fn capacity(&self) -> usize { | ||||||
|  |         self.capacity() | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fn is_full(&self) -> bool { | ||||||
|  |         self.is_full() | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| impl<M: RawMutex, T: Clone, const CAP: usize, const SUBS: usize, const PUBS: usize> SealedPubSubBehavior<T> | impl<M: RawMutex, T: Clone, const CAP: usize, const SUBS: usize, const PUBS: usize> SealedPubSubBehavior<T> | ||||||
|     for PubSubChannel<M, T, CAP, SUBS, PUBS> |     for PubSubChannel<M, T, CAP, SUBS, PUBS> | ||||||
| { | { | ||||||
| @ -246,13 +265,6 @@ impl<M: RawMutex, T: Clone, const CAP: usize, const SUBS: usize, const PUBS: usi | |||||||
|         }) |         }) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn publish_immediate(&self, message: T) { |  | ||||||
|         self.inner.lock(|s| { |  | ||||||
|             let mut s = s.borrow_mut(); |  | ||||||
|             s.publish_immediate(message) |  | ||||||
|         }) |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     fn unregister_subscriber(&self, subscriber_next_message_id: u64) { |     fn unregister_subscriber(&self, subscriber_next_message_id: u64) { | ||||||
|         self.inner.lock(|s| { |         self.inner.lock(|s| { | ||||||
|             let mut s = s.borrow_mut(); |             let mut s = s.borrow_mut(); | ||||||
| @ -267,10 +279,6 @@ impl<M: RawMutex, T: Clone, const CAP: usize, const SUBS: usize, const PUBS: usi | |||||||
|         }) |         }) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn capacity(&self) -> usize { |  | ||||||
|         self.capacity() |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     fn free_capacity(&self) -> usize { |     fn free_capacity(&self) -> usize { | ||||||
|         self.free_capacity() |         self.free_capacity() | ||||||
|     } |     } | ||||||
| @ -286,10 +294,6 @@ impl<M: RawMutex, T: Clone, const CAP: usize, const SUBS: usize, const PUBS: usi | |||||||
|     fn is_empty(&self) -> bool { |     fn is_empty(&self) -> bool { | ||||||
|         self.is_empty() |         self.is_empty() | ||||||
|     } |     } | ||||||
| 
 |  | ||||||
|     fn is_full(&self) -> bool { |  | ||||||
|         self.is_full() |  | ||||||
|     } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// Internal state for the PubSub channel
 | /// Internal state for the PubSub channel
 | ||||||
| @ -445,8 +449,6 @@ pub enum Error { | |||||||
|     MaximumPublishersReached, |     MaximumPublishersReached, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// 'Middle level' behaviour of the pubsub channel.
 |  | ||||||
| /// This trait is used so that Sub and Pub can be generic over the channel.
 |  | ||||||
| trait SealedPubSubBehavior<T> { | trait SealedPubSubBehavior<T> { | ||||||
|     /// Try to get a message from the queue with the given message id.
 |     /// Try to get a message from the queue with the given message id.
 | ||||||
|     ///
 |     ///
 | ||||||
| @ -462,12 +464,6 @@ trait SealedPubSubBehavior<T> { | |||||||
|     /// If the queue is full and a context is given, then its waker is registered in the publisher wakers.
 |     /// If the queue is full and a context is given, then its waker is registered in the publisher wakers.
 | ||||||
|     fn publish_with_context(&self, message: T, cx: Option<&mut Context<'_>>) -> Result<(), T>; |     fn publish_with_context(&self, message: T, cx: Option<&mut Context<'_>>) -> Result<(), T>; | ||||||
| 
 | 
 | ||||||
|     /// Publish a message immediately
 |  | ||||||
|     fn publish_immediate(&self, message: T); |  | ||||||
| 
 |  | ||||||
|     /// Returns the maximum number of elements the channel can hold.
 |  | ||||||
|     fn capacity(&self) -> usize; |  | ||||||
| 
 |  | ||||||
|     /// Returns the free capacity of the channel.
 |     /// Returns the free capacity of the channel.
 | ||||||
|     ///
 |     ///
 | ||||||
|     /// This is equivalent to `capacity() - len()`
 |     /// This is equivalent to `capacity() - len()`
 | ||||||
| @ -482,9 +478,6 @@ trait SealedPubSubBehavior<T> { | |||||||
|     /// Returns whether the channel is empty.
 |     /// Returns whether the channel is empty.
 | ||||||
|     fn is_empty(&self) -> bool; |     fn is_empty(&self) -> bool; | ||||||
| 
 | 
 | ||||||
|     /// Returns whether the channel is full.
 |  | ||||||
|     fn is_full(&self) -> bool; |  | ||||||
| 
 |  | ||||||
|     /// Let the channel know that a subscriber has dropped
 |     /// Let the channel know that a subscriber has dropped
 | ||||||
|     fn unregister_subscriber(&self, subscriber_next_message_id: u64); |     fn unregister_subscriber(&self, subscriber_next_message_id: u64); | ||||||
| 
 | 
 | ||||||
| @ -495,9 +488,16 @@ trait SealedPubSubBehavior<T> { | |||||||
| /// 'Middle level' behaviour of the pubsub channel.
 | /// 'Middle level' behaviour of the pubsub channel.
 | ||||||
| /// This trait is used so that Sub and Pub can be generic over the channel.
 | /// This trait is used so that Sub and Pub can be generic over the channel.
 | ||||||
| #[allow(private_bounds)] | #[allow(private_bounds)] | ||||||
| pub trait PubSubBehavior<T>: SealedPubSubBehavior<T> {} | pub trait PubSubBehavior<T>: SealedPubSubBehavior<T> { | ||||||
|  |     /// Publish a message immediately
 | ||||||
|  |     fn publish_immediate(&self, message: T); | ||||||
| 
 | 
 | ||||||
| impl<T, C: SealedPubSubBehavior<T>> PubSubBehavior<T> for C {} |     /// Returns the maximum number of elements the channel can hold.
 | ||||||
|  |     fn capacity(&self) -> usize; | ||||||
|  | 
 | ||||||
|  |     /// Returns whether the channel is full.
 | ||||||
|  |     fn is_full(&self) -> bool; | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| /// The result of the subscriber wait procedure
 | /// The result of the subscriber wait procedure
 | ||||||
| #[derive(Debug, Clone, PartialEq, Eq)] | #[derive(Debug, Clone, PartialEq, Eq)] | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user