Struct ProactorBuilder
pub struct ProactorBuilder { /* private fields */ }Expand description
Builder for Proactor.
Implementations§
§impl ProactorBuilder
impl ProactorBuilder
pub fn new() -> ProactorBuilder
pub fn new() -> ProactorBuilder
Create the builder with default config.
pub fn capacity(&mut self, capacity: u32) -> &mut ProactorBuilder
pub fn capacity(&mut self, capacity: u32) -> &mut ProactorBuilder
Set the capacity of the inner event queue or submission queue, if exists. The default value is 1024.
pub fn thread_pool_limit(&mut self, value: usize) -> &mut ProactorBuilder
pub fn thread_pool_limit(&mut self, value: usize) -> &mut ProactorBuilder
Set the thread number limit of the inner thread pool, if exists. The default value is 256.
It will be ignored if reuse_thread_pool is set.
Warning: some operations don’t work if the limit is set to zero:
Asyncifyneeds thread pool.- Operations except
Recv*,Send*,Connect,Acceptmay need thread pool.
pub fn thread_pool_recv_timeout(
&mut self,
timeout: Duration,
) -> &mut ProactorBuilder
pub fn thread_pool_recv_timeout( &mut self, timeout: Duration, ) -> &mut ProactorBuilder
Set the waiting timeout of the inner thread, if exists. The default is 60 seconds.
It will be ignored if reuse_thread_pool is set.
pub fn reuse_thread_pool(&mut self, pool: AsyncifyPool) -> &mut ProactorBuilder
pub fn reuse_thread_pool(&mut self, pool: AsyncifyPool) -> &mut ProactorBuilder
Set to reuse an existing AsyncifyPool in this proactor.
pub fn force_reuse_thread_pool(&mut self) -> &mut ProactorBuilder
pub fn force_reuse_thread_pool(&mut self) -> &mut ProactorBuilder
Force reuse the thread pool for each proactor created by this builder,
even reuse_thread_pool is not set.
pub fn create_or_get_thread_pool(&self) -> AsyncifyPool
pub fn create_or_get_thread_pool(&self) -> AsyncifyPool
Create or reuse the thread pool from the config.
pub fn sqpoll_idle(&mut self, idle: Duration) -> &mut ProactorBuilder
pub fn sqpoll_idle(&mut self, idle: Duration) -> &mut ProactorBuilder
Set io-uring sqpoll idle duration,
This will also enable io-uring’s sqpoll feature.
§Notes
- Only effective when the
io-uringfeature is enabled idlemust be >= 1ms, otherwise sqpoll idle will be set to 0 msidlewill be rounded down
pub fn coop_taskrun(&mut self, enable: bool) -> &mut ProactorBuilder
pub fn coop_taskrun(&mut self, enable: bool) -> &mut ProactorBuilder
Optimize performance for most cases, especially compio is a single thread runtime.
However, it can’t run with sqpoll feature.
§Notes
- Available since Linux Kernel 5.19.
- Only effective when the
io-uringfeature is enabled
pub fn taskrun_flag(&mut self, enable: bool) -> &mut ProactorBuilder
pub fn taskrun_flag(&mut self, enable: bool) -> &mut ProactorBuilder
Allows io-uring driver to know if any cqe’s are available when try to push an sqe to the submission queue.
This should be enabled with coop_taskrun
§Notes
- Available since Linux Kernel 5.19.
- Only effective when the
io-uringfeature is enabled
pub fn register_eventfd(&mut self, fd: i32) -> &mut ProactorBuilder
pub fn register_eventfd(&mut self, fd: i32) -> &mut ProactorBuilder
pub fn detect_opcode_support(
&mut self,
flags: OpCodeFlag,
) -> &mut ProactorBuilder
pub fn detect_opcode_support( &mut self, flags: OpCodeFlag, ) -> &mut ProactorBuilder
Set which io-uring OpCode must be supported by the driver.
Support for io-uring opcodes varies by kernel version. Setting this will force the driver to check for support of the specified opcodes, and when any of them are not supported:
- Fallback to
pollingdriver iffusiondriver is enabled, - Return an
Unsupportederror when building the proactor otherwise.
§Notes
- Only effective when the
io-uringfeature is enabled OpCodeFlagis a bitflag struct, you can combine multiple opcodes with bitwise OR or useOpCodeFlag::allto require all opcodes to be supported.
pub fn driver_type(&mut self, t: DriverType) -> &mut ProactorBuilder
pub fn driver_type(&mut self, t: DriverType) -> &mut ProactorBuilder
Force a driver type to use.
It is ignored if the fusion driver is disabled.
Trait Implementations§
§impl Clone for ProactorBuilder
impl Clone for ProactorBuilder
§fn clone(&self) -> ProactorBuilder
fn clone(&self) -> ProactorBuilder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for ProactorBuilder
impl Debug for ProactorBuilder
§impl Default for ProactorBuilder
impl Default for ProactorBuilder
§fn default() -> ProactorBuilder
fn default() -> ProactorBuilder
impl Send for ProactorBuilder
impl Sync for ProactorBuilder
Auto Trait Implementations§
impl Freeze for ProactorBuilder
impl RefUnwindSafe for ProactorBuilder
impl Unpin for ProactorBuilder
impl UnsafeUnpin for ProactorBuilder
impl UnwindSafe for ProactorBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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