Skip to main content

ExecProcess

Struct ExecProcess 

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

A handle to a running command. Drop or ExecProcess::close releases the stream without killing the command.

Implementations§

Source§

impl ExecProcess

Source

pub fn exec_request_id(&self) -> &str

The durable server-assigned id for this exec, taken from the Started frame. Identifies the command for wait, cancel, resize, and stdin RPCs.

Source

pub fn sailbox_id(&self) -> &str

The sailbox this exec runs on.

Source

pub fn idempotency_key(&self) -> &str

The idempotency key this exec launched with: the caller’s, or the one minted in start when none was supplied.

Source

pub async fn forward_port( &self, local_port: u16, remote_port: u16, ) -> Result<PortForward, SailError>

Forward a local port to a guest-local port over this session. The listener binds on 127.0.0.1; passing local_port 0 lets the OS pick a free port (read back from the returned handle). Dropping the handle stops the forward.

Source

pub async fn next_forward_event(&self) -> Option<ForwardEvent>

Await the next local-forwarding event (e.g. a browser open) for an interactive session. Returns None once the stream has ended and no queued events remain. The shell driver consumes these to act on the user’s machine.

Source

pub fn reader(&self, which: OutputStream) -> StreamReader

Create a reader over a live output stream. A fresh reader replays the retained tail from the start, then follows live.

Source

pub fn reader_async(&self, which: OutputStream) -> AsyncStreamReader

Create an async reader over a live output stream (the awaiting twin of reader).

Source

pub fn poll(&self) -> Option<Result<i32, SailError>>

Returns the exit code if the Exit frame arrived on the stream, mapping a not-a-real-result terminal status to its error. None means the result is not known on the stream yet. wait is authoritative.

Source

pub fn close(&self)

Stop the pump and release the stream without touching the remote command.

Source

pub async fn wait(&self) -> Result<ExecResult, SailError>

Wait for the command to finish and return its buffered result.

A clean Exit resolves from the local rings; a stream that ended without one (or whose tail is truncated or short) falls back to WaitSailboxExec, which reattaches to the guest session for the authoritative result, retrying a not-ready box for the exec’s configured retry_timeout budget.

Source

pub async fn cancel( &self, signal: CancelSignal, retry: RetryBudget, ) -> Result<(), SailError>

Signal the command: CancelSignal::Interrupt (SIGINT) or CancelSignal::Kill (SIGKILL).

Source

pub async fn resize(&self, cols: u32, rows: u32)

Set the pty window for a pty exec. Advisory and best-effort: an unknown, finished, or not-yet-placed exec is a server no-op, and a transient transport error is swallowed (the next resize resends).

Source

pub async fn resync(&self)

Ask a pty exec to re-emit its current screen as a Snapshot on the live stream. A client whose local buffer dropped output (it fell behind a fast producer) calls this to repaint instead of rendering a torn tail; the command keeps running detached. Advisory and best-effort like resize: an unknown, finished, or non-pty exec is a server no-op, and a transient error is swallowed (the client re-requests if it is still behind).

Source

pub async fn write_stdin(&self, data: &[u8]) -> Result<(), SailError>

Write to the command’s stdin. Chunked with absolute offsets; an uncertain mid-flight failure poisons the writer (a stale-offset resume could silently drop bytes). Blocks (with backoff) while the guest buffer is full.

Source

pub async fn close_stdin(&self) -> Result<(), SailError>

Close the command’s stdin (send EOF).

Trait Implementations§

Source§

impl Drop for ExecProcess

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. 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<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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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 = 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<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