Runtime

Struct Runtime 

Source
pub struct Runtime { /* private fields */ }
Expand description

See Runtime

Implementations§

Source§

impl Runtime

Source

pub fn new() -> Result<Self>

Create Runtime.

Source§

impl Runtime

Source

pub fn poll_and_run(&self) -> Option<Duration>

Poll the runtime. Returns the next timeout.

Source

pub fn block_on<F: Future>( &self, future: F, poll: impl Fn(Option<Duration>), ) -> F::Output

Block on the future till it completes. Users should enter the runtime before calling this function, and poll the runtime themselves.

Methods from Deref<Target = Runtime>§

Source

pub fn driver_type(&self) -> DriverType

The current driver type.

Source

pub fn enter<T, F>(&self, f: F) -> T
where F: FnOnce() -> T,

Set this runtime as current runtime, and perform a function in the current scope.

Source

pub unsafe fn spawn_unchecked<F>( &self, future: F, ) -> Task<<F as Future>::Output>
where F: Future,

Spawns a new asynchronous task, returning a Task for it.

§Safety

The caller should ensure the captured lifetime long enough.

Source

pub fn run(&self) -> bool

Low level API to control the runtime.

Run the scheduled tasks.

The return value indicates whether there are still tasks in the queue.

Source

pub fn block_on<F>(&self, future: F) -> <F as Future>::Output
where F: Future,

Block on the future till it completes.

Source

pub fn spawn<F>( &self, future: F, ) -> Task<Result<<F as Future>::Output, Box<dyn Any + Send>>>
where F: Future + 'static,

Spawns a new asynchronous task, returning a Task for it.

Spawning a task enables the task to execute concurrently to other tasks. There is no guarantee that a spawned task will execute to completion.

Source

pub fn spawn_blocking<T>( &self, f: impl FnOnce() -> T + Send + 'static, ) -> Task<Result<T, Box<dyn Any + Send>>>
where T: Send + 'static,

Spawns a blocking task in a new thread, and wait for it.

The task will not be cancelled even if the future is dropped.

Source

pub fn attach(&self, fd: i32) -> Result<(), Error>

Attach a raw file descriptor/handle/socket to the runtime.

You only need this when authoring your own high-level APIs. High-level resources in this crate are attached automatically.

Source

pub fn submit<T>(&self, op: T) -> impl Future<Output = BufResult<usize, T>>
where T: OpCode + 'static,

👎Deprecated: use compio::runtime::submit instead

Submit an operation to the runtime.

You only need this when authoring your own OpCode.

It is safe to send the returned future to another runtime and poll it, but the exact behavior is not guaranteed, e.g. it may return pending forever or else.

Source

pub fn submit_with_flags<T>( &self, op: T, ) -> impl Future<Output = (BufResult<usize, T>, u32)>
where T: OpCode + 'static,

👎Deprecated: use compio::runtime::submit_with_flags instead

Submit an operation to the runtime.

The difference between Runtime::submit is this method will return the flags

You only need this when authoring your own OpCode.

It is safe to send the returned future to another runtime and poll it, but the exact behavior is not guaranteed, e.g. it may return pending forever or else.

Source

pub fn current_timeout(&self) -> Option<Duration>

Low level API to control the runtime.

Get the timeout value to be passed to Proactor::poll.

Source

pub fn poll(&self)

Low level API to control the runtime.

Poll the inner proactor. It is equal to calling Runtime::poll_with with Runtime::current_timeout.

Source

pub fn poll_with(&self, timeout: Option<Duration>)

Low level API to control the runtime.

Poll the inner proactor with a custom timeout.

Trait Implementations§

Source§

impl AsRawFd for Runtime

Source§

fn as_raw_fd(&self) -> RawFd

Extracts the raw file descriptor. Read more
Source§

impl Deref for Runtime

Source§

type Target = Runtime

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl DerefMut for Runtime

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.

Auto Trait Implementations§

§

impl !Freeze for Runtime

§

impl !RefUnwindSafe for Runtime

§

impl !Send for Runtime

§

impl !Sync for Runtime

§

impl Unpin for Runtime

§

impl !UnwindSafe for Runtime

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more