pub struct EchoHandler { /* private fields */ }Expand description
TEST FIXTURE — DO NOT WIRE INTO PRODUCTION.
EchoHandler is an unauthenticated, in-memory A2aHandler used by
the crate’s own integration tests, the conformance suite, and the
cargo klieo a2a-conformance CLI. It accepts every inbound
SendMessage regardless of caller identity, advertises empty
securitySchemes on its agent card, and stores tasks in process
memory only.
Wiring this handler into an A2aServer outside a test context is a
security bug — any caller reachable on the transport can submit
tasks that are recorded as Completed.
Available only when the test-fixtures Cargo feature is enabled
(or in cfg(test) builds of klieo-a2a itself).
Trait Implementations§
Source§impl A2aHandler for EchoHandler
impl A2aHandler for EchoHandler
Source§fn send_message<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
params: SendMessageParams,
) -> Pin<Box<dyn Future<Output = Result<SendMessageResult, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn send_message<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
params: SendMessageParams,
) -> Pin<Box<dyn Future<Output = Result<SendMessageResult, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Spec §9.4.1.
ctx.caller is the verified identity (or None
only when AllowAnonymous was wired). Implementations should
reject None for mutating methods.Source§fn get_task<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
params: GetTaskParams,
) -> Pin<Box<dyn Future<Output = Result<Task, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_task<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
params: GetTaskParams,
) -> Pin<Box<dyn Future<Output = Result<Task, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Spec §9.4.3.
Source§fn list_tasks<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
params: ListTasksParams,
) -> Pin<Box<dyn Future<Output = Result<ListTasksResult, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_tasks<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
params: ListTasksParams,
) -> Pin<Box<dyn Future<Output = Result<ListTasksResult, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Spec §9.4.4.
Source§fn cancel_task<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
params: CancelTaskParams,
) -> 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,
_ctx: &'life1 RequestContext,
params: CancelTaskParams,
) -> Pin<Box<dyn Future<Output = Result<Task, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Spec §9.4.5.
Source§fn get_extended_agent_card<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
_params: GetExtendedAgentCardParams,
) -> Pin<Box<dyn Future<Output = Result<AgentCard, 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,
_ctx: &'life1 RequestContext,
_params: GetExtendedAgentCardParams,
) -> Pin<Box<dyn Future<Output = Result<AgentCard, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Spec §9.4.11.
Source§fn send_streaming_message<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
_params: SendMessageParams,
) -> Pin<Box<dyn Future<Output = Result<TaskEventStream, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn send_streaming_message<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
_params: SendMessageParams,
) -> Pin<Box<dyn Future<Output = Result<TaskEventStream, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Spec §9.4.2. Streaming variant — v0.0.2. Return a
TaskEventStream to override the dispatcher’s default
broadcast-derived stream; return A2aError::MethodNotFound
to fall back to it.Source§fn subscribe_to_task<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
_params: SubscribeToTaskParams,
) -> Pin<Box<dyn Future<Output = Result<TaskEventStream, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn subscribe_to_task<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
_params: SubscribeToTaskParams,
) -> Pin<Box<dyn Future<Output = Result<TaskEventStream, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Spec §9.4.6. v0.0.2. Return a
TaskEventStream to override
the dispatcher’s default broadcast-derived stream; return
A2aError::MethodNotFound to fall back to it.Source§fn create_task_push_notification_config<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
_params: PushNotificationConfigParams,
) -> Pin<Box<dyn Future<Output = Result<PushNotificationConfig, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_task_push_notification_config<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
_params: PushNotificationConfigParams,
) -> Pin<Box<dyn Future<Output = Result<PushNotificationConfig, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Spec §9.4.7. v0.0.2.
Source§fn get_task_push_notification_config<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
_params: GetPushNotificationConfigParams,
) -> Pin<Box<dyn Future<Output = Result<PushNotificationConfig, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_task_push_notification_config<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
_params: GetPushNotificationConfigParams,
) -> Pin<Box<dyn Future<Output = Result<PushNotificationConfig, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Spec §9.4.8. v0.0.2.
Source§fn list_task_push_notification_configs<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
_params: ListPushNotificationConfigsParams,
) -> Pin<Box<dyn Future<Output = Result<ListPushNotificationConfigsResult, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_task_push_notification_configs<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
_params: ListPushNotificationConfigsParams,
) -> Pin<Box<dyn Future<Output = Result<ListPushNotificationConfigsResult, A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Spec §9.4.9. v0.0.2.
Source§fn delete_task_push_notification_config<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
_params: DeletePushNotificationConfigParams,
) -> Pin<Box<dyn Future<Output = Result<(), A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_task_push_notification_config<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 RequestContext,
_params: DeletePushNotificationConfigParams,
) -> Pin<Box<dyn Future<Output = Result<(), A2aError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Spec §9.4.10. v0.0.2.
Source§fn is_idempotent(&self) -> bool
fn is_idempotent(&self) -> bool
Returns true if all streaming invocations against this
handler are safe to re-execute from the original payload
— i.e. the result is deterministic OR duplicate execution
has no business effect. Read more
Source§impl Default for EchoHandler
impl Default for EchoHandler
Source§fn default() -> EchoHandler
fn default() -> EchoHandler
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl !Freeze for EchoHandler
impl RefUnwindSafe for EchoHandler
impl Send for EchoHandler
impl Sync for EchoHandler
impl Unpin for EchoHandler
impl UnsafeUnpin for EchoHandler
impl UnwindSafe for EchoHandler
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