use thiserror::Error;
use crate::composition::SchedulerCompositionError;
#[derive(Debug, Error)]
pub enum RuntimeError {
#[error("runtime policy declares zero scheduler threads; state a positive thread count")]
ZeroSchedulerThreads,
#[error("runtime policy declares a zero operation timeout; state a positive deadline")]
ZeroOperationTimeout,
#[error("scheduler composition failed")]
Composition {
#[source]
source: SchedulerCompositionError,
},
#[error("support module load failed: {detail}")]
SupportModuleLoad {
detail: String,
},
#[error("support module {module} was absent immediately after hot load")]
SupportModuleAbsent {
module: String,
},
#[error("support module {module} left erlang:* imports deferred: {imports}")]
SupportModuleDeferredBifImports {
module: String,
imports: String,
},
#[error("failed to purge support module {module}: {detail}")]
SupportModulePurge {
module: String,
detail: String,
},
#[error("failed to delete support module {module} during unload")]
SupportModuleDelete {
module: String,
},
#[error("support module {module} remained loaded after unload")]
SupportModuleStillLoaded {
module: String,
},
#[error("shutdown refused: {count} live scheduler process(es) remain after ordered stop")]
ProcessResidue {
count: usize,
},
#[error(
"mailbox reserved bound {reserved_below} is outside the valid domain 0..={max}; \
no mailbox integer can be derived above it"
)]
MailboxReservedRangeInvalid {
reserved_below: i64,
max: i64,
},
}