#[non_exhaustive]pub struct ServiceInstanceInfo {
pub gear: String,
pub instance_id: String,
pub endpoint: Option<ServiceEndpoint>,
pub version: Option<String>,
pub rest_endpoint: Option<ServiceEndpoint>,
pub openapi_spec_hash: Option<String>,
pub grpc_services: Vec<(String, ServiceEndpoint)>,
pub labels: BTreeMap<String, String>,
pub state: InstanceState,
}Expand description
Information about a service instance
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.gear: StringGear name this instance belongs to
instance_id: StringUnique instance identifier
endpoint: Option<ServiceEndpoint>Primary endpoint for the instance
version: Option<String>Optional version string
rest_endpoint: Option<ServiceEndpoint>REST endpoint (HTTP base URL) for this instance, or None if the gear
exposes no REST API. This is the address the edge reverse-proxy actually
dials for REST routing.
openapi_spec_hash: Option<String>Stable content token for the published OpenAPI spec, if any.
Enumeration is deliberately spec-free: only this hash rides along, never
the full document (fetched out-of-band via
DirectoryClient::get_openapi_spec). The hash lets a consumer detect a
spec change without inlining N copies of the document.
grpc_services: Vec<(String, ServiceEndpoint)>Published gRPC services as (service name, endpoint) pairs.
Kept as an ordered list rather than a map so it round-trips a repeated
proto field without reordering; service names are unique per instance.
Carried back by list_instances so a subsequent register_instance
(which replaces the entry wholesale) can augment — rather than clobber —
the previously-registered gRPC services when adding a REST endpoint.
labels: BTreeMap<String, String>Stable addressing labels published by this instance (k8s matchLabels
style). Used by DirectoryClient::resolve_by_labels to select shards
or peers within a directory name.
state: InstanceStateLive serving state, so a resolve_by_labels caller can apply its own
health policy without a second call. Defaults to
InstanceState::Registered.
Implementations§
Source§impl ServiceInstanceInfo
impl ServiceInstanceInfo
Sourcepub fn new(
gear: impl Into<String>,
instance_id: impl Into<String>,
) -> ServiceInstanceInfo
pub fn new( gear: impl Into<String>, instance_id: impl Into<String>, ) -> ServiceInstanceInfo
Start a projection for gear / instance_id with no primary endpoint
and no optional metadata. Chain the with_* builders to populate it.
#[non_exhaustive] means callers must use this builder rather than a
struct literal, so future fields stay additive.
Sourcepub fn with_endpoint(
self,
endpoint: Option<ServiceEndpoint>,
) -> ServiceInstanceInfo
pub fn with_endpoint( self, endpoint: Option<ServiceEndpoint>, ) -> ServiceInstanceInfo
Set the primary endpoint (None for an instance with no primary
endpoint).
Sourcepub fn with_version(self, version: Option<String>) -> ServiceInstanceInfo
pub fn with_version(self, version: Option<String>) -> ServiceInstanceInfo
Set the optional version string.
Sourcepub fn with_rest_endpoint(
self,
rest_endpoint: Option<ServiceEndpoint>,
) -> ServiceInstanceInfo
pub fn with_rest_endpoint( self, rest_endpoint: Option<ServiceEndpoint>, ) -> ServiceInstanceInfo
Set the optional REST endpoint.
Sourcepub fn with_openapi_spec_hash(
self,
openapi_spec_hash: Option<String>,
) -> ServiceInstanceInfo
pub fn with_openapi_spec_hash( self, openapi_spec_hash: Option<String>, ) -> ServiceInstanceInfo
Set the optional OpenAPI spec content token.
Sourcepub fn with_grpc_services(
self,
grpc_services: Vec<(String, ServiceEndpoint)>,
) -> ServiceInstanceInfo
pub fn with_grpc_services( self, grpc_services: Vec<(String, ServiceEndpoint)>, ) -> ServiceInstanceInfo
Set the published gRPC services.
Sourcepub fn with_labels(
self,
labels: BTreeMap<String, String>,
) -> ServiceInstanceInfo
pub fn with_labels( self, labels: BTreeMap<String, String>, ) -> ServiceInstanceInfo
Set the stable addressing labels.
Sourcepub fn with_state(self, state: InstanceState) -> ServiceInstanceInfo
pub fn with_state(self, state: InstanceState) -> ServiceInstanceInfo
Set the live serving state.
Sourcepub fn without_labels(self) -> ServiceInstanceInfo
pub fn without_labels(self) -> ServiceInstanceInfo
Drop the stable addressing labels, returning self.
The shared transform every DirectoryClient::list_all_instances
implementation applies so the cross-gear snapshot omits labels
identically across transports — see that method’s doc for why.
Trait Implementations§
Source§impl Clone for ServiceInstanceInfo
impl Clone for ServiceInstanceInfo
Source§fn clone(&self) -> ServiceInstanceInfo
fn clone(&self) -> ServiceInstanceInfo
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 ServiceInstanceInfo
impl Debug for ServiceInstanceInfo
Source§impl Default for ServiceInstanceInfo
impl Default for ServiceInstanceInfo
Source§fn default() -> ServiceInstanceInfo
fn default() -> ServiceInstanceInfo
Auto Trait Implementations§
impl Freeze for ServiceInstanceInfo
impl RefUnwindSafe for ServiceInstanceInfo
impl Send for ServiceInstanceInfo
impl Sync for ServiceInstanceInfo
impl Unpin for ServiceInstanceInfo
impl UnsafeUnpin for ServiceInstanceInfo
impl UnwindSafe for ServiceInstanceInfo
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,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> 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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ServiceExt for T
impl<T> ServiceExt for T
Source§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
Source§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
Source§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
Source§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
Source§fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
Source§fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
Source§fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
x-request-id as the header name. Read moreSource§fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
Source§fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
x-request-id as the header name. Read moreSource§fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
500 Internal Server responses. Read moreSource§fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
413 Payload Too Large responses. Read moreSource§impl<T> WithSecurityContext for T
impl<T> WithSecurityContext for T
Source§fn security_ctx<'a>(&'a self, ctx: &'a SecurityContext) -> Secured<'a, T>where
T: Sized,
fn security_ctx<'a>(&'a self, ctx: &'a SecurityContext) -> Secured<'a, T>where
T: Sized,
Secured wrapper. Read more