pub struct LineTransport<'a> { /* private fields */ }Expand description
Line-oriented packet source for file/stdin style transports.
Implementations§
Source§impl<'a> LineTransport<'a>
impl<'a> LineTransport<'a>
Sourcepub fn new(input: &'a [u8]) -> Self
pub fn new(input: &'a [u8]) -> Self
Creates a transport over newline-separated packet bytes.
Examples found in repository?
examples/process_file.rs (line 16)
7fn main() -> std::io::Result<()> {
8 let Some(path) = std::env::args().nth(1) else {
9 eprintln!("usage: process_file <packets.aprs>");
10 std::process::exit(2);
11 };
12
13 let input = read_all_with_limit(File::open(path)?, DEFAULT_TRANSPORT_READ_LIMIT)?;
14 let mut engine = Engine::new(Policy::strict());
15
16 for packet_bytes in LineTransport::new(&input).packets() {
17 match engine.process(packet_bytes) {
18 EngineResult::Accepted { packet } => println!("{}", packet.to_json()),
19 EngineResult::Rejected { reason, .. } => eprintln!("rejected: {}", reason.code()),
20 EngineResult::ParseError(error) => eprintln!("malformed: {}", error.code()),
21 }
22 }
23
24 Ok(())
25}Sourcepub fn packets(&self) -> Vec<&'a [u8]>
pub fn packets(&self) -> Vec<&'a [u8]>
Iterates packet lines without trailing CR/LF bytes.
Examples found in repository?
examples/process_file.rs (line 16)
7fn main() -> std::io::Result<()> {
8 let Some(path) = std::env::args().nth(1) else {
9 eprintln!("usage: process_file <packets.aprs>");
10 std::process::exit(2);
11 };
12
13 let input = read_all_with_limit(File::open(path)?, DEFAULT_TRANSPORT_READ_LIMIT)?;
14 let mut engine = Engine::new(Policy::strict());
15
16 for packet_bytes in LineTransport::new(&input).packets() {
17 match engine.process(packet_bytes) {
18 EngineResult::Accepted { packet } => println!("{}", packet.to_json()),
19 EngineResult::Rejected { reason, .. } => eprintln!("rejected: {}", reason.code()),
20 EngineResult::ParseError(error) => eprintln!("malformed: {}", error.code()),
21 }
22 }
23
24 Ok(())
25}Trait Implementations§
Source§impl<'a> Clone for LineTransport<'a>
impl<'a> Clone for LineTransport<'a>
Source§fn clone(&self) -> LineTransport<'a>
fn clone(&self) -> LineTransport<'a>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<'a> Debug for LineTransport<'a>
impl<'a> Debug for LineTransport<'a>
Source§impl PacketSource for LineTransport<'_>
impl PacketSource for LineTransport<'_>
Source§impl<'a> PartialEq for LineTransport<'a>
impl<'a> PartialEq for LineTransport<'a>
Source§fn eq(&self, other: &LineTransport<'a>) -> bool
fn eq(&self, other: &LineTransport<'a>) -> bool
Tests for
self and other values to be equal, and is used by ==.impl<'a> Eq for LineTransport<'a>
impl<'a> StructuralPartialEq for LineTransport<'a>
Auto Trait Implementations§
impl<'a> Freeze for LineTransport<'a>
impl<'a> RefUnwindSafe for LineTransport<'a>
impl<'a> Send for LineTransport<'a>
impl<'a> Sync for LineTransport<'a>
impl<'a> Unpin for LineTransport<'a>
impl<'a> UnsafeUnpin for LineTransport<'a>
impl<'a> UnwindSafe for LineTransport<'a>
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