StateManager (Raxol v2.0.1)

View Source

Plugin state management utilities with full functionality.

Provides state management for the plugin system, including initialization, updates, persistence, and cleanup. Integrates with the unified state manager for consistency and performance.

Summary

Functions

Cleans up all plugin states.

Gets plugin metadata.

Gets plugin state by plugin ID.

Initializes the plugin state manager subsystem.

Initializes plugin state for a given plugin module.

Lists all plugin states.

Removes plugin state and metadata.

Sets plugin state directly.

Updates plugin state using an update function.

Updates plugin state using legacy interface for backward compatibility.

Types

plugin_config()

@type plugin_config() :: map()

plugin_id()

@type plugin_id() :: String.t()

plugin_module()

@type plugin_module() :: module()

plugin_state()

@type plugin_state() :: term()

Functions

cleanup()

@spec cleanup() :: :ok

Cleans up all plugin states.

get_plugin_metadata(plugin_id)

@spec get_plugin_metadata(plugin_id()) :: {:ok, map()} | {:error, :not_found}

Gets plugin metadata.

get_plugin_state(plugin_id)

@spec get_plugin_state(plugin_id()) :: {:ok, plugin_state()} | {:error, :not_found}

Gets plugin state by plugin ID.

initialize(state)

@spec initialize(term()) :: {:ok, term()}

Initializes the plugin state manager subsystem.

initialize_plugin_state(plugin_module, config)

@spec initialize_plugin_state(plugin_module(), plugin_config()) ::
  {:ok, plugin_state()}

Initializes plugin state for a given plugin module.

Creates initial state based on the plugin's configuration and stores it in the unified state management system under the plugins namespace.

list_plugin_states()

@spec list_plugin_states() :: [{plugin_id(), plugin_state()}]

Lists all plugin states.

remove_plugin(plugin_id)

@spec remove_plugin(plugin_id()) :: :ok

Removes plugin state and metadata.

set_plugin_state(plugin_id, state)

@spec set_plugin_state(plugin_id(), plugin_state()) :: :ok

Sets plugin state directly.

update_plugin_state(plugin_id, update_fn)

@spec update_plugin_state(plugin_id(), (plugin_state() -> plugin_state())) ::
  {:ok, plugin_state()}

Updates plugin state using an update function.

update_plugin_state_legacy(plugin_id, state, config)

@spec update_plugin_state_legacy(plugin_id(), plugin_state(), plugin_config()) ::
  {:ok, plugin_state()}

Updates plugin state using legacy interface for backward compatibility.

Maintains state in the unified state manager and supports both functional and imperative update patterns.