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> | ||||
|     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) { | ||||
|         self.inner.lock(|s| { | ||||
|             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 { | ||||
|         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 { | ||||
|         self.is_empty() | ||||
|     } | ||||
| 
 | ||||
|     fn is_full(&self) -> bool { | ||||
|         self.is_full() | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /// Internal state for the PubSub channel
 | ||||
| @ -445,8 +449,6 @@ pub enum Error { | ||||
|     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> { | ||||
|     /// 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.
 | ||||
|     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.
 | ||||
|     ///
 | ||||
|     /// This is equivalent to `capacity() - len()`
 | ||||
| @ -482,9 +478,6 @@ trait SealedPubSubBehavior<T> { | ||||
|     /// Returns whether the channel is empty.
 | ||||
|     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
 | ||||
|     fn unregister_subscriber(&self, subscriber_next_message_id: u64); | ||||
| 
 | ||||
| @ -495,9 +488,16 @@ trait SealedPubSubBehavior<T> { | ||||
| /// 'Middle level' behaviour of the pubsub channel.
 | ||||
| /// This trait is used so that Sub and Pub can be generic over the channel.
 | ||||
| #[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
 | ||||
| #[derive(Debug, Clone, PartialEq, Eq)] | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user