pub struct Engine { /* private fields */ }Expand description
Parser and policy orchestration engine.
Implementations§
Source§impl Engine
impl Engine
Sourcepub fn new(policy: Policy) -> Self
pub fn new(policy: Policy) -> Self
Creates an engine with the provided policy.
Examples found in repository?
examples/process_file.rs (line 14)
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 process(&mut self, input: &[u8]) -> EngineResult
pub fn process(&mut self, input: &[u8]) -> EngineResult
Processes one packet through codec, semantics, and policy.
Examples found in repository?
examples/process_file.rs (line 17)
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 process_packets<I, P>(&mut self, packets: I) -> Vec<EngineResult>
pub fn process_packets<I, P>(&mut self, packets: I) -> Vec<EngineResult>
Processes a caller-provided packet batch in order.
Sourcepub fn process_source<S>(
&mut self,
source: &mut S,
) -> Result<Vec<EngineResult>, S::Error>where
S: PacketSource,
pub fn process_source<S>(
&mut self,
source: &mut S,
) -> Result<Vec<EngineResult>, S::Error>where
S: PacketSource,
Reads one bounded batch from a packet source and processes it in order.
Trait Implementations§
impl Eq for Engine
impl StructuralPartialEq for Engine
Auto Trait Implementations§
impl Freeze for Engine
impl RefUnwindSafe for Engine
impl Send for Engine
impl Sync for Engine
impl Unpin for Engine
impl UnsafeUnpin for Engine
impl UnwindSafe for Engine
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