PacketFlow.Config (packetflow v0.1.0)

Dynamic configuration management for PacketFlow components

This module provides centralized configuration management with support for:

  • Environment-based configuration
  • Runtime configuration updates
  • Component-specific configuration
  • Configuration validation
  • Default value management

Summary

Functions

Returns a specification to start this module under a supervisor.

Get a configuration value with optional default

Get all configuration

Get a configuration value for a specific component

Callback implementation for GenServer.init/1.

Set a configuration value

Set a configuration value for a specific component

Unwatch configuration changes

Update configuration with a map of values

Validate configuration against schema

Watch for configuration changes

Types

config_key()

@type config_key() :: atom()

config_map()

@type config_map() :: %{required(config_key()) => config_value()}

config_value()

@type config_value() :: any()

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

get(key, default \\ nil)

@spec get(config_key(), config_value()) :: config_value()

Get a configuration value with optional default

get_all()

@spec get_all() :: config_map()

Get all configuration

get_component(component, key, default \\ nil)

@spec get_component(atom(), config_key(), config_value()) :: config_value()

Get a configuration value for a specific component

init(opts)

Callback implementation for GenServer.init/1.

set(key, value)

@spec set(config_key(), config_value()) :: :ok

Set a configuration value

set_component(component, key, value)

@spec set_component(atom(), config_key(), config_value()) :: :ok

Set a configuration value for a specific component

start_link(opts \\ [])

unwatch(key, pid)

@spec unwatch(config_key(), pid()) :: :ok

Unwatch configuration changes

update(config_map)

@spec update(config_map()) :: :ok

Update configuration with a map of values

validate(config)

@spec validate(config_map()) :: {:ok, config_map()} | {:error, String.t()}

Validate configuration against schema

watch(key, pid)

@spec watch(config_key(), pid()) :: :ok

Watch for configuration changes