pub struct SupervisorConfig {
pub grace: Duration,
pub max_concurrent: usize,
pub bus_capacity: usize,
pub restart: RestartPolicy,
pub backoff: BackoffPolicy,
pub timeout: Duration,
}Expand description
Global configuration for the supervisor runtime.
Defines:
- Shutdown behavior: grace period for graceful termination
- Concurrency limits: max simultaneous tasks
- Event system: bus capacity for event delivery
- Task defaults: restart policy, backoff strategy, timeout
§Field semantics
grace: Maximum wait for tasks to stop gracefully (0s= no wait, force immediately)max_concurrent: Task concurrency limit (0= unlimited)bus_capacity: Event bus ring buffer size (min 1; clamped by Bus)timeout: Default per-task timeout (0s= no timeout)restart: Default restart policy (can be overridden per-task)backoff: Default backoff strategy (can be overridden per-task)
§Notes
All fields are public for flexibility. Prefer using helper accessors to avoid
sprinkling sentinel checks (0) across the codebase.
Fields§
§grace: DurationMaximum time to wait for graceful shutdown before force-terminating.
When a shutdown signal is received:
- Tasks are cancelled via
CancellationToken - Supervisor waits up to
gracefor tasks to exit - If timeout exceeds, returns
RuntimeError::GraceExceeded
max_concurrent: usizeMaximum number of tasks to run concurrently.
0= unlimited (no semaphore)n > 0= at mostntasks run simultaneously
Applied globally across all tasks in the supervisor.
bus_capacity: usizeCapacity of the event bus broadcast channel ring buffer.
Slow subscribers that lag behind more than bus_capacity messages will
receive Lagged and skip older items. Minimum value is 1 (enforced by Bus).
restart: RestartPolicyDefault restart policy for tasks.
Used by TaskSpec::with_defaults(). Can be overridden per-task.
backoff: BackoffPolicyDefault backoff policy for retries.
Used by TaskSpec::with_defaults(). Can be overridden per-task.
timeout: DurationDefault task timeout.
Duration::ZERO= no timeout (task runs until completion)> 0= timeout applied per task attempt
Used by TaskSpec::with_defaults(). Can be overridden per-task.
Implementations§
Source§impl SupervisorConfig
impl SupervisorConfig
Sourcepub fn concurrency_limit(&self) -> Option<usize>
pub fn concurrency_limit(&self) -> Option<usize>
Returns the global concurrency limit as an Option.
None→ unlimited (no semaphore)Some(n)→ at mostnconcurrent tasks
Sourcepub fn default_timeout(&self) -> Option<Duration>
pub fn default_timeout(&self) -> Option<Duration>
Returns the default per-task timeout as an Option.
None→ no timeoutSome(d)→ timeout applied per attempt
Sourcepub fn bus_capacity_clamped(&self) -> usize
pub fn bus_capacity_clamped(&self) -> usize
Returns a bus capacity clamped to a minimum of 1.
The Bus should use this value to avoid constructing an invalid channel.
Trait Implementations§
Source§impl Clone for SupervisorConfig
impl Clone for SupervisorConfig
Source§fn clone(&self) -> SupervisorConfig
fn clone(&self) -> SupervisorConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SupervisorConfig
impl Debug for SupervisorConfig
Source§impl Default for SupervisorConfig
impl Default for SupervisorConfig
Source§fn default() -> Self
fn default() -> Self
Default configuration:
grace = 60s(reasonable graceful shutdown window)max_concurrent = 0(unlimited)bus_capacity = 1024(good baseline)timeout = 0s(no timeout)restart = RestartPolicy::OnFailure(restart on errors only)backoff = BackoffPolicy::default()(exponential backoff)