use rusmpp_macros::Rusmpp;
use crate::{
CommandStatus,
types::owned::COctetString,
values::{npi::Npi, ton::Ton},
};
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Rusmpp)]
#[rusmpp(decode = owned)]
#[cfg_attr(feature = "arbitrary", derive(::arbitrary::Arbitrary))]
#[cfg_attr(feature = "serde", derive(::serde::Serialize))]
#[cfg_attr(feature = "serde-deserialize-unchecked", derive(::serde::Deserialize))]
pub struct UnsuccessSme {
pub dest_addr_ton: Ton,
pub dest_addr_npi: Npi,
pub destination_addr: COctetString<1, 21>,
pub error_status_code: CommandStatus,
}
impl Default for UnsuccessSme {
fn default() -> Self {
Self {
dest_addr_ton: Ton::default(),
dest_addr_npi: Npi::default(),
destination_addr: COctetString::default(),
error_status_code: CommandStatus::EsmeRunknownerr,
}
}
}
impl UnsuccessSme {
pub fn new(
dest_addr_ton: Ton,
dest_addr_npi: Npi,
destination_addr: COctetString<1, 21>,
error_status_code: CommandStatus,
) -> Self {
Self {
dest_addr_ton,
dest_addr_npi,
destination_addr,
error_status_code,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn encode_decode() {
crate::tests::owned::encode_decode_test_instances::<UnsuccessSme>();
}
}