pub struct EmbeddedInstantiateEnv {
pub inputs: SparseSecondaryMap<LocationKey, Vec<(Ident, Type)>>,
pub singleton_inputs: SparseSecondaryMap<LocationKey, Vec<(Ident, Type)>>,
pub outputs: SparseSecondaryMap<LocationKey, Vec<(Ident, Type)>>,
pub network_outputs: SparseSecondaryMap<LocationKey, Vec<(String, bool, Option<Type>)>>,
pub network_inputs: SparseSecondaryMap<LocationKey, Vec<(String, bool, Option<Type>)>>,
pub membership_streams: SparseSecondaryMap<LocationKey, Vec<LocationKey>>,
}build only.Expand description
Collected embedded input/output registrations, keyed by location.
During compile_network, each HydroSource::Embedded and HydroRoot::EmbeddedOutput
IR node registers its ident, element type, and location key here.
generate_embedded then uses this to add the appropriate parameters
to each generated function.
Fields§
§inputs: SparseSecondaryMap<LocationKey, Vec<(Ident, Type)>>(ident name, element type) pairs per location key, for inputs.
singleton_inputs: SparseSecondaryMap<LocationKey, Vec<(Ident, Type)>>(ident name, element type) pairs per location key, for singleton inputs.
outputs: SparseSecondaryMap<LocationKey, Vec<(Ident, Type)>>(ident name, element type) pairs per location key, for outputs.
network_outputs: SparseSecondaryMap<LocationKey, Vec<(String, bool, Option<Type>)>>Network output port names per location key (sender side of channels).
Each entry is (port_name, is_tagged, external_type). is_tagged means the sink is keyed
by a TaglessMemberId. external_type distinguishes the two serialization modes:
None(bincode): the sink isFnMut(Bytes)(orFnMut((TaglessMemberId, Bytes))when tagged) — Hydro serializes toBytesbefore the sink.Some(payload)(embedded, seecrate::networking::Embedded): the sink receives the raw payload —FnMut(payload)(orFnMut((TaglessMemberId, payload))when tagged).
network_inputs: SparseSecondaryMap<LocationKey, Vec<(String, bool, Option<Type>)>>Network input port names per location key (receiver side of channels).
Each entry is (port_name, is_tagged, external_type). is_tagged means the source is keyed
by a TaglessMemberId. external_type distinguishes the two serialization modes:
None(bincode): the source isStream<Item = Result<BytesMut, Error>>(orResult<(TaglessMemberId, BytesMut), Error>when tagged) — the transportResultis unwrapped and theBytesMutdeserialized by Hydro.Some(payload)(embedded, seecrate::networking::Embedded): the source delivers the raw payload with no transportResult—Stream<Item = payload>(orStream<Item = (TaglessMemberId, payload)>when tagged); handling faults is left to the external code that produces the stream.
membership_streams: SparseSecondaryMap<LocationKey, Vec<LocationKey>>Cluster membership streams needed per location key. Maps location_key -> vec of cluster LocationKeys whose membership is needed.
Trait Implementations§
Source§impl Default for EmbeddedInstantiateEnv
impl Default for EmbeddedInstantiateEnv
Source§fn default() -> EmbeddedInstantiateEnv
fn default() -> EmbeddedInstantiateEnv
Auto Trait Implementations§
impl !Send for EmbeddedInstantiateEnv
impl !Sync for EmbeddedInstantiateEnv
impl Freeze for EmbeddedInstantiateEnv
impl RefUnwindSafe for EmbeddedInstantiateEnv
impl Unpin for EmbeddedInstantiateEnv
impl UnsafeUnpin for EmbeddedInstantiateEnv
impl UnwindSafe for EmbeddedInstantiateEnv
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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