pub struct Mainloop {
pub _inner: Rc<MainloopInner<MainloopInternal>>,
}
Expand description
This acts as a safe interface to the internal PA Mainloop.
The mainloop object pointers are further enclosed here in a ref counted wrapper, allowing this outer wrapper to have clean methods for creating event objects, which can cleanly pass a copy of the inner ref counted mainloop object to them. Giving this to events serves two purposes, firstly because they need the API pointer, secondly, it ensures that event objects do not outlive the mainloop object.
Fields
_inner: Rc<MainloopInner<MainloopInternal>>
The ref-counted inner data.
Implementations
Prepares for a single iteration of the main loop.
Returns Err
on error or exit request.
timeout
specifies a maximum timeout for the subsequent poll. None
requests blocking
behaviour.
Note, should the microseconds timeout value provided be too large to pass to the underlying
C API (larger than std::i32::MAX
), then the PAErr
form of the Code::TooLarge
error will be returned (within Result::Err
).
Dispatchs timeout, IO and deferred events from the previously executed poll.
On success returns the number of source dispatched.
Gets the return value as specified with the main loop’s quit()
routine.
Runs a single iteration of the main loop.
This is a convenience function for prepare()
, poll()
and dispatch()
.
If block
is true
, block for events if none are queued.
Returns an IterateResult
variant:
- On success, returns
IterateResult::Success
containing the number of sources dispatched in this iteration. - If exit was requested, returns
IterateResult::Quit
containing quit’s retval. - On error, returns
IterateResult::Err
containing error value.
Runs unlimited iterations of the main loop object until the main loop’s
quit()
routine is called.
On success, returns Ok
containing quit’s return value. On error returns Err
containing a
tuple of the error value and quit’s return value.
Gets the abstract main loop abstraction layer vtable for this main loop.
No need to free the API as it is owned by the loop and is destroyed when the loop is freed.
Talking to PA directly with C requires fetching this pointer explicitly via this function. This is actually unnecessary through this binding. The pointer is retrieved automatically upon Mainloop creation, stored internally, and automatically obtained from it by functions that need it.
Shuts down the main loop with the specified return value.
Trait Implementations
type MI = MainloopInner<MainloopInternal>
type MI = MainloopInner<MainloopInternal>
Inner mainloop type.
Get inner mainloop.
fn new_io_event(
&mut self,
fd: i32,
events: IoEventFlagSet,
callback: Box<dyn FnMut(IoEventRef<Self::MI>, i32, IoEventFlagSet) + 'static>
) -> Option<IoEvent<Self::MI>>
fn new_io_event(
&mut self,
fd: i32,
events: IoEventFlagSet,
callback: Box<dyn FnMut(IoEventRef<Self::MI>, i32, IoEventFlagSet) + 'static>
) -> Option<IoEvent<Self::MI>>
Creates a new IO event. Read more
fn new_timer_event(
&mut self,
tv: &UnixTs,
callback: Box<dyn FnMut(TimeEventRef<Self::MI>) + 'static>
) -> Option<TimeEvent<Self::MI>>
fn new_timer_event(
&mut self,
tv: &UnixTs,
callback: Box<dyn FnMut(TimeEventRef<Self::MI>) + 'static>
) -> Option<TimeEvent<Self::MI>>
Creates a new timer event. Read more
fn new_timer_event_rt(
&mut self,
t: MonotonicTs,
callback: Box<dyn FnMut(TimeEventRef<Self::MI>) + 'static>
) -> Option<TimeEvent<Self::MI>>
fn new_timer_event_rt(
&mut self,
t: MonotonicTs,
callback: Box<dyn FnMut(TimeEventRef<Self::MI>) + 'static>
) -> Option<TimeEvent<Self::MI>>
Creates a new monotonic-based timer event. Read more
fn new_deferred_event(
&mut self,
callback: Box<dyn FnMut(DeferEventRef<Self::MI>) + 'static>
) -> Option<DeferEvent<Self::MI>>
fn new_deferred_event(
&mut self,
callback: Box<dyn FnMut(DeferEventRef<Self::MI>) + 'static>
) -> Option<DeferEvent<Self::MI>>
Creates a new deferred event. Read more
Runs the specified callback once from the main loop using an anonymous defer event. Read more
Initializes the UNIX signal subsystem and bind it to the specified main loop.
Cleans up the signal subsystem.