dope_runtime/process/
terminal.rs1use std::mem;
2
3use crate::{
4 process::{self, failure::bus, runtime::bus::Tx},
5 shutdown,
6};
7
8pub struct Terminal<'run> {
10 pub(in crate::process) source: Tx<'run>,
11}
12
13impl<'run> Terminal<'run> {
14 pub fn fail(&self) -> Result<bus::Event, bus::Fault> {
15 self.source.send(bus::Event::Failed)?;
16 Ok(bus::Event::Failed)
17 }
18
19 pub fn finish(
20 self,
21 result: shutdown::Requested<process::Shutdown<'run>>,
22 ) -> Result<bus::Event, bus::Fault> {
23 self.source.terminal(result)
24 }
25}
26
27const _: () = {
28 assert!(mem::size_of::<shutdown::Requested<process::Shutdown<'static>>>() == 0);
29 assert!(mem::size_of::<Terminal<'static>>() == mem::size_of::<usize>());
30 assert!(mem::align_of::<Terminal<'static>>() == mem::align_of::<usize>());
31 assert!(mem::size_of::<Option<Terminal<'static>>>() == mem::size_of::<usize>());
32};