pub struct A2aServer { /* private fields */ }Expand description
The A2A server: an Application serving the Agent Card and the
JSON-RPC endpoint.
Implementations§
Source§impl A2aServer
impl A2aServer
Sourcepub fn new(card: AgentCard) -> A2aServer
pub fn new(card: AgentCard) -> A2aServer
An agent described by card; until on_message
it rejects every message.
Sourcepub fn on_message<F>(self, handler: F) -> A2aServer
pub fn on_message<F>(self, handler: F) -> A2aServer
Answer each message.
Sourcepub fn require_bearer(self, token: &str) -> A2aServer
pub fn require_bearer(self, token: &str) -> A2aServer
Require Authorization: Bearer <token> on the JSON-RPC endpoint (the
card stays public and lists the scheme).
Sourcepub fn require_bearer_tokens<'a>(
self,
tokens: impl IntoIterator<Item = (&'a str, &'a str)>,
) -> A2aServer
pub fn require_bearer_tokens<'a>( self, tokens: impl IntoIterator<Item = (&'a str, &'a str)>, ) -> A2aServer
Several tokens, each standing for an identity; callers only see their own tasks.
Sourcepub fn blocking_timeout(self, timeout: Duration) -> A2aServer
pub fn blocking_timeout(self, timeout: Duration) -> A2aServer
How long SendMessage waits for a running task to finish or ask for
input before answering with its current state (default 300 s).
Trait Implementations§
Source§impl Application for A2aServer
impl Application for A2aServer
Source§fn execute(
&self,
request: &Request,
connection: &ConnectionInfo,
) -> Result<Response, String>
fn execute( &self, request: &Request, connection: &ConnectionInfo, ) -> Result<Response, String>
Receives a parsed request and returns a fully-built response.
Walk your controller list with
is_matching / process and return the first match.Source§fn runs_inline(&self, _request: &Request, _connection: &ConnectionInfo) -> bool
fn runs_inline(&self, _request: &Request, _connection: &ConnectionInfo) -> bool
true when executing request is quick and never waits on anything
but the local filesystem — health checks, metrics, small static files.
The async servers (HTTP/1.1, HTTP/2, HTTP/3) then call execute
directly on the event loop, as nginx does, instead of handing the
request to tokio’s blocking pool: that handoff (a shared lock and two
cross-thread wake-ups) costs more than serving a small file. Read moreSource§fn execute_async<'a>(
&'a self,
_request: &'a Request,
_connection: &'a ConnectionInfo,
) -> Option<AsyncResponse<'a>>
fn execute_async<'a>( &'a self, _request: &'a Request, _connection: &'a ConnectionInfo, ) -> Option<AsyncResponse<'a>>
An asynchronous version of
execute for this request, when the
application has one: the async servers await it on the connection’s
task instead of tying up a blocking-pool thread while it waits (the
config-driven proxy uses this to wait for a backend without holding a
thread). None (the default) means “use execute”. Wrappers return
Some only when they add no synchronous work of their own.Source§fn streams_body(&self, _request: &Request, _connection: &ConnectionInfo) -> bool
fn streams_body(&self, _request: &Request, _connection: &ConnectionInfo) -> bool
true to receive this request’s body as a stream (Body::Stream)
instead of read into memory first: execute then runs while the
body is still arriving, on a blocking-pool thread, and reads it with
std::io::Read — a multi-gigabyte upload in a few chunks of memory.
Asked after the head is read, so request.body is empty here;
decide from the method, path and headers. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for A2aServer
impl !UnwindSafe for A2aServer
impl Freeze for A2aServer
impl Send for A2aServer
impl Sync for A2aServer
impl Unpin for A2aServer
impl UnsafeUnpin for A2aServer
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
Mutably borrows from an owned value. Read more