pub struct ClientBuilder { /* private fields */ }Implementations§
Source§impl ClientBuilder
impl ClientBuilder
pub fn endpoints(endpoints: Vec<String>) -> Self
pub fn batch_flush_interval(self, flush_interval: Duration) -> Self
Sourcepub fn retry_policy(self, policy: RetryPolicy) -> Self
pub fn retry_policy(self, policy: RetryPolicy) -> Self
Override the default RetryPolicy.
The policy controls per-attempt deadlines, the overall deadline
across all candidate endpoints, the cap on attempts, and the
jittered backoff base. The per-attempt deadline is also pushed
down to tonic::transport::Endpoint::connect_timeout and
Endpoint::timeout for the built-in default and TLS transport
paths so a blackholed peer fails fast at the transport layer.
User-supplied Self::channel_connector closures own their
own Endpoint config; the policy still bounds the retry loop’s
outer tokio::time::timeout around them.
Sourcepub fn tls_config(self, cfg: ClientTlsConfig) -> Self
pub fn tls_config(self, cfg: ClientTlsConfig) -> Self
Configure the client to dial bare endpoints with TLS. Bare host:port
becomes https://host:port; explicit http://... endpoints supplied
in Self::endpoints remain plaintext; explicit https://...
endpoints use the provided TLS config.
Wire-supplied http://... leader-hint trailers are NOT honored under
tls_config — they are dropped to prevent a contacted peer from
downgrading the transport. Operator-supplied configuration still wins;
untrusted wire input does not.
Setting both Self::channel_connector and tls_config is allowed;
the last call wins (standard builder semantics). Calling
channel_connector after tls_config also clears the
reject-plaintext-hint policy, since the caller-owned connector owns
its own scheme policy.
Sourcepub fn channel_connector<F, Fut>(self, connector: F) -> Self
pub fn channel_connector<F, Fut>(self, connector: F) -> Self
Replace the default plaintext channel construction with a caller-owned
closure. The closure is invoked on first use of each endpoint —
configured endpoints and leader-hint redirects alike. Errors returned
from the closure surface as ClientError::Connector.
See module docs for the interaction with Self::tls_config
(last-wins) and the scheme matrix. A caller-owned connector replaces
the built-in TLS plumbing entirely, including the
reject-plaintext-leader-hint policy — the closure is responsible for
whatever scheme policy it wants to enforce.
pub async fn build(self) -> Result<Client, ClientError>
Auto Trait Implementations§
impl Freeze for ClientBuilder
impl !RefUnwindSafe for ClientBuilder
impl Send for ClientBuilder
impl Sync for ClientBuilder
impl Unpin for ClientBuilder
impl UnsafeUnpin for ClientBuilder
impl !UnwindSafe for ClientBuilder
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> 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::Request