pub struct AlertNotification {
pub sequence_number: u32,
pub source_addr_ton: Ton,
pub source_addr_npi: Npi,
pub source_addr: String,
pub esme_addr_ton: Ton,
pub esme_addr_npi: Npi,
pub esme_addr: String,
pub optional_params: Vec<Tlv>,
}Expand description
Represents an Alert Notification PDU.
Sent by the SMSC to the ESME to provide information about a message state (e.g., delivered).
Fields§
§sequence_number: u32§source_addr_ton: Ton§source_addr_npi: Npi§source_addr: String§esme_addr_ton: Ton§esme_addr_npi: Npi§esme_addr: String§optional_params: Vec<Tlv>Implementations§
Source§impl AlertNotification
impl AlertNotification
Sourcepub fn new(sequence_number: u32, source_addr: String, esme_addr: String) -> Self
pub fn new(sequence_number: u32, source_addr: String, esme_addr: String) -> Self
Create a new Alert Notification.
§Examples
use smpp_codec::pdus::AlertNotification;
let sequence_number: u32 = 1;
let alert = AlertNotification::new(
sequence_number,
"source_addr".to_string(),
"esme_addr".to_string()
);Examples found in repository?
examples/alert_notification.rs (lines 9-13)
5fn main() {
6 println!("=== SMPP Alert Notification Example ===");
7
8 // 1. Create Alert Notification
9 let mut alert = AlertNotification::new(
10 200, // Sequence number
11 "source_addr".to_string(),
12 "esme_addr".to_string(),
13 )
14 .with_source_addr(Ton::International, Npi::Isdn, "123".to_string())
15 .with_esme_addr(Ton::National, Npi::Telex, "456".to_string());
16
17 // 2. Add optional TLV (e.g., ms_availability_status)
18 // Tag 0x0402 is ms_availability_status
19 let tlv = Tlv::new_u8(0x0402, 1); // 1 = Available
20 alert.add_tlv(tlv);
21
22 println!("Alert Notification: {:?}", alert);
23
24 // 3. Encode
25 let mut buf = Vec::new();
26 alert.encode(&mut buf).unwrap();
27 println!("Encoded {} bytes", buf.len());
28}Sourcepub fn with_source_addr(self, ton: Ton, npi: Npi, addr: String) -> Self
pub fn with_source_addr(self, ton: Ton, npi: Npi, addr: String) -> Self
Examples found in repository?
examples/alert_notification.rs (line 14)
5fn main() {
6 println!("=== SMPP Alert Notification Example ===");
7
8 // 1. Create Alert Notification
9 let mut alert = AlertNotification::new(
10 200, // Sequence number
11 "source_addr".to_string(),
12 "esme_addr".to_string(),
13 )
14 .with_source_addr(Ton::International, Npi::Isdn, "123".to_string())
15 .with_esme_addr(Ton::National, Npi::Telex, "456".to_string());
16
17 // 2. Add optional TLV (e.g., ms_availability_status)
18 // Tag 0x0402 is ms_availability_status
19 let tlv = Tlv::new_u8(0x0402, 1); // 1 = Available
20 alert.add_tlv(tlv);
21
22 println!("Alert Notification: {:?}", alert);
23
24 // 3. Encode
25 let mut buf = Vec::new();
26 alert.encode(&mut buf).unwrap();
27 println!("Encoded {} bytes", buf.len());
28}Sourcepub fn with_esme_addr(self, ton: Ton, npi: Npi, addr: String) -> Self
pub fn with_esme_addr(self, ton: Ton, npi: Npi, addr: String) -> Self
Examples found in repository?
examples/alert_notification.rs (line 15)
5fn main() {
6 println!("=== SMPP Alert Notification Example ===");
7
8 // 1. Create Alert Notification
9 let mut alert = AlertNotification::new(
10 200, // Sequence number
11 "source_addr".to_string(),
12 "esme_addr".to_string(),
13 )
14 .with_source_addr(Ton::International, Npi::Isdn, "123".to_string())
15 .with_esme_addr(Ton::National, Npi::Telex, "456".to_string());
16
17 // 2. Add optional TLV (e.g., ms_availability_status)
18 // Tag 0x0402 is ms_availability_status
19 let tlv = Tlv::new_u8(0x0402, 1); // 1 = Available
20 alert.add_tlv(tlv);
21
22 println!("Alert Notification: {:?}", alert);
23
24 // 3. Encode
25 let mut buf = Vec::new();
26 alert.encode(&mut buf).unwrap();
27 println!("Encoded {} bytes", buf.len());
28}Sourcepub fn add_tlv(&mut self, tlv: Tlv)
pub fn add_tlv(&mut self, tlv: Tlv)
Add a generic TLV
Examples found in repository?
examples/alert_notification.rs (line 20)
5fn main() {
6 println!("=== SMPP Alert Notification Example ===");
7
8 // 1. Create Alert Notification
9 let mut alert = AlertNotification::new(
10 200, // Sequence number
11 "source_addr".to_string(),
12 "esme_addr".to_string(),
13 )
14 .with_source_addr(Ton::International, Npi::Isdn, "123".to_string())
15 .with_esme_addr(Ton::National, Npi::Telex, "456".to_string());
16
17 // 2. Add optional TLV (e.g., ms_availability_status)
18 // Tag 0x0402 is ms_availability_status
19 let tlv = Tlv::new_u8(0x0402, 1); // 1 = Available
20 alert.add_tlv(tlv);
21
22 println!("Alert Notification: {:?}", alert);
23
24 // 3. Encode
25 let mut buf = Vec::new();
26 alert.encode(&mut buf).unwrap();
27 println!("Encoded {} bytes", buf.len());
28}Sourcepub fn encode(&self, writer: &mut impl Write) -> Result<(), PduError>
pub fn encode(&self, writer: &mut impl Write) -> Result<(), PduError>
Encode the struct into raw bytes for the network.
§Errors
Returns a PduError if:
source_addrexceeds 65 characters.esme_addrexceeds 65 characters.- An I/O error occurs while writing.
§Examples
let mut buffer = Vec::new();
alert.encode(&mut buffer).expect("Encoding failed");Examples found in repository?
examples/alert_notification.rs (line 26)
5fn main() {
6 println!("=== SMPP Alert Notification Example ===");
7
8 // 1. Create Alert Notification
9 let mut alert = AlertNotification::new(
10 200, // Sequence number
11 "source_addr".to_string(),
12 "esme_addr".to_string(),
13 )
14 .with_source_addr(Ton::International, Npi::Isdn, "123".to_string())
15 .with_esme_addr(Ton::National, Npi::Telex, "456".to_string());
16
17 // 2. Add optional TLV (e.g., ms_availability_status)
18 // Tag 0x0402 is ms_availability_status
19 let tlv = Tlv::new_u8(0x0402, 1); // 1 = Available
20 alert.add_tlv(tlv);
21
22 println!("Alert Notification: {:?}", alert);
23
24 // 3. Encode
25 let mut buf = Vec::new();
26 alert.encode(&mut buf).unwrap();
27 println!("Encoded {} bytes", buf.len());
28}Trait Implementations§
Source§impl Clone for AlertNotification
impl Clone for AlertNotification
Source§fn clone(&self) -> AlertNotification
fn clone(&self) -> AlertNotification
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for AlertNotification
impl RefUnwindSafe for AlertNotification
impl Send for AlertNotification
impl Sync for AlertNotification
impl Unpin for AlertNotification
impl UnwindSafe for AlertNotification
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