Struct tor_rtcompat::CompoundRuntime
source · [−]pub struct CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> { /* private fields */ }
Expand description
A runtime made of several parts, each of which implements one trait-group.
The SpawnR
component should implements Spawn
and BlockOn
;
the SleepR
component should implement SleepProvider
; the TcpR
component should implement TcpProvider
; and the TlsR
component should
implement TlsProvider
.
You can use this structure to create new runtimes in two ways: either by overriding a single part of an existing runtime, or by building an entirely new runtime from pieces.
Implementations
sourceimpl<SpawnR, SleepR, TcpR, TlsR, UdpR> CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR>
impl<SpawnR, SleepR, TcpR, TlsR, UdpR> CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR>
Trait Implementations
sourceimpl<SpawnR, SleepR, TcpR, TlsR, UdpR> BlockOn for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
SpawnR: BlockOn,
SleepR: Clone + Send + Sync + 'static,
TcpR: Clone + Send + Sync + 'static,
TlsR: Clone + Send + Sync + 'static,
UdpR: Clone + Send + Sync + 'static,
impl<SpawnR, SleepR, TcpR, TlsR, UdpR> BlockOn for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
SpawnR: BlockOn,
SleepR: Clone + Send + Sync + 'static,
TcpR: Clone + Send + Sync + 'static,
TlsR: Clone + Send + Sync + 'static,
UdpR: Clone + Send + Sync + 'static,
sourceimpl<SpawnR, SleepR, TcpR, TlsR, UdpR> Clone for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR>
impl<SpawnR, SleepR, TcpR, TlsR, UdpR> Clone for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR>
sourceimpl<SpawnR, SleepR, TcpR, TlsR, UdpR> Debug for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR>
impl<SpawnR, SleepR, TcpR, TlsR, UdpR> Debug for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR>
sourceimpl<SpawnR, SleepR, TcpR, TlsR, UdpR> SleepProvider for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
SleepR: SleepProvider,
SpawnR: Clone + Send + Sync + 'static,
TcpR: Clone + Send + Sync + 'static,
TlsR: Clone + Send + Sync + 'static,
UdpR: Clone + Send + Sync + 'static,
impl<SpawnR, SleepR, TcpR, TlsR, UdpR> SleepProvider for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
SleepR: SleepProvider,
SpawnR: Clone + Send + Sync + 'static,
TcpR: Clone + Send + Sync + 'static,
TlsR: Clone + Send + Sync + 'static,
UdpR: Clone + Send + Sync + 'static,
type SleepFuture = <SleepR as SleepProvider>::SleepFuture
type SleepFuture = <SleepR as SleepProvider>::SleepFuture
A future returned by SleepProvider::sleep()
sourcefn sleep(&self, duration: Duration) -> Self::SleepFuture
fn sleep(&self, duration: Duration) -> Self::SleepFuture
Return a future that will be ready after duration
has
elapsed. Read more
sourcefn wallclock(&self) -> SystemTime
fn wallclock(&self) -> SystemTime
Return the SleepProvider’s view of the current wall-clock time. Read more
sourcefn block_advance<T: Into<String>>(&self, _reason: T)
fn block_advance<T: Into<String>>(&self, _reason: T)
Signify that a test running under mock time shouldn’t advance time yet, with a given unique reason string. This is useful for making sure (mock) time doesn’t advance while things that might require some (real-world) time to complete do so, such as spawning a task on another thread. Read more
sourcefn release_advance<T: Into<String>>(&self, _reason: T)
fn release_advance<T: Into<String>>(&self, _reason: T)
Signify that the reason to withhold time advancing provided in a call to block_advance
no
longer exists, and it’s fine to move time forward if nothing else is blocking advances. Read more
sourcefn allow_one_advance(&self, _dur: Duration)
fn allow_one_advance(&self, _dur: Duration)
Allow a test running under mock time to advance time by the provided duration, even if the
above block_advance
API has been used. Read more
sourceimpl<SpawnR, SleepR, TcpR, TlsR, UdpR> Spawn for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
SpawnR: Spawn,
impl<SpawnR, SleepR, TcpR, TlsR, UdpR> Spawn for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
SpawnR: Spawn,
sourceimpl<SpawnR, SleepR, TcpR, TlsR, UdpR> TcpProvider for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
TcpR: TcpProvider,
SpawnR: Send + Sync + 'static,
SleepR: Send + Sync + 'static,
TcpR: Send + Sync + 'static,
TlsR: Send + Sync + 'static,
UdpR: Send + Sync + 'static,
impl<SpawnR, SleepR, TcpR, TlsR, UdpR> TcpProvider for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
TcpR: TcpProvider,
SpawnR: Send + Sync + 'static,
SleepR: Send + Sync + 'static,
TcpR: Send + Sync + 'static,
TlsR: Send + Sync + 'static,
UdpR: Send + Sync + 'static,
type TcpStream = <TcpR as TcpProvider>::TcpStream
type TcpStream = <TcpR as TcpProvider>::TcpStream
The type for the TCP connections returned by Self::connect()
.
type TcpListener = <TcpR as TcpProvider>::TcpListener
type TcpListener = <TcpR as TcpProvider>::TcpListener
The type for the TCP listeners returned by Self::listen()
.
sourcefn connect<'life0, 'life1, 'async_trait>(
&'life0 self,
addr: &'life1 SocketAddr
) -> Pin<Box<dyn Future<Output = IoResult<Self::TcpStream>> + Send + 'async_trait>> where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn connect<'life0, 'life1, 'async_trait>(
&'life0 self,
addr: &'life1 SocketAddr
) -> Pin<Box<dyn Future<Output = IoResult<Self::TcpStream>> + Send + 'async_trait>> where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Launch a TCP connection to a given socket address. Read more
sourcefn listen<'life0, 'life1, 'async_trait>(
&'life0 self,
addr: &'life1 SocketAddr
) -> Pin<Box<dyn Future<Output = IoResult<Self::TcpListener>> + Send + 'async_trait>> where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn listen<'life0, 'life1, 'async_trait>(
&'life0 self,
addr: &'life1 SocketAddr
) -> Pin<Box<dyn Future<Output = IoResult<Self::TcpListener>> + Send + 'async_trait>> where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Open a TCP listener on a given socket address.
sourceimpl<SpawnR, SleepR, TcpR, TlsR, UdpR, S> TlsProvider<S> for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
TcpR: TcpProvider,
TlsR: TlsProvider<S>,
SleepR: Clone + Send + Sync + 'static,
SpawnR: Clone + Send + Sync + 'static,
UdpR: Clone + Send + Sync + 'static,
impl<SpawnR, SleepR, TcpR, TlsR, UdpR, S> TlsProvider<S> for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
TcpR: TcpProvider,
TlsR: TlsProvider<S>,
SleepR: Clone + Send + Sync + 'static,
SpawnR: Clone + Send + Sync + 'static,
UdpR: Clone + Send + Sync + 'static,
type Connector = <TlsR as TlsProvider<S>>::Connector
type Connector = <TlsR as TlsProvider<S>>::Connector
The Connector object that this provider can return.
type TlsStream = <TlsR as TlsProvider<S>>::TlsStream
type TlsStream = <TlsR as TlsProvider<S>>::TlsStream
The type of the stream returned by that connector.
sourcefn tls_connector(&self) -> Self::Connector
fn tls_connector(&self) -> Self::Connector
Return a TLS connector for use with this runtime.
sourceimpl<SpawnR, SleepR, TcpR, TlsR, UdpR> UdpProvider for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
UdpR: UdpProvider,
SpawnR: Send + Sync + 'static,
SleepR: Send + Sync + 'static,
TcpR: Send + Sync + 'static,
TlsR: Send + Sync + 'static,
UdpR: Send + Sync + 'static,
impl<SpawnR, SleepR, TcpR, TlsR, UdpR> UdpProvider for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
UdpR: UdpProvider,
SpawnR: Send + Sync + 'static,
SleepR: Send + Sync + 'static,
TcpR: Send + Sync + 'static,
TlsR: Send + Sync + 'static,
UdpR: Send + Sync + 'static,
type UdpSocket = <UdpR as UdpProvider>::UdpSocket
type UdpSocket = <UdpR as UdpProvider>::UdpSocket
The type of Udp Socket returned by Self::bind()
Auto Trait Implementations
impl<SpawnR, SleepR, TcpR, TlsR, UdpR> RefUnwindSafe for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
SleepR: RefUnwindSafe,
SpawnR: RefUnwindSafe,
TcpR: RefUnwindSafe,
TlsR: RefUnwindSafe,
UdpR: RefUnwindSafe,
impl<SpawnR, SleepR, TcpR, TlsR, UdpR> Send for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
SleepR: Send + Sync,
SpawnR: Send + Sync,
TcpR: Send + Sync,
TlsR: Send + Sync,
UdpR: Send + Sync,
impl<SpawnR, SleepR, TcpR, TlsR, UdpR> Sync for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
SleepR: Send + Sync,
SpawnR: Send + Sync,
TcpR: Send + Sync,
TlsR: Send + Sync,
UdpR: Send + Sync,
impl<SpawnR, SleepR, TcpR, TlsR, UdpR> Unpin for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR>
impl<SpawnR, SleepR, TcpR, TlsR, UdpR> UnwindSafe for CompoundRuntime<SpawnR, SleepR, TcpR, TlsR, UdpR> where
SleepR: RefUnwindSafe,
SpawnR: RefUnwindSafe,
TcpR: RefUnwindSafe,
TlsR: RefUnwindSafe,
UdpR: RefUnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Sp> SpawnExt for Sp where
Sp: Spawn + ?Sized,
impl<Sp> SpawnExt for Sp where
Sp: Spawn + ?Sized,
sourcefn spawn<Fut>(&self, future: Fut) -> Result<(), SpawnError> where
Fut: 'static + Future<Output = ()> + Send,
fn spawn<Fut>(&self, future: Fut) -> Result<(), SpawnError> where
Fut: 'static + Future<Output = ()> + Send,
Spawns a task that polls the given future with output ()
to
completion. Read more
sourcefn spawn_with_handle<Fut>(
&self,
future: Fut
) -> Result<RemoteHandle<<Fut as Future>::Output>, SpawnError> where
Fut: 'static + Future + Send,
<Fut as Future>::Output: Send,
fn spawn_with_handle<Fut>(
&self,
future: Fut
) -> Result<RemoteHandle<<Fut as Future>::Output>, SpawnError> where
Fut: 'static + Future + Send,
<Fut as Future>::Output: Send,
Spawns a task that polls the given future to completion and returns a future that resolves to the spawned future’s output. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more