pub struct DirectoryGrpcClient { /* private fields */ }Expand description
gRPC client for Directory API
This client connects to a remote DirectoryService via gRPC and provides
typed access to service discovery functionality. It includes:
- Configurable timeouts and retries via transport stack
- Automatic proto ↔ domain type conversions
- Distributed tracing and metrics
Implementations§
Source§impl DirectoryGrpcClient
impl DirectoryGrpcClient
Sourcepub async fn connect(
uri: impl Into<String>,
) -> Result<DirectoryGrpcClient, Error>
pub async fn connect( uri: impl Into<String>, ) -> Result<DirectoryGrpcClient, Error>
Connect to a directory service using default configuration with retries.
Uses exponential backoff retry logic for reliable connection establishment.
This is the recommended method for OoP modules connecting to the master host.
§Errors
It will return an error when it fails
Sourcepub async fn connect_with_retry(
uri: impl Into<String>,
cfg: &GrpcClientConfig,
) -> Result<DirectoryGrpcClient, Error>
pub async fn connect_with_retry( uri: impl Into<String>, cfg: &GrpcClientConfig, ) -> Result<DirectoryGrpcClient, Error>
Connect to a directory service with custom configuration and retry logic.
Uses exponential backoff based on cfg.max_retries, cfg.base_backoff,
and cfg.max_backoff settings.
§Errors
It will return an error when it fails
Sourcepub async fn connect_no_retry(
uri: impl Into<String>,
cfg: &GrpcClientConfig,
) -> Result<DirectoryGrpcClient, Error>
pub async fn connect_no_retry( uri: impl Into<String>, cfg: &GrpcClientConfig, ) -> Result<DirectoryGrpcClient, Error>
Connect to a directory service without retry logic.
This method attempts a single connection. Use connect or connect_with_retry
for production scenarios where the directory service may not be immediately available.
§Errors
It will return an error when it fails
Sourcepub fn from_channel(channel: Channel) -> DirectoryGrpcClient
pub fn from_channel(channel: Channel) -> DirectoryGrpcClient
Create from an existing channel (useful for testing or custom setup)
Trait Implementations§
Source§impl DirectoryClient for DirectoryGrpcClient
impl DirectoryClient for DirectoryGrpcClient
Source§fn resolve_grpc_service<'life0, 'life1, 'async_trait>(
&'life0 self,
service_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ServiceEndpoint, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
DirectoryGrpcClient: 'async_trait,
fn resolve_grpc_service<'life0, 'life1, 'async_trait>(
&'life0 self,
service_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ServiceEndpoint, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
DirectoryGrpcClient: 'async_trait,
Source§fn list_instances<'life0, 'life1, 'async_trait>(
&'life0 self,
module: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<ServiceInstanceInfo>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
DirectoryGrpcClient: 'async_trait,
fn list_instances<'life0, 'life1, 'async_trait>(
&'life0 self,
module: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<ServiceInstanceInfo>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
DirectoryGrpcClient: 'async_trait,
Source§fn register_instance<'life0, 'async_trait>(
&'life0 self,
info: RegisterInstanceInfo,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
DirectoryGrpcClient: 'async_trait,
fn register_instance<'life0, 'async_trait>(
&'life0 self,
info: RegisterInstanceInfo,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
DirectoryGrpcClient: 'async_trait,
Source§fn deregister_instance<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
module: &'life1 str,
instance_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
DirectoryGrpcClient: 'async_trait,
fn deregister_instance<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
module: &'life1 str,
instance_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
DirectoryGrpcClient: 'async_trait,
Source§fn send_heartbeat<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
module: &'life1 str,
instance_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
DirectoryGrpcClient: 'async_trait,
fn send_heartbeat<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
module: &'life1 str,
instance_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
DirectoryGrpcClient: 'async_trait,
Auto Trait Implementations§
impl !Freeze for DirectoryGrpcClient
impl !RefUnwindSafe for DirectoryGrpcClient
impl Send for DirectoryGrpcClient
impl Sync for DirectoryGrpcClient
impl Unpin for DirectoryGrpcClient
impl UnsafeUnpin for DirectoryGrpcClient
impl !UnwindSafe for DirectoryGrpcClient
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> 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> 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>
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> WithSecurityContext for T
impl<T> WithSecurityContext for T
Source§fn security_ctx<'a>(&'a self, ctx: &'a SecurityContext) -> Secured<'a, T>
fn security_ctx<'a>(&'a self, ctx: &'a SecurityContext) -> Secured<'a, T>
Secured wrapper. Read more