Skip to main content

service_ingest/
service_ingest.rs

1#![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}