diameter_interface/modeling/message/
application_id.rs1use crate::errors::Error;
2use crate::errors::Error::DecodeError;
3
4#[derive(Debug)]
5pub enum ApplicationId {
6 Common,
7 Accounting,
8 CreditControl,
9 Gx,
10 Rx,
11 Sy,
12}
13
14impl ApplicationId {
15 pub fn value(&self) -> u32 {
16 match self {
17 ApplicationId::Common => 0,
18 ApplicationId::Accounting => 3,
19 ApplicationId::CreditControl => 4,
20 ApplicationId::Rx => 16777236,
21 ApplicationId::Gx => 16777238,
22 ApplicationId::Sy => 16777302,
23 }
24 }
25}
26
27impl ApplicationId {
28 pub fn get_code(&self) -> u32 {
29 match self {
30 ApplicationId::Common => 0,
31 ApplicationId::Accounting => 3,
32 ApplicationId::CreditControl => 4,
33 ApplicationId::Rx => 16777236,
34 ApplicationId::Gx => 16777238,
35 ApplicationId::Sy => 16777302,
36 }
37 }
38}
39
40impl TryFrom<u32> for ApplicationId {
41 type Error = Error;
42
43 fn try_from(value: u32) -> Result<Self, Self::Error> {
44 match value {
45 0 => Ok(ApplicationId::Common),
46 3 => Ok(ApplicationId::Accounting),
47 4 => Ok(ApplicationId::CreditControl),
48 16777236 => Ok(ApplicationId::Rx),
49 16777238 => Ok(ApplicationId::Gx),
50 16777302 => Ok(ApplicationId::Sy),
51 _ => Err(DecodeError("Undefined application id"))?,
52 }
53 }
54}