Raxol.Core.Runtime.Plugins.PluginReloader.Behaviour behaviour (Raxol v0.5.0)

View Source

Defines the behaviour for plugin reloading functionality.

This behaviour is responsible for:

  • Reloading plugins from disk
  • Managing plugin reload state
  • Handling plugin reload errors
  • Coordinating plugin reload lifecycle

Summary

Callbacks

can_reload?(plugin_id, plugins, metadata)

@callback can_reload?(
  plugin_id :: String.t(),
  plugins :: map(),
  metadata :: map()
) :: boolean()

Checks if a plugin can be reloaded.

coordinate_reload(plugin_id, plugins, metadata, plugin_states, load_order, command_table)

@callback coordinate_reload(
  plugin_id :: String.t(),
  plugins :: map(),
  metadata :: map(),
  plugin_states :: map(),
  load_order :: list(),
  command_table :: atom()
) :: {:ok, map()} | {:error, any()}

Coordinates the plugin reload lifecycle.

get_reload_state(plugin_id, plugins, metadata)

@callback get_reload_state(
  plugin_id :: String.t(),
  plugins :: map(),
  metadata :: map()
) :: {:ok, map()} | {:error, any()}

Gets the reload state of a plugin.

handle_reload_error(plugin_id, error, plugins, metadata, plugin_states)

@callback handle_reload_error(
  plugin_id :: String.t(),
  error :: any(),
  plugins :: map(),
  metadata :: map(),
  plugin_states :: map()
) :: {:ok, map()} | {:error, any()}

Handles plugin reload errors.

reload_plugin_from_disk( plugin_id, plugin_module, plugin_state, plugins, metadata, plugin_states, load_order, command_table )

@callback reload_plugin_from_disk(
  plugin_id :: String.t(),
  plugin_module :: module(),
  plugin_state :: map(),
  plugins :: map(),
  metadata :: map(),
  plugin_states :: map(),
  load_order :: list(),
  command_table :: atom()
) :: {:ok, map()} | {:error, any()}

Reloads a plugin from disk.