pub struct Client {
pub endpoint: Endpoint,
pub instance_source: Arc<Receiver<Vec<Instance>>>,
/* private fields */
}Fields§
§endpoint: Endpoint§instance_source: Arc<Receiver<Vec<Instance>>>Implementations§
Source§impl Client
impl Client
pub fn instance_ids(&self) -> Vec<u64>
Sourcepub fn is_instance_discovered(&self, instance_id: u64) -> bool
pub fn is_instance_discovered(&self, instance_id: u64) -> bool
Whether the latest discovery snapshot contains this instance, including inhibited workers.
pub fn instance_ids_avail(&self) -> Vec<u64>
Sourcepub fn instance_ids_free(&self) -> Vec<u64>
pub fn instance_ids_free(&self) -> Vec<u64>
Routable instance ids excluding those currently flagged overloaded — the set used for load-aware (random / round-robin) worker selection.
pub fn routing_instance_counts(&self) -> RoutingInstanceCounts
Sourcepub fn instance_avail_watcher(&self) -> Receiver<Vec<u64>>
pub fn instance_avail_watcher(&self) -> Receiver<Vec<u64>>
Get a watcher for available instance IDs
Sourcepub fn with_admitted_instances(&self, admitted_ids: Receiver<Vec<u64>>) -> Self
pub fn with_admitted_instances(&self, admitted_ids: Receiver<Vec<u64>>) -> Self
Create a client view whose routable instances are restricted by a caller-owned admission set.
Endpoint discovery remains the source of connection metadata and hard availability. The
returned client publishes only the intersection of that endpoint membership and
admitted_ids, allowing a higher-level controller to keep discovered-but-unvalidated
instances out of a routing group. The view has independent overload and fault-inhibition
state, just like a freshly constructed client.
Sourcepub fn with_admitted_instances_and_cancellation(
&self,
admitted_ids: Receiver<Vec<u64>>,
cancel_token: CancellationToken,
) -> Self
pub fn with_admitted_instances_and_cancellation( &self, admitted_ids: Receiver<Vec<u64>>, cancel_token: CancellationToken, ) -> Self
Like Self::with_admitted_instances, with a lifecycle token for construction-time
cancellation by an owning controller.
Sourcepub async fn wait_for_instances(&self) -> Result<Vec<Instance>>
pub async fn wait_for_instances(&self) -> Result<Vec<Instance>>
Wait for at least one Instance to be available for this Endpoint
Sourcepub fn report_instance_down(&self, instance_id: u64)
pub fn report_instance_down(&self, instance_id: u64)
Mark an instance as down/unavailable
Sourcepub fn set_overloaded_instances(&self, overloaded_instance_ids: &[u64]) -> bool
pub fn set_overloaded_instances(&self, overloaded_instance_ids: &[u64]) -> bool
Replace the set of overloaded instances reported by the worker monitor. Returns true when this changes the routing snapshot.
Sourcepub fn overload_reconciliation_needed(&self) -> bool
pub fn overload_reconciliation_needed(&self) -> bool
Whether request-path backpressure changed overload state after the monitor’s most recent metric publication.
Sourcepub fn mark_overloaded_immediate(&self, instance_id: u64)
pub fn mark_overloaded_immediate(&self, instance_id: u64)
Mark an instance overloaded immediately after a worker-scoped
WorkerOverloaded response. This is backpressure, not a fault, so it
does not call report_instance_down. The next worker-monitor
reconciliation replaces this short-lived global routing hint.
pub fn clear_overloaded_instances_for_removed( &self, removed_instance_ids: &[u64], )
pub fn overloaded_instance_ids(&self) -> Option<HashSet<u64>>
Sourcepub fn available_instance_ids(&self) -> Option<Arc<HashSet<u64>>>
pub fn available_instance_ids(&self) -> Option<Arc<HashSet<u64>>>
Workers currently eligible for selection: discovered and not locally
inhibited by Self::report_instance_down.
This hard-availability snapshot is separate from transient overload.
None means this client has not discovered an instance yet. After the
first discovery, Some is authoritative, including Some(empty) when
the last previously discovered worker is removed.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Client
impl !UnwindSafe for Client
impl Freeze for Client
impl Send for Client
impl Sync for Client
impl Unpin for Client
impl UnsafeUnpin for Client
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> Data for T
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);