Skip to main content

PluginTracer

Struct PluginTracer 

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

The boundary-trace sink — the LspLogger analogue. Cheap to trace into (gate → push → publish); everything expensive is deferred to the off-thread drain.

Implementations§

Source§

impl PluginTracer

Source

pub fn new(default_level: TraceLevel, capacity: usize) -> Self

Construct a tracer with default_level and a per-ring capacity.

Source

pub fn with_defaults() -> Self

Sensible defaults: Info (no per-call trace by default — design §7), 10k records / ring.

Source

pub fn set_event_publisher( &self, publisher: Box<dyn Fn(PluginTraceRecord) + Send + Sync>, )

Install / replace the event publisher (wired at boot to the runtime bus).

Source

pub fn set_default_level(&self, level: TraceLevel)

Set the default verbosity gate (:set plugin.trace-level=…). Republishes the new level to every hot-path gate whose plugin has no override, so the grammar trampoline picks it up on the next keystroke.

Source

pub fn set_plugin_level(&self, plugin: u32, level: TraceLevel)

Override one plugin’s verbosity gate (a per-plugin :set / manager-view toggle). The hot-path seam reads this, so raising one plugin’s verbosity never touches another’s cost. Republishes to that plugin’s hot-path gate.

Source

pub fn hot_gate(&self, plugin: u32) -> HotGate

The published hot-path gate for plugin — created (seeded to the plugin’s current effective level) on first request and cached, so repeated calls return clones of the same atomic. The sync grammar trampoline holds one and reads it once per guest call (design §4).

Source

pub fn plugin_level(&self, plugin: u32) -> TraceLevel

The effective gate for plugin — its override, else the default.

Source

pub fn trace(&self, record: PluginTraceRecord)

Append a record: gate by the plugin’s effective level, push to the per-plugin + global rings (bounded), then fire the publisher. A record above the gate is dropped before any ring work.

Source

pub fn snapshot_plugin(&self, plugin: u32) -> Vec<PluginTraceRecord>

Snapshot one plugin’s ring (cheap clone), newest last — the seed for a per-plugin trace view.

Source

pub fn snapshot_global(&self) -> Vec<PluginTraceRecord>

Snapshot the subsystem-wide ring — the seed for the shared trace view.

Source

pub fn forget_plugin(&self, plugin: u32)

Drop a plugin’s ring + gate override (on unload — reclaim its trace memory). The global ring keeps its historical records.

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.

§

impl<T> Instrument for T

§

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

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

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> Pointee for T

§

type Pointer = u32

§

fn debug( pointer: <T as Pointee>::Pointer, f: &mut Formatter<'_>, ) -> Result<(), Error>

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.
§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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