pub struct DebugSessionEntry {
pub SessionId: String,
pub DebugType: String,
pub SideCarIdentifier: String,
pub StdinSender: Option<UnboundedSender<Vec<u8>>>,
pub ChildPid: Option<u32>,
}Expand description
Active debug session entry. Lives in the DebugSessions map keyed by
session-id (Uuid::new_v4() allocated by DebugProvider::StartDebugging)
so subsequent SendCommand calls can resolve the writer end of the
spawned adapter’s stdin pipe and DisposeSession can kill the process.
StdinSender is None for debug-types whose adapter descriptor wasn’t
of the executable kind we know how to spawn (TCP server descriptors,
inlineImplementation descriptors handled entirely in Cocoon, etc.).
In those cases we still record the session so command routing can fall
through to a reverse-RPC into Cocoon instead of dropping silently.
Fields§
§SessionId: StringSession ID assigned at StartDebugging time.
DebugType: StringDebug type (e.g. "node", "chrome") - mirrors the configuration
type field, used for diagnostics and routing.
SideCarIdentifier: StringSidecar that owns the configuration-provider / adapter-descriptor factory. Used for reverse-RPC dispatch when the adapter is not a spawned executable.
StdinSender: Option<UnboundedSender<Vec<u8>>>Channel that writes raw DAP frame bytes to the adapter’s stdin.
None for non-executable adapter kinds.
ChildPid: Option<u32>PID of the spawned adapter process (when applicable). None for
non-executable kinds. Mountain doesn’t keep a live Child handle
here because Child isn’t Clone; the process termination is
signalled via dropping StdinSender, which the spawn’s
stdout/stderr drain tasks treat as shutdown.
Trait Implementations§
Source§impl Clone for DebugSessionEntry
impl Clone for DebugSessionEntry
Source§fn clone(&self) -> DebugSessionEntry
fn clone(&self) -> DebugSessionEntry
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for DebugSessionEntry
impl RefUnwindSafe for DebugSessionEntry
impl Send for DebugSessionEntry
impl Sync for DebugSessionEntry
impl Unpin for DebugSessionEntry
impl UnsafeUnpin for DebugSessionEntry
impl UnwindSafe for DebugSessionEntry
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].