sip_header::define_header_enum! {
tests_mod: loopback_variable_generated_tests,
error_type: ParseLoopbackVariableError => "unknown loopback variable",
pub enum LoopbackVariable {
IsLoopback => "is_loopback",
LoopbackLeg => "loopback_leg",
LoopbackFromUuid => "loopback_from_uuid",
OtherLoopbackFromUuid => "other_loopback_from_uuid",
OtherLoopbackLegUuid => "other_loopback_leg_uuid",
OtherLegTrueId => "other_leg_true_id",
LoopbackApp => "loopback_app",
LoopbackAppArg => "loopback_app_arg",
LoopbackHangupCause => "loopback_hangup_cause",
LoopbackBowoutOtherUuid => "loopback_bowout_other_uuid",
LoopbackBowout => "loopback_bowout",
LoopbackBowoutOnExecute => "loopback_bowout_on_execute",
LoopbackExport => "loopback_export",
LoopbackInitialCodec => "loopback_initial_codec",
}
}
wire_enum! {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum LoopbackHangupCause {
Bowout => "bowout",
Bridge => "bridge",
}
error ParseLoopbackHangupCauseError("loopback hangup cause");
tests: loopback_hangup_cause_generated_tests;
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct LoopbackResignation<'a> {
cause_raw: &'a str,
other_uuid: Option<&'a str>,
}
impl<'a> LoopbackResignation<'a> {
pub(crate) fn new(cause_raw: &'a str, other_uuid: Option<&'a str>) -> Self {
Self {
cause_raw,
other_uuid,
}
}
pub fn cause_raw(&self) -> &'a str {
self.cause_raw
}
pub fn cause(&self) -> Result<LoopbackHangupCause, ParseLoopbackHangupCauseError> {
self.cause_raw
.parse()
}
pub fn other_uuid(&self) -> Option<&'a str> {
self.other_uuid
}
}