pub struct DefaultRequestHandler { /* private fields */ }Expand description
Default implementation of RequestHandler that orchestrates
task lifecycle management, storage, and executor dispatch.
Implementations§
Source§impl DefaultRequestHandler
impl DefaultRequestHandler
pub fn new(executor: impl AgentExecutor, task_store: impl TaskStore) -> Self
Sourcepub fn with_extended_agent_card(self, card: AgentCard) -> Self
pub fn with_extended_agent_card(self, card: AgentCard) -> Self
Serve card as the extended Agent Card, identically for every caller.
Also declares the extendedAgentCard capability, since serving one
and advertising it should not be two separate things to remember —
an explicit with_capabilities(..) still overrides it either way.
Sourcepub fn with_extended_agent_card_resolver(
self,
resolver: impl ExtendedAgentCardResolver + 'static,
) -> Self
pub fn with_extended_agent_card_resolver( self, resolver: impl ExtendedAgentCardResolver + 'static, ) -> Self
Serve an extended Agent Card computed per caller, so an agent can reveal different skills to different principals (§12.4).
Install an authorizer. The default handler does not enforce one.
pub fn with_push_config_store( self, push_config_store: impl PushConfigStore, ) -> Self
pub fn with_push_notifications( self, push_config_store: impl PushConfigStore, push_sender: HttpPushSender, ) -> Self
pub fn with_capabilities(self, capabilities: AgentCapabilities) -> Self
Sourcepub fn with_default_input_modes(self, modes: impl Into<Vec<String>>) -> Self
pub fn with_default_input_modes(self, modes: impl Into<Vec<String>>) -> Self
Declares the media types incoming message parts may use (§5.1’s
defaultInputModes). Empty (the default) means unrestricted, so
embedders that never call this see no change in behavior.
Trait Implementations§
Source§impl RequestHandler for DefaultRequestHandler
impl RequestHandler for DefaultRequestHandler
Source§fn list_tasks<'life0, 'life1, 'async_trait>(
&'life0 self,
params: &'life1 ServiceParams,
req: ListTasksRequest,
) -> Pin<Box<dyn Future<Output = Result<ListTasksResponse, A2AError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_tasks<'life0, 'life1, 'async_trait>(
&'life0 self,
params: &'life1 ServiceParams,
req: ListTasksRequest,
) -> Pin<Box<dyn Future<Output = Result<ListTasksResponse, A2AError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Bounds the page twice, and neither is redundant: TaskStore is a
public trait.
Clamping page_size before the call bounds a store that honours it
– the ordinary case, and the one that turns pageSize=999999999
into a real query. Truncating the response bounds a store that
ignores it, which cannot be detected from here.
On truncation the store’s next_page_token is left alone: paging is
the store’s own scheme (the in-tree stores use offsets, another may
use an opaque cursor) so no correct token can be synthesised. See
[TaskStore::list].
fn send_message<'life0, 'life1, 'async_trait>(
&'life0 self,
params: &'life1 ServiceParams,
req: SendMessageRequest,
) -> Pin<Box<dyn Future<Output = Result<SendMessageResponse, A2AError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn send_streaming_message<'life0, 'life1, 'async_trait>(
&'life0 self,
params: &'life1 ServiceParams,
req: SendMessageRequest,
) -> Pin<Box<dyn Future<Output = Result<BoxStream<'static, Result<StreamResponse, A2AError>>, A2AError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_task<'life0, 'life1, 'async_trait>(
&'life0 self,
params: &'life1 ServiceParams,
req: GetTaskRequest,
) -> Pin<Box<dyn Future<Output = Result<Task, A2AError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn cancel_task<'life0, 'life1, 'async_trait>(
&'life0 self,
params: &'life1 ServiceParams,
req: CancelTaskRequest,
) -> Pin<Box<dyn Future<Output = Result<Task, A2AError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn subscribe_to_task<'life0, 'life1, 'async_trait>(
&'life0 self,
params: &'life1 ServiceParams,
req: SubscribeToTaskRequest,
) -> Pin<Box<dyn Future<Output = Result<BoxStream<'static, Result<StreamResponse, A2AError>>, A2AError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_push_config<'life0, 'life1, 'async_trait>(
&'life0 self,
params: &'life1 ServiceParams,
req: TaskPushNotificationConfig,
) -> Pin<Box<dyn Future<Output = Result<TaskPushNotificationConfig, A2AError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_push_config<'life0, 'life1, 'async_trait>(
&'life0 self,
params: &'life1 ServiceParams,
req: GetTaskPushNotificationConfigRequest,
) -> Pin<Box<dyn Future<Output = Result<TaskPushNotificationConfig, A2AError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_push_configs<'life0, 'life1, 'async_trait>(
&'life0 self,
params: &'life1 ServiceParams,
req: ListTaskPushNotificationConfigsRequest,
) -> Pin<Box<dyn Future<Output = Result<ListTaskPushNotificationConfigsResponse, A2AError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_push_config<'life0, 'life1, 'async_trait>(
&'life0 self,
params: &'life1 ServiceParams,
req: DeleteTaskPushNotificationConfigRequest,
) -> Pin<Box<dyn Future<Output = Result<(), A2AError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_extended_agent_card<'life0, 'life1, 'async_trait>(
&'life0 self,
params: &'life1 ServiceParams,
_req: GetExtendedAgentCardRequest,
) -> Pin<Box<dyn Future<Output = Result<AgentCard, A2AError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Auto Trait Implementations§
impl !RefUnwindSafe for DefaultRequestHandler
impl !UnwindSafe for DefaultRequestHandler
impl Freeze for DefaultRequestHandler
impl Send for DefaultRequestHandler
impl Sync for DefaultRequestHandler
impl Unpin for DefaultRequestHandler
impl UnsafeUnpin for DefaultRequestHandler
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> 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