Struct tor_rtcompat::PreferredRuntime
source · [−]pub struct PreferredRuntime { /* private fields */ }
Expand description
The runtime that we prefer to use, out of all the runtimes compiled into the tor-rtcompat crate.
If tokio
and async-std
are both available, we prefer tokio
for its
performance.
If native_tls
and rustls
are both available, we prefer native_tls
since
it has been used in Arti for longer.
Implementations
sourceimpl PreferredRuntime
impl PreferredRuntime
sourcepub fn current() -> Result<Self>
pub fn current() -> Result<Self>
Obtain a PreferredRuntime
from the currently running asynchronous runtime.
Generally, this is what you want.
This tries to get a handle to a currently running asynchronous runtime, and
wraps it; the returned PreferredRuntime
isn’t the same thing as the
asynchronous runtime object itself (e.g. tokio::runtime::Runtime
).
Panics
When tor-rtcompat
is compiled with the tokio
feature enabled
(regardless of whether the async-std
feature is also enabled),
panics if called outside of Tokio runtime context.
See tokio::runtime::Handle::current
.
Usage notes
Once you have a runtime returned by this function, you should
just create more handles to it via Clone
.
Limitations
If the tor-rtcompat
crate was compiled with tokio
support,
this function will never return a runtime based on async_std
.
sourcepub fn create() -> Result<Self>
pub fn create() -> Result<Self>
Create and return a new instance of the default Runtime
.
Generally you should call this function at most once, and then use
Clone::clone()
to create additional references to that runtime.
Tokio users may want to avoid this function and instead obtain a runtime using
PreferredRuntime::current
: this function always builds a runtime,
and if you already have a runtime, that isn’t what you want with Tokio.
If you need more fine-grained control over a runtime, you can create it using an appropriate builder type or function.
Trait Implementations
sourceimpl BlockOn for PreferredRuntime
impl BlockOn for PreferredRuntime
sourceimpl Clone for PreferredRuntime
impl Clone for PreferredRuntime
sourcefn clone(&self) -> PreferredRuntime
fn clone(&self) -> PreferredRuntime
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for PreferredRuntime
impl Debug for PreferredRuntime
sourceimpl SleepProvider for PreferredRuntime
impl SleepProvider for PreferredRuntime
type SleepFuture = <TokioNativeTlsRuntime as SleepProvider>::SleepFuture
type SleepFuture = <TokioNativeTlsRuntime 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 Spawn for PreferredRuntime
impl Spawn for PreferredRuntime
sourceimpl TcpProvider for PreferredRuntime
impl TcpProvider for PreferredRuntime
type TcpStream = <TokioNativeTlsRuntime as TcpProvider>::TcpStream
type TcpStream = <TokioNativeTlsRuntime as TcpProvider>::TcpStream
The type for the TCP connections returned by Self::connect()
.
type TcpListener = <TokioNativeTlsRuntime as TcpProvider>::TcpListener
type TcpListener = <TokioNativeTlsRuntime 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 = Result<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 = Result<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 = Result<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 = Result<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<S> TlsProvider<S> for PreferredRuntime where
S: AsyncRead + AsyncWrite + Unpin + Send + 'static,
impl<S> TlsProvider<S> for PreferredRuntime where
S: AsyncRead + AsyncWrite + Unpin + Send + 'static,
type Connector = <TokioNativeTlsRuntime as TlsProvider<S>>::Connector
type Connector = <TokioNativeTlsRuntime as TlsProvider<S>>::Connector
The Connector object that this provider can return.
type TlsStream = <TokioNativeTlsRuntime as TlsProvider<S>>::TlsStream
type TlsStream = <TokioNativeTlsRuntime 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 UdpProvider for PreferredRuntime
impl UdpProvider for PreferredRuntime
type UdpSocket = <TokioNativeTlsRuntime as UdpProvider>::UdpSocket
type UdpSocket = <TokioNativeTlsRuntime as UdpProvider>::UdpSocket
The type of Udp Socket returned by Self::bind()
Auto Trait Implementations
impl !RefUnwindSafe for PreferredRuntime
impl Send for PreferredRuntime
impl Sync for PreferredRuntime
impl Unpin for PreferredRuntime
impl !UnwindSafe for PreferredRuntime
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