Skip to main content

InteractionBridge

Struct InteractionBridge 

Source
pub struct InteractionBridge { /* private fields */ }
Expand description

The interaction bridge translating heartbit callbacks to WS frames.

Maintains a map of pending interactions and an outbound channel for pushing events to the WebSocket handler.

Implementations§

Source§

impl InteractionBridge

Source

pub fn new(outbound: Sender<OutboundMessage>, timeout: Duration) -> Self

Create a new bridge with the given outbound sender and interaction timeout.

Source

pub fn make_on_text(self: &Arc<Self>, session_id: Uuid) -> Arc<OnText>

Create an OnText callback that forwards text deltas to the outbound channel.

Source

pub fn make_on_event(self: &Arc<Self>, session_id: Uuid) -> Arc<OnEvent>

Create an OnEvent callback that forwards agent events to the outbound channel.

Source

pub fn make_on_input(self: &Arc<Self>, session_id: Uuid) -> Arc<OnInput>

Create an OnInput callback using oneshot rendezvous.

When called, sends InputNeeded on the outbound channel and waits for the client to resolve. Returns None on timeout (SOLICITATION semantic).

Source

pub fn make_on_approval(self: &Arc<Self>, session_id: Uuid) -> Arc<OnApproval>

Create an OnApproval callback using std::sync::mpsc rendezvous.

OnApproval is synchronous, so we use std::sync::mpsc::recv_timeout() instead of async oneshot. Returns Deny on timeout (PERMISSION semantic).

Source

pub fn make_on_question(self: &Arc<Self>, session_id: Uuid) -> Arc<OnQuestion>

Create an OnQuestion callback using oneshot rendezvous.

Returns Error::Channel("timeout") on timeout (CLARIFICATION semantic).

Source

pub fn resolve_input( &self, id: Uuid, message: Option<String>, ) -> Result<(), Error>

Resolve a pending input interaction.

SECURITY (F-AUTH-5): when expected_session is Some, the resolver checks that the pending entry belongs to that session before delivering the result. Use this in network handlers where the resolving frame’s session id is known.

Source

pub fn resolve_input_for_session( &self, expected_session: Option<Uuid>, id: Uuid, message: Option<String>, ) -> Result<(), Error>

Like [resolve_input] but verifies the interaction belongs to expected_session before resolving (F-AUTH-5).

Source

pub fn resolve_approval( &self, id: Uuid, decision: ApprovalDecision, ) -> Result<(), Error>

Resolve a pending approval interaction.

Source

pub fn resolve_approval_for_session( &self, expected_session: Option<Uuid>, id: Uuid, decision: ApprovalDecision, ) -> Result<(), Error>

Like [resolve_approval] but verifies the interaction belongs to expected_session (F-AUTH-5).

Source

pub fn resolve_question( &self, id: Uuid, response: QuestionResponse, ) -> Result<(), Error>

Resolve a pending question interaction.

Source

pub fn resolve_question_for_session( &self, expected_session: Option<Uuid>, id: Uuid, response: QuestionResponse, ) -> Result<(), Error>

Like [resolve_question] but verifies the interaction belongs to expected_session (F-AUTH-5).

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more