pub struct ProactorBuilder { /* private fields */ }Expand description
Builder for Proactor.
Implementations§
Source§impl ProactorBuilder
impl ProactorBuilder
Sourcepub fn new() -> ProactorBuilder
pub fn new() -> ProactorBuilder
Create the builder with default config.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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
Sourcepub 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
Sourcepub 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
Sourcepub fn register_eventfd(&mut self, fd: i32) -> &mut ProactorBuilder
pub fn register_eventfd(&mut self, fd: i32) -> &mut ProactorBuilder
Sourcepub 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.
Sourcepub 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§
Source§impl Clone for ProactorBuilder
impl Clone for ProactorBuilder
Source§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 moreSource§impl Debug for ProactorBuilder
impl Debug for ProactorBuilder
Source§impl Default for ProactorBuilder
impl Default for ProactorBuilder
Source§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