service_ingest/
service_ingest.rs1#![forbid(unsafe_code)]
2
3use libaprs_engine::{Engine, EngineResult, LineTransport, Policy, MAX_PACKET_LEN};
4
5fn main() -> Result<(), std::io::Error> {
6 let input = b"N0CALL>APRS:>service online\nN1CALL>APRS:~opaque\nbad packet\n";
7 let mut engine = Engine::new(Policy::strict());
8
9 let packets = LineTransport::new(input).packets_with_limit(MAX_PACKET_LEN)?;
10
11 for packet in packets {
12 match engine.process(packet) {
13 EngineResult::Accepted { packet } => {
14 println!("accepted semantic={}", packet.summary().semantic);
15 }
16 EngineResult::Rejected { reason, .. } => {
17 let diagnostic = reason.diagnostic();
18 println!(
19 "rejected code={} remediation={}",
20 diagnostic.code, diagnostic.remediation
21 );
22 }
23 EngineResult::ParseError(error) => {
24 let diagnostic = error.diagnostic();
25 println!(
26 "malformed code={} remediation={}",
27 diagnostic.code, diagnostic.remediation
28 );
29 }
30 }
31 }
32
33 let counters = engine.counters();
34 println!(
35 "summary accepted={} rejected={} malformed={}",
36 counters.accepted, counters.rejected, counters.malformed
37 );
38
39 Ok(())
40}