pub enum MeshLookup {
Url,
Host,
Port,
UrlNamed {
name: String,
},
PortNamed {
name: String,
},
}Expand description
Which aspect of a mesh peer’s address to inject.
§Which port, when the peer has several (R844-B22)
Self::Url and Self::Port used to mean “the first entry in the
peer’s expose.mesh.ports”. That was a positional guess — the same one
kamaji::name_anonymous_ports refuses to make and that R844-F15 removed
from the service-record fanout — and it could hand a dependent workload a
metrics listener’s number in its environment while looking entirely
successful. It survived only because, before R844-F17, a manifest had no way
to name a port, so “first” was the only selector that existed.
They now resolve by the same rule everything else in this workspace uses:
one port resolves to that port; several resolve to the one named http;
several with no http is an error, not a pick. The error is the feature
— it sends the author back to the manifest to say which listener they meant,
instead of handing a dependent a plausible wrong number.
Self::UrlNamed / Self::PortNamed say it outright and are the
spelling to prefer for any peer with more than one listener.
The named variants are appended rather than added as fields on the
existing ones: MeshLookup rides EnvValue::FromMesh inside a
WorkloadSpec across the postcard kamaji UDS, where an enum is encoded by
variant index, so appending leaves every existing encoding byte-identical
while adding a field to Url would not.
Variants§
Url
Full URL, e.g. "http://noisetable-db.pdx:5432". See the type docs for
which port this picks when the peer has several.
Host
Hostname only, e.g. "noisetable-db.pdx".
Port
Port only, e.g. "5432". See the type docs for which port this picks
when the peer has several.
UrlNamed
Full URL at the peer’s port called name, e.g. "http://api.pdx:8443"
for name = "wss". Errors when the peer has no port by that name.
PortNamed
The peer’s port called name, stringified. Errors when the peer has no
port by that name.
Implementations§
Source§impl MeshLookup
impl MeshLookup
Sourcepub fn port_name(&self) -> Option<&str>
pub fn port_name(&self) -> Option<&str>
The port name this lookup selects, or None when it takes the default
(see the type docs) or needs no port at all.
Sourcepub fn needs_port(&self) -> bool
pub fn needs_port(&self) -> bool
Whether this lookup needs a port at all — Host is the one that does
not, and it must keep resolving for a portless peer.
Trait Implementations§
Source§impl Clone for MeshLookup
impl Clone for MeshLookup
Source§fn clone(&self) -> MeshLookup
fn clone(&self) -> MeshLookup
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MeshLookup
impl Debug for MeshLookup
Source§impl<'de> Deserialize<'de> for MeshLookup
impl<'de> Deserialize<'de> for MeshLookup
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for MeshLookup
Source§impl PartialEq for MeshLookup
impl PartialEq for MeshLookup
Source§impl Serialize for MeshLookup
impl Serialize for MeshLookup
impl StructuralPartialEq for MeshLookup
Source§impl TS for MeshLookup
impl TS for MeshLookup
Source§type WithoutGenerics = MeshLookup
type WithoutGenerics = MeshLookup
WithoutGenerics should just be Self.
If the type does have generic parameters, then all generic parameters must be replaced with
a dummy type, e.g ts_rs::Dummy or (). The only requirement for these dummy types is that
EXPORT_TO must be None. Read moreSource§type OptionInnerType = MeshLookup
type OptionInnerType = MeshLookup
std::option::Option<T>, then this associated type is set to T.
All other implementations of TS should set this type to Self instead.Source§fn docs() -> Option<String>
fn docs() -> Option<String>
TS is derived, docs are
automatically read from your doc comments or #[doc = ".."] attributesSource§fn decl_concrete(cfg: &Config) -> String
fn decl_concrete(cfg: &Config) -> String
TS::decl().
If this type is not generic, then this function is equivalent to TS::decl().Source§fn decl(cfg: &Config) -> String
fn decl(cfg: &Config) -> String
type User = { user_id: number, ... }.
This function will panic if the type has no declaration. Read moreSource§fn inline(cfg: &Config) -> String
fn inline(cfg: &Config) -> String
{ user_id: number }.
This function will panic if the type cannot be inlined.Source§fn inline_flattened(cfg: &Config) -> String
fn inline_flattened(cfg: &Config) -> String
Source§fn visit_generics(v: &mut impl TypeVisitor)where
Self: 'static,
fn visit_generics(v: &mut impl TypeVisitor)where
Self: 'static,
Source§fn output_path() -> Option<PathBuf>
fn output_path() -> Option<PathBuf>
T should be exported, relative to the output directory.
The returned path does not include any base directory. Read moreSource§fn visit_dependencies(v: &mut impl TypeVisitor)where
Self: 'static,
fn visit_dependencies(v: &mut impl TypeVisitor)where
Self: 'static,
Source§fn dependencies(cfg: &Config) -> Vec<Dependency>where
Self: 'static,
fn dependencies(cfg: &Config) -> Vec<Dependency>where
Self: 'static,
Source§fn export(cfg: &Config) -> Result<(), ExportError>where
Self: 'static,
fn export(cfg: &Config) -> Result<(), ExportError>where
Self: 'static,
TS::export_all. Read moreSource§fn export_all(cfg: &Config) -> Result<(), ExportError>where
Self: 'static,
fn export_all(cfg: &Config) -> Result<(), ExportError>where
Self: 'static,
TS::export. Read moreSource§fn export_to_string(cfg: &Config) -> Result<String, ExportError>where
Self: 'static,
fn export_to_string(cfg: &Config) -> Result<String, ExportError>where
Self: 'static,
Auto Trait Implementations§
impl Freeze for MeshLookup
impl RefUnwindSafe for MeshLookup
impl Send for MeshLookup
impl Sync for MeshLookup
impl Unpin for MeshLookup
impl UnsafeUnpin for MeshLookup
impl UnwindSafe for MeshLookup
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> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.