Skip to main content

DynamicRegistry

Struct DynamicRegistry 

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

In-memory index of every active dynamic registration for one server actor. Empty on a fresh server; mutated by the actor on client/(un)registerCapability and snapshotted into the published Capabilities on every change.

Two-way index (by_id + by_method) keeps both register (O(1) append) and unregister (O(1) lookup by id) cheap, with the “is method X registered?” probe also O(1) via the per-method bucket.

Implementations§

Source§

impl DynamicRegistry

Source

pub fn new() -> Self

Construct an empty registry. Used at handshake and whenever the actor restarts (each restart starts clean; the server replays its registrations).

Source

pub fn is_empty(&self) -> bool

True iff the registry has no entries. Cheap shortcut for the common steady-state case – most probes ask “is this dynamically registered?” and the registry is usually empty, so we want the false branch to be O(1).

Source

pub fn len(&self) -> usize

Number of distinct registrations currently active. Each Registration from a RegistrationParams batch counts once – duplicate ids (server error) are deduplicated by Self::register.

Source

pub fn register(&mut self, reg: DynamicRegistration)

Add one registration. If the id is already present, the new entry replaces the old (servers shouldn’t reuse ids without unregistering first, but if they do we honour the latest). The by_method index is updated to remove the stale entry from the old method’s bucket before inserting under the new method.

Source

pub fn unregister(&mut self, id: &str)

Evict the registration matching id. Silently no-op when the id is absent (server may unregister speculatively after a restart; rejecting would just spam the log).

Source

pub fn has(&self, method: &str) -> bool

True iff at least one active registration targets the given LSP method. The probe supports_* family calls here to OR into their static ServerCapabilities check.

Source

pub fn registrations_for<'a>( &'a self, method: &str, ) -> impl Iterator<Item = &'a DynamicRegistration> + 'a

Borrow every registration for the given method in insertion order. Used by feature consumers that need the register_options blob – e.g. the file-watcher pump (4.4.l) reads each DidChangeWatchedFilesRegistrationOptions to know which glob patterns to subscribe to.

Source

pub fn get(&self, id: &str) -> Option<&DynamicRegistration>

Borrow one registration by id. Used by tests and the log surface (4.4.n’s :lsp-status extension will dump every active dynamic registration for diagnosis).

Trait Implementations§

Source§

impl Clone for DynamicRegistry

Source§

fn clone(&self) -> DynamicRegistry

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DynamicRegistry

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for DynamicRegistry

Source§

fn default() -> DynamicRegistry

Returns the “default value” for a type. 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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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