Struct tokio_util::sync::PollSemaphore
source · pub struct PollSemaphore {
semaphore: Arc<Semaphore>,
permit_fut: Option<(u32, ReusableBoxFuture<'static, Result<OwnedSemaphorePermit, AcquireError>>)>,
}
Expand description
A wrapper around Semaphore
that provides a poll_acquire
method.
Fields§
§semaphore: Arc<Semaphore>
§permit_fut: Option<(u32, ReusableBoxFuture<'static, Result<OwnedSemaphorePermit, AcquireError>>)>
Implementations§
source§impl PollSemaphore
impl PollSemaphore
sourcepub fn clone_inner(&self) -> Arc<Semaphore>
pub fn clone_inner(&self) -> Arc<Semaphore>
Obtain a clone of the inner semaphore.
sourcepub fn into_inner(self) -> Arc<Semaphore>
pub fn into_inner(self) -> Arc<Semaphore>
Get back the inner semaphore.
sourcepub fn poll_acquire(
&mut self,
cx: &mut Context<'_>,
) -> Poll<Option<OwnedSemaphorePermit>>
pub fn poll_acquire( &mut self, cx: &mut Context<'_>, ) -> Poll<Option<OwnedSemaphorePermit>>
Poll to acquire a permit from the semaphore.
This can return the following values:
Poll::Pending
if a permit is not currently available.Poll::Ready(Some(permit))
if a permit was acquired.Poll::Ready(None)
if the semaphore has been closed.
When this method returns Poll::Pending
, the current task is scheduled
to receive a wakeup when a permit becomes available, or when the
semaphore is closed. Note that on multiple calls to poll_acquire
, only
the Waker
from the Context
passed to the most recent call is
scheduled to receive a wakeup.
sourcepub fn poll_acquire_many(
&mut self,
cx: &mut Context<'_>,
permits: u32,
) -> Poll<Option<OwnedSemaphorePermit>>
pub fn poll_acquire_many( &mut self, cx: &mut Context<'_>, permits: u32, ) -> Poll<Option<OwnedSemaphorePermit>>
Poll to acquire many permits from the semaphore.
This can return the following values:
Poll::Pending
if a permit is not currently available.Poll::Ready(Some(permit))
if a permit was acquired.Poll::Ready(None)
if the semaphore has been closed.
When this method returns Poll::Pending
, the current task is scheduled
to receive a wakeup when the permits become available, or when the
semaphore is closed. Note that on multiple calls to poll_acquire
, only
the Waker
from the Context
passed to the most recent call is
scheduled to receive a wakeup.
sourcepub fn available_permits(&self) -> usize
pub fn available_permits(&self) -> usize
Returns the current number of available permits.
This is equivalent to the Semaphore::available_permits
method on the
tokio::sync::Semaphore
type.
sourcepub fn add_permits(&self, n: usize)
pub fn add_permits(&self, n: usize)
Adds n
new permits to the semaphore.
The maximum number of permits is Semaphore::MAX_PERMITS
, and this function
will panic if the limit is exceeded.
This is equivalent to the Semaphore::add_permits
method on the
tokio::sync::Semaphore
type.
Trait Implementations§
source§impl AsRef<Semaphore> for PollSemaphore
impl AsRef<Semaphore> for PollSemaphore
source§impl Clone for PollSemaphore
impl Clone for PollSemaphore
source§fn clone(&self) -> PollSemaphore
fn clone(&self) -> PollSemaphore
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more