use crate::host::HostHandlers;
use crate::process::ProcessingStartError;
use core::fmt;
use core::fmt::{Debug, Display, Formatter};
use std::error::Error;
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum PluginInstanceError {
StartProcessingFailed,
AlreadyActivatedPlugin,
StillActivatedPlugin,
DeactivatedPlugin,
ActivationFailed,
PluginNotFound,
MissingPluginFactory,
InstantiationFailed,
PluginDestroyed,
ProcessingFailed,
ProcessingStopped,
ProcessingStarted,
NullFactoryCreatePluginFunction,
NullProcessFunction,
NullActivateFunction,
}
impl PluginInstanceError {
pub(crate) fn msg(&self) -> &'static str {
match self {
Self::StartProcessingFailed => "Could not start processing",
Self::AlreadyActivatedPlugin => "Plugin was already activated",
Self::StillActivatedPlugin => {
"Attempted to deactivate Plugin which still has an active AudioProcessor"
}
Self::DeactivatedPlugin => "Plugin is currently deactivated",
Self::ActivationFailed => "Unable to activate",
Self::PluginNotFound => "Specified plugin was not found",
Self::MissingPluginFactory => "No plugin factory was provided",
Self::InstantiationFailed => "Could not instantiate",
Self::PluginDestroyed => "Plugin was destroyed",
Self::ProcessingFailed => "Could not process",
Self::ProcessingStopped => "Audio Processor is currently stopped",
Self::ProcessingStarted => "Audio Processor is currently started",
Self::NullProcessFunction => "Plugin's process function is null",
Self::NullActivateFunction => "Plugin's activate function is null",
Self::NullFactoryCreatePluginFunction => {
"Plugin Factory's create_plugin function is null"
}
}
}
}
impl Display for PluginInstanceError {
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
f.write_str(self.msg())
}
}
impl Error for PluginInstanceError {}
impl<H: HostHandlers> From<ProcessingStartError<H>> for PluginInstanceError {
#[inline]
fn from(_: ProcessingStartError<H>) -> Self {
Self::StartProcessingFailed
}
}