use smpp_codec::pdus::{DeliverSmRequest, DeliveryReceipt};
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("=== SMPP Delivery Report Example ===");
let receipt = DeliveryReceipt {
message_id: "1234567890".to_string(),
submitted_count: 1,
delivered_count: 1,
submit_date: "2601312300".to_string(), done_date: "2601312301".to_string(), status: "DELIVRD".to_string(),
error_code: 0,
text: "Hello World".to_string(),
};
println!("Original Receipt: {:?}", receipt);
println!("Formatted Text: {}", receipt.to_string());
let pdu = DeliverSmRequest::new_receipt(
101, "SMSC".to_string(), "SystemId".to_string(), receipt.clone(),
);
println!("\nCreated DeliverSm PDU: {:?}", pdu);
println!("ESM Class (should be 4): {}", pdu.esm_class);
let mut buffer = Vec::new();
pdu.encode(&mut buffer)?;
println!("Encoded PDU size: {} bytes", buffer.len());
let decoded_pdu = DeliverSmRequest::decode(&buffer)?;
println!("\nDecoded PDU: {:?}", decoded_pdu);
if let Some(parsed_receipt) = decoded_pdu.parse_receipt() {
println!("Successfully parsed receipt from PDU:");
println!(" Message ID: {}", parsed_receipt.message_id);
println!(" Status: {}", parsed_receipt.status);
println!(" Done Date: {}", parsed_receipt.done_date);
} else {
println!("Failed to parse receipt from decoded PDU!");
}
Ok(())
}