pub mod crosstrack;
pub mod debug;
pub mod lifecycle;
use crate::backend::{Backend, CanonicalReq};
pub enum Dispatched {
Native {
canonical_op: &'static str,
native_cmd: String,
decorate: bool,
structured: Option<CanonicalReq>,
},
Immediate(String),
Query(crosstrack::Query),
Lifecycle(lifecycle::Lifecycle),
Fallthrough,
}
pub fn dispatch(input: &str, backend: &dyn Backend) -> Dispatched {
if let Some(d) = lifecycle::try_dispatch(input) {
return d;
}
if let Some(d) = crosstrack::try_dispatch(input) {
return d;
}
debug::dispatch_to(input, backend)
}
pub fn dispatch_no_backend(input: &str) -> Option<Dispatched> {
if let Some(d) = lifecycle::try_dispatch(input) {
return Some(d);
}
if let Some(d) = crosstrack::try_dispatch(input) {
return Some(d);
}
None
}