service_ingest/
service_ingest.rs1#![forbid(unsafe_code)]
2
3use libaprs_engine::{Engine, EngineEvent, 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_event(packet) {
13 EngineEvent::Accepted(event) => {
14 println!(
15 "event={} semantic={}",
16 event.kind().code(),
17 event.packet.summary().semantic
18 );
19 }
20 EngineEvent::Rejected(event) => {
21 println!(
22 "event={} code={} remediation={}",
23 event.kind().code(),
24 event.diagnostic.code,
25 event.diagnostic.remediation
26 );
27 }
28 EngineEvent::Malformed(event) => {
29 println!(
30 "event={} code={} raw_len={} raw_truncated={} remediation={}",
31 event.kind().code(),
32 event.diagnostic.code,
33 event.raw.len(),
34 event.raw_truncated,
35 event.diagnostic.remediation
36 );
37 }
38 }
39 }
40
41 let counters = engine.counters();
42 println!(
43 "summary accepted={} rejected={} malformed={}",
44 counters.accepted, counters.rejected, counters.malformed
45 );
46
47 Ok(())
48}