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) -> ClientResult<A2aClient>
pub fn build(self) -> ClientResult<A2aClient>
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) -> ClientResult<A2aClient>
pub async fn build_grpc(self) -> ClientResult<A2aClient>
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>) -> Self
pub fn new(endpoint: impl Into<String>) -> Self
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) -> ClientResult<Self>
pub fn from_card(card: &AgentCard) -> ClientResult<Self>
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) -> Self
pub const fn with_timeout(self, timeout: Duration) -> Self
Sets the per-request timeout for non-streaming calls.
Sourcepub const fn with_stream_connect_timeout(self, timeout: Duration) -> Self
pub const fn with_stream_connect_timeout(self, timeout: Duration) -> Self
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) -> Self
pub const fn with_connection_timeout(self, timeout: Duration) -> Self
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>) -> Self
pub fn with_protocol_binding(self, binding: impl Into<String>) -> Self
Sets the preferred protocol binding.
Overrides any binding derived from the agent card.
Sourcepub fn with_accepted_output_modes(self, modes: Vec<String>) -> Self
pub fn with_accepted_output_modes(self, modes: Vec<String>) -> Self
Sets the accepted output modes sent in SendMessage configurations.
Sourcepub const fn with_history_length(self, length: u32) -> Self
pub const fn with_history_length(self, length: u32) -> Self
Sets the history length to request in task responses.
Sourcepub const fn with_return_immediately(self, val: bool) -> Self
pub const fn with_return_immediately(self, val: bool) -> Self
Sets return_immediately for SendMessage calls.
Sourcepub fn with_custom_transport(self, transport: impl Transport) -> Self
pub fn with_custom_transport(self, transport: impl Transport) -> Self
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) -> Self
pub const fn without_tls(self) -> Self
Disables TLS (plain HTTP only).
Sourcepub const fn with_retry_policy(self, policy: RetryPolicy) -> Self
pub const fn with_retry_policy(self, policy: RetryPolicy) -> Self
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: CallInterceptor>(self, interceptor: I) -> Self
pub fn with_interceptor<I: CallInterceptor>(self, interceptor: I) -> Self
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> 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