pub struct GrpcDispatcher { /* private fields */ }Expand description
gRPC dispatcher that routes A2A requests to a RequestHandler.
Implements the tonic A2aService trait using JSON-over-gRPC payloads.
Create via GrpcDispatcher::new and serve with GrpcDispatcher::serve
or build a tonic Router with GrpcDispatcher::into_service.
Implementations§
Source§impl GrpcDispatcher
impl GrpcDispatcher
Sourcepub const fn new(
handler: Arc<RequestHandler>,
config: GrpcConfig,
) -> GrpcDispatcher
pub const fn new( handler: Arc<RequestHandler>, config: GrpcConfig, ) -> GrpcDispatcher
Creates a new gRPC dispatcher wrapping the given handler.
Sourcepub async fn serve(self, addr: impl ToSocketAddrs) -> Result<(), Error>
pub async fn serve(self, addr: impl ToSocketAddrs) -> Result<(), Error>
Starts a gRPC server on the given address.
Blocks until the server shuts down. Uses the configured message size limits and concurrency settings.
§Errors
Returns std::io::Error if binding fails.
Sourcepub async fn serve_with_addr(
self,
addr: impl ToSocketAddrs,
) -> Result<SocketAddr, Error>
pub async fn serve_with_addr( self, addr: impl ToSocketAddrs, ) -> Result<SocketAddr, Error>
Starts a gRPC server and returns the bound SocketAddr.
Like serve, but returns the address immediately
and runs the server in a background task. Useful for tests.
§Errors
Returns std::io::Error if binding fails.
Sourcepub fn serve_with_listener(
self,
listener: TcpListener,
) -> Result<SocketAddr, Error>
pub fn serve_with_listener( self, listener: TcpListener, ) -> Result<SocketAddr, Error>
Starts a gRPC server on a pre-bound TcpListener.
This is the recommended approach when you need to know the server address before constructing the handler (e.g., for agent cards with correct URLs). Pre-bind the listener, extract the address, build your handler, then pass the listener here.
Returns the local address and runs the server in a background task.
§Errors
Returns std::io::Error if the listener’s local address cannot be read.
Sourcepub fn into_service(&self) -> A2aServiceServer<GrpcServiceImpl>
pub fn into_service(&self) -> A2aServiceServer<GrpcServiceImpl>
Builds the tonic service for use with a custom server setup.
Returns an A2aServiceServer that can be added to a
tonic::transport::Server via add_service.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for GrpcDispatcher
impl !RefUnwindSafe for GrpcDispatcher
impl Send for GrpcDispatcher
impl Sync for GrpcDispatcher
impl Unpin for GrpcDispatcher
impl UnsafeUnpin for GrpcDispatcher
impl !UnwindSafe for GrpcDispatcher
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