pub struct ClientBuilder { /* private fields */ }Expand description
Builder for A2aClient.
Start with ClientBuilder::new (URL) or ClientBuilder::from_card
(agent card auto-configuration).
Implementations§
Source§impl ClientBuilder
impl ClientBuilder
Sourcepub fn build(self) -> Result<A2aClient, ClientError>
pub fn build(self) -> Result<A2aClient, ClientError>
Validates configuration and constructs the A2aClient.
§Errors
ClientError::InvalidEndpointif the endpoint URL is malformed.ClientError::Transportif the selected transport cannot be initialized.
Sourcepub async fn build_grpc(self) -> Result<A2aClient, ClientError>
pub async fn build_grpc(self) -> Result<A2aClient, ClientError>
Validates configuration and constructs a gRPC-backed A2aClient.
Unlike build, this method is async because gRPC
transport requires establishing a connection.
§Errors
ClientError::InvalidEndpointif the endpoint URL is malformed.ClientError::Transportif the gRPC connection fails.
Source§impl ClientBuilder
impl ClientBuilder
Sourcepub fn new(endpoint: impl Into<String>) -> ClientBuilder
pub fn new(endpoint: impl Into<String>) -> ClientBuilder
Creates a builder targeting endpoint.
The endpoint is passed directly to the selected transport; it should be
the full base URL of the agent (e.g. http://localhost:8080).
Sourcepub fn from_card(card: &AgentCard) -> Result<ClientBuilder, ClientError>
pub fn from_card(card: &AgentCard) -> Result<ClientBuilder, ClientError>
Creates a builder pre-configured from an AgentCard.
Selects the first supported interface from the card. Logs a warning
(via tracing, if enabled) if the agent’s protocol version is not
in the supported range.
§Errors
Returns ClientError::InvalidEndpoint if the card has no interfaces.
Sourcepub const fn with_timeout(self, timeout: Duration) -> ClientBuilder
pub const fn with_timeout(self, timeout: Duration) -> ClientBuilder
Sets the per-request timeout for non-streaming calls.
Sourcepub const fn with_stream_connect_timeout(
self,
timeout: Duration,
) -> ClientBuilder
pub const fn with_stream_connect_timeout( self, timeout: Duration, ) -> ClientBuilder
Sets the timeout for establishing SSE stream connections.
Once the stream is established, this timeout no longer applies. Defaults to 30 seconds.
Sourcepub const fn with_connection_timeout(self, timeout: Duration) -> ClientBuilder
pub const fn with_connection_timeout(self, timeout: Duration) -> ClientBuilder
Sets the TCP connection timeout (DNS + handshake).
Defaults to 10 seconds. Prevents hanging for the OS default (~2 min) when the server is unreachable.
Sourcepub fn with_protocol_binding(self, binding: impl Into<String>) -> ClientBuilder
pub fn with_protocol_binding(self, binding: impl Into<String>) -> ClientBuilder
Sets the preferred protocol binding.
Overrides any binding derived from the agent card.
Sourcepub fn with_accepted_output_modes(self, modes: Vec<String>) -> ClientBuilder
pub fn with_accepted_output_modes(self, modes: Vec<String>) -> ClientBuilder
Sets the accepted output modes sent in SendMessage configurations.
Sourcepub const fn with_history_length(self, length: u32) -> ClientBuilder
pub const fn with_history_length(self, length: u32) -> ClientBuilder
Sets the history length to request in task responses.
Sourcepub const fn with_return_immediately(self, val: bool) -> ClientBuilder
pub const fn with_return_immediately(self, val: bool) -> ClientBuilder
Sets return_immediately for SendMessage calls.
Sourcepub fn with_custom_transport(self, transport: impl Transport) -> ClientBuilder
pub fn with_custom_transport(self, transport: impl Transport) -> ClientBuilder
Provides a fully custom transport implementation.
Overrides the transport that would normally be built from the endpoint URL and protocol preference.
Sourcepub const fn without_tls(self) -> ClientBuilder
pub const fn without_tls(self) -> ClientBuilder
Disables TLS (plain HTTP only).
Sourcepub const fn with_retry_policy(self, policy: RetryPolicy) -> ClientBuilder
pub const fn with_retry_policy(self, policy: RetryPolicy) -> ClientBuilder
Sets a retry policy for transient failures.
When set, the client automatically retries requests that fail with transient errors (connection errors, timeouts, HTTP 429/502/503/504) using exponential backoff.
§Example
use a2a_protocol_client::{ClientBuilder, RetryPolicy};
let client = ClientBuilder::new("http://localhost:8080")
.with_retry_policy(RetryPolicy::default())
.build()?;Sourcepub fn with_interceptor<I>(self, interceptor: I) -> ClientBuilderwhere
I: CallInterceptor,
pub fn with_interceptor<I>(self, interceptor: I) -> ClientBuilderwhere
I: CallInterceptor,
Adds an interceptor to the chain.
Interceptors are run in the order they are added.
Trait Implementations§
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> 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::Request