Skip to main content

NetworkingConfig

Struct NetworkingConfig 

Source
pub struct NetworkingConfig<Tr: ?Sized, S: ?Sized, Name = ()> { /* private fields */ }
Expand description

A network channel configuration with T as transport backend and S as the serialization backend.

Implementations§

Source§

impl<Tr: ?Sized, S: ?Sized> NetworkingConfig<Tr, S>

Source

pub fn name(self, name: impl Into<String>) -> NetworkingConfig<Tr, S, String>

Names the network channel and enables stable communication across multiple service versions.

Source§

impl<Tr: ?Sized, N> NetworkingConfig<Tr, NoSer, N>

Source

pub const fn bincode(self) -> NetworkingConfig<Tr, Bincode, N>

Configures the network channel to use bincode to serialize items.

Source§

impl<S: ?Sized> NetworkingConfig<Tcp<()>, S>

Source

pub const fn fail_stop(self) -> NetworkingConfig<Tcp<FailStop>, S>

Configures the TCP transport to stop sending messages after a failed connection.

Note that the Hydro simulator will not simulate connection failures that impact the liveness of a program. If an output assertion depends on a fail_stop channel making progress, that channel will not experience a failure that would cause the test to block indefinitely. However, any safety issues caused by connection failures will still be caught, such as a race condition between a failed connection and some other message.

Source

pub const fn lossy(self, nondet: NonDet) -> NetworkingConfig<Tcp<Lossy>, S>

Configures the TCP transport to allow messages to be lost.

This is appropriate for networks where messages may be dropped, such as when running under a Maelstrom partition nemesis. Unlike fail_stop, which guarantees a prefix of messages is delivered, lossy makes no such guarantee.

§Non-Determinism

A lossy TCP channel will non-deterministically drop messages during execution.

Source

pub const fn lossy_delayed_forever( self, ) -> NetworkingConfig<Tcp<LossyDelayedForever>, S>

Configures the TCP transport to treat dropped messages as indefinitely delayed.

This is appropriate for networks where messages may be dropped, such as when running under a Maelstrom partition nemesis. Unlike Self::lossy, this does not require a NonDet annotation because the output is always lower in the partial order than the ideal stream. However, the output stream will have NoOrder guarantees, imposing stricter conditions on downstream consumers.

Unlike Self::lossy, this mode can easily be simulated in exhaustive mode without running into fairness issues.

When using this mode in the Hydro simulator, you must call .test_safety_only() to opt in, because the simulator models dropped messages as indefinitely delayed, which only tests safety properties (not liveness).

Trait Implementations§

Source§

impl<Tr, S, T: ?Sized> NetworkFor<T> for NetworkingConfig<Tr, S>
where Tr: TransportKind + ?Sized, S: SerKind<T> + ?Sized,

Source§

type OrderingGuarantee = <Tr as TransportKind>::OrderingGuarantee

The ordering guarantee provided by this network configuration. When combined with an input stream’s ordering O, the output ordering will be <O as MinOrder<Self::OrderingGuarantee>>::Min.
Source§

fn serialize_thunk(is_demux: bool) -> Expr

Generates serialization logic for sending T.
Source§

fn deserialize_thunk(tagged: Option<&Type>) -> Expr

Generates deserialization logic for receiving T.
Source§

fn name(&self) -> Option<&str>

Returns the optional name of the network channel.
Source§

fn networking_info() -> NetworkingInfo

Returns the NetworkingInfo describing this network channel’s transport and fault model.
Source§

impl<Tr, S, T: ?Sized> NetworkFor<T> for NetworkingConfig<Tr, S, String>
where Tr: TransportKind + ?Sized, S: SerKind<T> + ?Sized,

Source§

type OrderingGuarantee = <Tr as TransportKind>::OrderingGuarantee

The ordering guarantee provided by this network configuration. When combined with an input stream’s ordering O, the output ordering will be <O as MinOrder<Self::OrderingGuarantee>>::Min.
Source§

fn serialize_thunk(is_demux: bool) -> Expr

Generates serialization logic for sending T.
Source§

fn deserialize_thunk(tagged: Option<&Type>) -> Expr

Generates deserialization logic for receiving T.
Source§

fn name(&self) -> Option<&str>

Returns the optional name of the network channel.
Source§

fn networking_info() -> NetworkingInfo

Returns the NetworkingInfo describing this network channel’s transport and fault model.

Auto Trait Implementations§

§

impl<Tr, S, Name> Freeze for NetworkingConfig<Tr, S, Name>
where Name: Freeze, Tr: ?Sized, S: ?Sized,

§

impl<Tr, S, Name> RefUnwindSafe for NetworkingConfig<Tr, S, Name>

§

impl<Tr, S, Name> Send for NetworkingConfig<Tr, S, Name>
where Name: Send, Tr: Send + ?Sized, S: Send + ?Sized,

§

impl<Tr, S, Name> Sync for NetworkingConfig<Tr, S, Name>
where Name: Sync, Tr: Sync + ?Sized, S: Sync + ?Sized,

§

impl<Tr, S, Name> Unpin for NetworkingConfig<Tr, S, Name>
where Name: Unpin, Tr: Unpin + ?Sized, S: Unpin + ?Sized,

§

impl<Tr, S, Name> UnsafeUnpin for NetworkingConfig<Tr, S, Name>
where Name: UnsafeUnpin, Tr: ?Sized, S: ?Sized,

§

impl<Tr, S, Name> UnwindSafe for NetworkingConfig<Tr, S, Name>
where Name: UnwindSafe, Tr: UnwindSafe + ?Sized, S: UnwindSafe + ?Sized,

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.

§

impl<T> Instrument for T

§

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

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

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
§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToSinkBuild for T

Source§

fn iter_to_sink_build(self) -> SendIterBuild<Self>
where Self: Sized + Iterator,

Starts a SinkBuild adaptor chain to send all items from self as an Iterator.
Source§

fn stream_to_sink_build(self) -> SendStreamBuild<Self>
where Self: Sized + Stream,

Starts a SinkBuild adaptor chain to send all items from self as a [Stream].
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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