pub struct ExtensionRegistry { /* private fields */ }Expand description
Accumulates registrations from one or more plugins’ rpi_plugin_register
calls. Held by HostApi during register; the host then
take_registry and builds a snapshot.
Merge semantics mirror pi: first-registration-wins on tool/command name collision (a later registration for an existing name is dropped, not an overwrite). Event handlers accumulate (multiple per tag — fan-out).
Implementations§
Source§impl ExtensionRegistry
impl ExtensionRegistry
Sourcepub fn register_tool(&mut self, tool: Tool, handle: PluginToolHandle) -> bool
pub fn register_tool(&mut self, tool: Tool, handle: PluginToolHandle) -> bool
Register a tool. Returns true if a prior tool of the same name was
kept (first-wins: the new one is dropped). Returns false on insert.
Sourcepub fn register_command(
&mut self,
name: String,
description: String,
handler: CommandHandlerFn,
user_data: *mut c_void,
) -> bool
pub fn register_command( &mut self, name: String, description: String, handler: CommandHandlerFn, user_data: *mut c_void, ) -> bool
Register a slash command (first-wins by name). true if a prior was kept.
Sourcepub fn register_flag(&mut self, name: String, description: String) -> bool
pub fn register_flag(&mut self, name: String, description: String) -> bool
Register a CLI flag (first-wins by name). Returns true when an
earlier extension already declared the same flag.
Sourcepub fn register_event_handler(
&mut self,
tag: EventTag,
handler: EventHandlerFn,
user_data: *mut c_void,
) -> bool
pub fn register_event_handler( &mut self, tag: EventTag, handler: EventHandlerFn, user_data: *mut c_void, ) -> bool
Subscribe a handler to tag. Multiple handlers per tag are kept
(fan-out on dispatch). Always inserts; returns false.
Sourcepub fn register_resources_discover(
&mut self,
handler: ResourcesDiscoverFn,
plugin_free_string: FreeStringFn,
user_data: *mut c_void,
) -> bool
pub fn register_resources_discover( &mut self, handler: ResourcesDiscoverFn, plugin_free_string: FreeStringFn, user_data: *mut c_void, ) -> bool
Register a resources_discover handler (B5b). Multiple handlers are kept
(fan-out on discovery, registration order). Always inserts; returns false.
Sourcepub fn register_provider(&mut self, provider: RegisteredProvider) -> bool
pub fn register_provider(&mut self, provider: RegisteredProvider) -> bool
Register a custom provider (B5c). First-registration-wins on provider_id
(a later registration for an existing id is dropped, mirroring tool/command
first-wins). Returns true if a prior provider of the same id was kept.
Sourcepub fn register_renderer(&mut self, renderer: RegisteredRenderer) -> bool
pub fn register_renderer(&mut self, renderer: RegisteredRenderer) -> bool
Register a renderer (B5c — message/markdown/entry). First-wins on
(kind, name). Returns true if a prior renderer of the same kind+name
was kept.
Sourcepub fn snapshot(&self) -> RegistrySnapshot
pub fn snapshot(&self) -> RegistrySnapshot
Build a snapshot the host session keeps. The registry’s active flag is
shared (Arc) so a later invalidate on the registry also invalidates the
snapshot — important for cross-session staleness.
Sourcepub fn invalidate(&self)
pub fn invalidate(&self)
Mark this registry (and any snapshot sharing its flag) as stale.