Trait casper_node::components::Component [−][src]
pub trait Component<REv> {
type Event;
type ConstructionError;
fn handle_event(
&mut self,
effect_builder: EffectBuilder<REv>,
rng: &mut NodeRng,
event: Self::Event
) -> Effects<Self::Event>;
}Expand description
Core Component.
Its inputs are Events, allowing it to
perform work whenever an event is received, outputting Effects each time it is called.
Error and halting states
Components in general are expected to be able to handle every input (Event) in every state.
Invalid inputs are supposed to be discarded, and the machine is expected to recover from any
recoverable error states by itself.
If a fatal error occurs that is not recoverable, the reactor should be notified instead.
Component events and reactor events
Each component has two events related to it: An associated Event and a reactor event (REv).
The Event type indicates what type of event a component accepts, these are typically event
types specific to the component.
Components place restrictions on reactor events (REvs), indicating what kind of effects they
need to be able to produce to operate.
Associated Types
Error emitted when constructing the component.
Required methods
fn handle_event(
&mut self,
effect_builder: EffectBuilder<REv>,
rng: &mut NodeRng,
event: Self::Event
) -> Effects<Self::Event>
fn handle_event(
&mut self,
effect_builder: EffectBuilder<REv>,
rng: &mut NodeRng,
event: Self::Event
) -> Effects<Self::Event>Processes an event, outputting zero or more effects.
This function must not ever perform any blocking or CPU intensive work, as it is expected to return very quickly.