pub struct DiameterClient { /* private fields */ }Implementations§
Source§impl DiameterClient
impl DiameterClient
Sourcepub fn new(address: &'static str) -> Self
pub fn new(address: &'static str) -> Self
Examples found in repository?
example/client.rs (line 54)
17fn main() -> DiameterResult<()> {
18 let dict = Arc::new(Dictionary::new(&[&dictionary::DEFAULT_DICT_XML]));
19
20 let mut ccr: DiameterMessage = DiameterMessage::new(
21 CommandFlag::Request,
22 CommandCode::CreditControl,
23 ApplicationId::Gx,
24 1123158611,
25 3102381851,
26 );
27
28 ccr.add(Avp::new(263, M, None, UTF8String::from_str("a")));
29 ccr.add_avp(264, M, None, Identity::from_str("host.example.com"));
30 ccr.add(Avp::new(
31 296,
32 M,
33 None,
34 Identity::from_str("realm.example.com"),
35 ));
36 ccr.add(Avp::new(263, M, None, UTF8String::from_str("ses;12345888")));
37 ccr.add(Avp::new(416, M, None, Enumerated::new(1)));
38 ccr.add(Avp::new(415, M, None, Unsigned32::new(1000)));
39 ccr.add(Avp::new(
40 264,
41 M,
42 None,
43 Identity::from_str("host.example.com"),
44 ));
45 ccr.add(Avp::new(
46 296,
47 M,
48 None,
49 Identity::from_str("realm.example.com"),
50 ));
51 ccr.add(Avp::new(416, M, None, Enumerated::new(1)));
52 ccr.add(Avp::new(415, M, None, Unsigned32::new(1000)));
53
54 let mut client = DiameterClient::new("127.0.0.1:3868");
55 client.connect()?;
56 let cca: DiameterMessage = client.send_message(&mut ccr, dict)?;
57 let avp = match cca.get_avp(268) {
58 Some(avp) => {
59 match avp.get_value() {
60 AvpValue::Unsigned32(value) => {
61 if *value.value() != 2001 {
62 println!("invalid response status");
63 } else {
64 println!("success response status {}", value.value());
65 }
66 },
67 _ => {
68
69 }
70 }
71 },
72 None => Err(ClientError("avp 268 not found"))?
73 };
74 client.close()?;
75 println!("{:?}", cca);
76 Ok(())
77}Sourcepub fn connect(&mut self) -> DiameterResult<()>
pub fn connect(&mut self) -> DiameterResult<()>
Examples found in repository?
example/client.rs (line 55)
17fn main() -> DiameterResult<()> {
18 let dict = Arc::new(Dictionary::new(&[&dictionary::DEFAULT_DICT_XML]));
19
20 let mut ccr: DiameterMessage = DiameterMessage::new(
21 CommandFlag::Request,
22 CommandCode::CreditControl,
23 ApplicationId::Gx,
24 1123158611,
25 3102381851,
26 );
27
28 ccr.add(Avp::new(263, M, None, UTF8String::from_str("a")));
29 ccr.add_avp(264, M, None, Identity::from_str("host.example.com"));
30 ccr.add(Avp::new(
31 296,
32 M,
33 None,
34 Identity::from_str("realm.example.com"),
35 ));
36 ccr.add(Avp::new(263, M, None, UTF8String::from_str("ses;12345888")));
37 ccr.add(Avp::new(416, M, None, Enumerated::new(1)));
38 ccr.add(Avp::new(415, M, None, Unsigned32::new(1000)));
39 ccr.add(Avp::new(
40 264,
41 M,
42 None,
43 Identity::from_str("host.example.com"),
44 ));
45 ccr.add(Avp::new(
46 296,
47 M,
48 None,
49 Identity::from_str("realm.example.com"),
50 ));
51 ccr.add(Avp::new(416, M, None, Enumerated::new(1)));
52 ccr.add(Avp::new(415, M, None, Unsigned32::new(1000)));
53
54 let mut client = DiameterClient::new("127.0.0.1:3868");
55 client.connect()?;
56 let cca: DiameterMessage = client.send_message(&mut ccr, dict)?;
57 let avp = match cca.get_avp(268) {
58 Some(avp) => {
59 match avp.get_value() {
60 AvpValue::Unsigned32(value) => {
61 if *value.value() != 2001 {
62 println!("invalid response status");
63 } else {
64 println!("success response status {}", value.value());
65 }
66 },
67 _ => {
68
69 }
70 }
71 },
72 None => Err(ClientError("avp 268 not found"))?
73 };
74 client.close()?;
75 println!("{:?}", cca);
76 Ok(())
77}Sourcepub fn close(&mut self) -> DiameterResult<()>
pub fn close(&mut self) -> DiameterResult<()>
Examples found in repository?
example/client.rs (line 74)
17fn main() -> DiameterResult<()> {
18 let dict = Arc::new(Dictionary::new(&[&dictionary::DEFAULT_DICT_XML]));
19
20 let mut ccr: DiameterMessage = DiameterMessage::new(
21 CommandFlag::Request,
22 CommandCode::CreditControl,
23 ApplicationId::Gx,
24 1123158611,
25 3102381851,
26 );
27
28 ccr.add(Avp::new(263, M, None, UTF8String::from_str("a")));
29 ccr.add_avp(264, M, None, Identity::from_str("host.example.com"));
30 ccr.add(Avp::new(
31 296,
32 M,
33 None,
34 Identity::from_str("realm.example.com"),
35 ));
36 ccr.add(Avp::new(263, M, None, UTF8String::from_str("ses;12345888")));
37 ccr.add(Avp::new(416, M, None, Enumerated::new(1)));
38 ccr.add(Avp::new(415, M, None, Unsigned32::new(1000)));
39 ccr.add(Avp::new(
40 264,
41 M,
42 None,
43 Identity::from_str("host.example.com"),
44 ));
45 ccr.add(Avp::new(
46 296,
47 M,
48 None,
49 Identity::from_str("realm.example.com"),
50 ));
51 ccr.add(Avp::new(416, M, None, Enumerated::new(1)));
52 ccr.add(Avp::new(415, M, None, Unsigned32::new(1000)));
53
54 let mut client = DiameterClient::new("127.0.0.1:3868");
55 client.connect()?;
56 let cca: DiameterMessage = client.send_message(&mut ccr, dict)?;
57 let avp = match cca.get_avp(268) {
58 Some(avp) => {
59 match avp.get_value() {
60 AvpValue::Unsigned32(value) => {
61 if *value.value() != 2001 {
62 println!("invalid response status");
63 } else {
64 println!("success response status {}", value.value());
65 }
66 },
67 _ => {
68
69 }
70 }
71 },
72 None => Err(ClientError("avp 268 not found"))?
73 };
74 client.close()?;
75 println!("{:?}", cca);
76 Ok(())
77}Sourcepub fn send_message(
&mut self,
message: &mut DiameterMessage,
dict: Arc<Dictionary>,
) -> DiameterResult<DiameterMessage>
pub fn send_message( &mut self, message: &mut DiameterMessage, dict: Arc<Dictionary>, ) -> DiameterResult<DiameterMessage>
Examples found in repository?
example/client.rs (line 56)
17fn main() -> DiameterResult<()> {
18 let dict = Arc::new(Dictionary::new(&[&dictionary::DEFAULT_DICT_XML]));
19
20 let mut ccr: DiameterMessage = DiameterMessage::new(
21 CommandFlag::Request,
22 CommandCode::CreditControl,
23 ApplicationId::Gx,
24 1123158611,
25 3102381851,
26 );
27
28 ccr.add(Avp::new(263, M, None, UTF8String::from_str("a")));
29 ccr.add_avp(264, M, None, Identity::from_str("host.example.com"));
30 ccr.add(Avp::new(
31 296,
32 M,
33 None,
34 Identity::from_str("realm.example.com"),
35 ));
36 ccr.add(Avp::new(263, M, None, UTF8String::from_str("ses;12345888")));
37 ccr.add(Avp::new(416, M, None, Enumerated::new(1)));
38 ccr.add(Avp::new(415, M, None, Unsigned32::new(1000)));
39 ccr.add(Avp::new(
40 264,
41 M,
42 None,
43 Identity::from_str("host.example.com"),
44 ));
45 ccr.add(Avp::new(
46 296,
47 M,
48 None,
49 Identity::from_str("realm.example.com"),
50 ));
51 ccr.add(Avp::new(416, M, None, Enumerated::new(1)));
52 ccr.add(Avp::new(415, M, None, Unsigned32::new(1000)));
53
54 let mut client = DiameterClient::new("127.0.0.1:3868");
55 client.connect()?;
56 let cca: DiameterMessage = client.send_message(&mut ccr, dict)?;
57 let avp = match cca.get_avp(268) {
58 Some(avp) => {
59 match avp.get_value() {
60 AvpValue::Unsigned32(value) => {
61 if *value.value() != 2001 {
62 println!("invalid response status");
63 } else {
64 println!("success response status {}", value.value());
65 }
66 },
67 _ => {
68
69 }
70 }
71 },
72 None => Err(ClientError("avp 268 not found"))?
73 };
74 client.close()?;
75 println!("{:?}", cca);
76 Ok(())
77}Auto Trait Implementations§
impl Freeze for DiameterClient
impl RefUnwindSafe for DiameterClient
impl Send for DiameterClient
impl Sync for DiameterClient
impl Unpin for DiameterClient
impl UnsafeUnpin for DiameterClient
impl UnwindSafe for DiameterClient
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more