pub struct GrpcTransport { /* private fields */ }Expand description
gRPC transport for A2A clients.
Connects to a canonical A2A gRPC endpoint and translates A2A method
calls into typed protobuf RPCs. Implements the Transport trait for
use with crate::A2aClient.
Implementations§
Source§impl GrpcTransport
impl GrpcTransport
Sourcepub async fn connect(
endpoint: impl Into<String>,
) -> Result<GrpcTransport, ClientError>
pub async fn connect( endpoint: impl Into<String>, ) -> Result<GrpcTransport, ClientError>
Connects to a gRPC endpoint with default configuration.
The endpoint should be an http:// or https:// URL.
§Errors
Returns ClientError::Transport if the connection fails.
Sourcepub async fn connect_with_config(
endpoint: impl Into<String>,
config: GrpcTransportConfig,
) -> Result<GrpcTransport, ClientError>
pub async fn connect_with_config( endpoint: impl Into<String>, config: GrpcTransportConfig, ) -> Result<GrpcTransport, ClientError>
Connects to a gRPC endpoint with custom configuration.
§Errors
Returns ClientError::Transport if the connection fails.
Sourcepub fn with_stream_connect_timeout(self, timeout: Duration) -> GrpcTransport
pub fn with_stream_connect_timeout(self, timeout: Duration) -> GrpcTransport
Bounds the wait for a stream’s first event, separately from
GrpcTransportConfig::timeout.
ClientBuilder has carried a with_stream_connect_timeout knob since
long before this method, documented as “per-request timeout for
establishing the SSE stream”, and the sync build() path even refuses a
zero value for it. The gRPC path never received it: build_grpc passed
request_timeout and connection_timeout and dropped the third, and
this transport then bounded its first event on config.timeout. Both
default to 30 seconds, which is why nothing caught it — the knob only
does nothing once you set it to something.
Unset means config.timeout, so a caller constructing this transport
directly sees no change.
Trait Implementations§
Source§impl Clone for GrpcTransport
impl Clone for GrpcTransport
Source§fn clone(&self) -> GrpcTransport
fn clone(&self) -> GrpcTransport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for GrpcTransport
impl Debug for GrpcTransport
Source§impl Transport for GrpcTransport
impl Transport for GrpcTransport
Source§fn send_request<'a>(
&'a self,
method: &'a str,
params: Value,
extra_headers: &'a HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<Value, ClientError>> + Send + 'a>>
fn send_request<'a>( &'a self, method: &'a str, params: Value, extra_headers: &'a HashMap<String, String>, ) -> Pin<Box<dyn Future<Output = Result<Value, ClientError>> + Send + 'a>>
Source§fn send_streaming_request<'a>(
&'a self,
method: &'a str,
params: Value,
extra_headers: &'a HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<EventStream, ClientError>> + Send + 'a>>
fn send_streaming_request<'a>( &'a self, method: &'a str, params: Value, extra_headers: &'a HashMap<String, String>, ) -> Pin<Box<dyn Future<Output = Result<EventStream, ClientError>> + Send + 'a>>
EventStream. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for GrpcTransport
impl !UnwindSafe for GrpcTransport
impl Freeze for GrpcTransport
impl Send for GrpcTransport
impl Sync for GrpcTransport
impl Unpin for GrpcTransport
impl UnsafeUnpin for GrpcTransport
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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