Skip to main content

AcpAgentPeer

Struct AcpAgentPeer 

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

The agent-side transport for ACP.

Constructed via AcpAgentPeer::from_stdio. The peer owns two tasks (the reader and the writer); dropping the peer stops the tasks. The agent process’s own lifecycle is independent — the agent process is not owned by this peer.

Implementations§

Source§

impl AcpAgentPeer

Source

pub fn from_stdio<R, W>(stdin: R, stdout: W) -> Self
where R: AsyncRead + Unpin + Send + 'static, W: AsyncWrite + Unpin + Send + 'static,

Construct an agent peer from a stdin reader and a stdout writer. The generic parameters let the test suite pass tokio::io::DuplexStream halves instead of a real ChildStdin / ChildStdout.

The peer spawns a reader task and a writer task; the application communicates with the peer through the mpsc channels the reader and writer tasks own. The half moves happen at construction time; the returned peer is Send + 'static.

Source

pub async fn recv_request(&mut self) -> Option<AgentRequest>

Await the next AgentRequest the client sent.

Returns None when the reader task is gone (the client closed its end of the wire, or the pipe broke). The application is expected to shut down its handler loop on None.

Source

pub async fn send_reply( &self, id: Value, result: Value, ) -> Result<(), AcpPeerError>

Send a success reply for a previously received request.

The wire form is { "jsonrpc": "2.0", "id": <id>, "result": <result> }. The id is the value the request carried; the peer passes it through unchanged.

Source

pub async fn send_error( &self, id: Value, code: i64, message: impl Into<String>, ) -> Result<(), AcpPeerError>

Send a JSON-RPC 2.0 error reply for a previously received request. The code and message are the JSON-RPC error code and human-readable message; the wire form is { "jsonrpc": "2.0", "id": <id>, "error": { "code": <code>, "message": <message> } }.

Source

pub async fn send_notification<Params>( &self, method: &str, params: Params, ) -> Result<(), AcpPeerError>
where Params: Serialize,

Send a notification to the client. The wire form is { "jsonrpc": "2.0", "method": ..., "params": ... } with no id field. The schema’s session/update is the canonical example.

Trait Implementations§

Source§

impl Debug for AcpAgentPeer

Source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

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: Sized + 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: Sized + 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

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

fn try_from(value: U) -> Result<T, !>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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