use {std, vec_map};
use macro_machines::def_machine_nodefault;
use crate::{channel, process, session};
def_machine_nodefault! {
Inner <CTX : { session::Context }> (
def : process::Def <CTX>,
session_handle : session::Handle <CTX>,
sourcepoints : vec_map::VecMap <Box <dyn channel::Sourcepoint <CTX>>>,
endpoints : std::cell::RefCell <Option <
vec_map::VecMap <Box <dyn channel::Endpoint <CTX>>>>>
) @ _inner {
STATES [
state Ready ()
state Running ()
state Ended ()
]
EVENTS [
event Run <Ready> => <Running> ()
event End <Running> => <Ended> ()
]
initial_state: Ready
terminal_state: Ended {
terminate_failure: {
panic!("process dropped in state: {:?}", _inner.state().id());
}
}
}
}