[][src]Trait abscissa_core::component::Component

pub trait Component<A>: Debug + Send + Sync where
    A: Application
{ fn name(&self) -> Name;
fn version(&self) -> Version; fn dependencies(&self) -> Iter<Name> { ... }
fn after_config(&mut self, config: &A::Cfg) -> Result<(), FrameworkError> { ... }
fn before_shutdown(&self, kind: Shutdown) -> Result<(), FrameworkError> { ... } }

Application components.

Components are Abscissa's primary extension mechanism, and are aware of the application lifecycle. They are owned by the application as boxed trait objects in a runtime type registry which is aware of a dependency ordering and can (potentially in the future) support runtime reinitialization.

During application initialization, callbacks are sent to all components upon events like application configuration being loaded.

Additionally, they receive a callback prior to application shutdown.

Required methods

fn name(&self) -> Name

Name of this component

fn version(&self) -> Version

Version of this component

Loading content...

Provided methods

fn dependencies(&self) -> Iter<Name>

Names of the components this components depends on

fn after_config(&mut self, config: &A::Cfg) -> Result<(), FrameworkError>

Lifecycle event called when application configuration should be loaded if it were possible.

fn before_shutdown(&self, kind: Shutdown) -> Result<(), FrameworkError>

Perform any tasks which should occur before the app exits

Loading content...

Implementors

impl<A> Component<A> for LoggingComponent where
    A: Application
[src]

fn name(&self) -> Name[src]

Name of this component

fn version(&self) -> Version[src]

Version of this component

fn after_config(&mut self, _config: &A::Cfg) -> Result<(), FrameworkError>[src]

Initialize this component at the time the framework boots

impl<A> Component<A> for TerminalComponent where
    A: Application
[src]

fn name(&self) -> Name[src]

Name of this component

fn version(&self) -> Version[src]

Version of this component

fn after_config(&mut self, _config: &A::Cfg) -> Result<(), FrameworkError>[src]

Initialize this component at the time the framework boots

Loading content...