PacketFlow.Plugin (packetflow v0.1.0)

Plugin system for extending PacketFlow functionality

This module provides:

  • Plugin discovery and loading
  • Plugin lifecycle management
  • Plugin dependency resolution
  • Plugin configuration
  • Plugin hot-swapping

Summary

Functions

Returns a specification to start this module under a supervisor.

Get plugin configuration

Get information about a loaded plugin

Callback implementation for GenServer.init/1.

List all loaded plugins

Load a plugin by module name

Check if a plugin is loaded

Set plugin configuration

Unload a plugin by ID

Unwatch plugin lifecycle events

Watch for plugin lifecycle events

Types

plugin_id()

@type plugin_id() :: atom()

plugin_info()

@type plugin_info() :: %{
  id: plugin_id(),
  module: module(),
  version: String.t(),
  dependencies: [plugin_id()],
  config: map()
}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

get_plugin_config(plugin_id)

@spec get_plugin_config(plugin_id()) :: map()

Get plugin configuration

get_plugin_info(plugin_id)

@spec get_plugin_info(plugin_id()) :: plugin_info() | nil

Get information about a loaded plugin

init(opts)

Callback implementation for GenServer.init/1.

list_plugins()

@spec list_plugins() :: [plugin_id()]

List all loaded plugins

load_plugin(module)

@spec load_plugin(module()) :: {:ok, plugin_info()} | {:error, String.t()}

Load a plugin by module name

plugin_loaded?(plugin_id)

@spec plugin_loaded?(plugin_id()) :: boolean()

Check if a plugin is loaded

set_plugin_config(plugin_id, config)

@spec set_plugin_config(plugin_id(), map()) :: :ok

Set plugin configuration

start_link(opts \\ [])

unload_plugin(plugin_id)

@spec unload_plugin(plugin_id()) :: :ok | {:error, String.t()}

Unload a plugin by ID

unwatch_plugin(plugin_id, pid)

@spec unwatch_plugin(plugin_id(), pid()) :: :ok

Unwatch plugin lifecycle events

watch_plugin(plugin_id, pid)

@spec watch_plugin(plugin_id(), pid()) :: :ok

Watch for plugin lifecycle events