pub trait CuSinkTask<'cl>: Freezable {
type Input: CuMsgPack<'cl>;
// Required methods
fn new(_config: Option<&ComponentConfig>) -> CuResult<Self>
where Self: Sized;
fn process(
&mut self,
_clock: &RobotClock,
input: Self::Input,
) -> CuResult<()>;
// Provided methods
fn start(&mut self, _clock: &RobotClock) -> CuResult<()> { ... }
fn preprocess(&mut self, _clock: &RobotClock) -> CuResult<()> { ... }
fn postprocess(&mut self, _clock: &RobotClock) -> CuResult<()> { ... }
fn stop(&mut self, _clock: &RobotClock) -> CuResult<()> { ... }
}
Expand description
A Sink Task is a task that only consumes messages. For example drivers for actuators are Sink Tasks.
Required Associated Types§
Required Methods§
Sourcefn new(_config: Option<&ComponentConfig>) -> CuResult<Self>where
Self: Sized,
fn new(_config: Option<&ComponentConfig>) -> CuResult<Self>where
Self: Sized,
Here you need to initialize everything your task will need for the duration of its lifetime. The config allows you to access the configuration of the task.
Provided Methods§
Sourcefn start(&mut self, _clock: &RobotClock) -> CuResult<()>
fn start(&mut self, _clock: &RobotClock) -> CuResult<()>
Start is called between the creation of the task and the first call to pre/process.
Sourcefn preprocess(&mut self, _clock: &RobotClock) -> CuResult<()>
fn preprocess(&mut self, _clock: &RobotClock) -> CuResult<()>
This is a method called by the runtime before “process”. This is a kind of best effort, as soon as possible call to give a chance for the task to do some work before to prepare to make “process” as short as possible.
Sourcefn postprocess(&mut self, _clock: &RobotClock) -> CuResult<()>
fn postprocess(&mut self, _clock: &RobotClock) -> CuResult<()>
This is a method called by the runtime after “process”. It is best effort a chance for the task to update some state after process is out of the way. It can be use for example to maintain statistics etc. that are not time-critical for the robot.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.