mirror of
https://github.com/EFForg/rayhunter.git
synced 2026-05-24 08:44:45 -07:00
diag_reader: move error handling outside of trait
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
use wavehunter::debug_file::DebugFileReader;
|
use wavehunter::debug_file::DebugFileReader;
|
||||||
use wavehunter::diag_reader::DiagReader;
|
use wavehunter::diag_reader::DiagReader;
|
||||||
use wavehunter::diag_device::DiagResult;
|
use wavehunter::diag_device::{DiagResult, DiagDeviceError};
|
||||||
use wavehunter::gsmtap_parser::GsmtapParser;
|
use wavehunter::gsmtap_parser::GsmtapParser;
|
||||||
use wavehunter::pcap::PcapFile;
|
use wavehunter::pcap::PcapFile;
|
||||||
|
|
||||||
@@ -21,12 +21,21 @@ fn main() -> DiagResult<()> {
|
|||||||
pcap_file.write_iface_header().unwrap();
|
pcap_file.write_iface_header().unwrap();
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
for msg in debug_reader.read_response()? {
|
match debug_reader.read_response() {
|
||||||
|
Ok(msgs) => {
|
||||||
|
for msg in msgs {
|
||||||
debug!("msg: {:?}", msg);
|
debug!("msg: {:?}", msg);
|
||||||
if let Some((timestamp, gsmtap_msg)) = gsmtap_parser.recv_message(msg).unwrap() {
|
if let Some((timestamp, gsmtap_msg)) = gsmtap_parser.recv_message(msg).unwrap() {
|
||||||
debug!("gsmtap_msg: {:?}", gsmtap_msg);
|
debug!("gsmtap_msg: {:?}", gsmtap_msg);
|
||||||
pcap_file.write_gsmtap_message(gsmtap_msg, timestamp).unwrap();
|
pcap_file.write_gsmtap_message(gsmtap_msg, timestamp).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
Err(DiagDeviceError::IO(err)) if err.kind() == std::io::ErrorKind::UnexpectedEof => {
|
||||||
|
println!("Reached end of debug file, exiting...");
|
||||||
|
std::process::exit(0);
|
||||||
|
},
|
||||||
|
Err(err) => panic!("Error reading debug file {}", err),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use crate::diag::*;
|
|||||||
use deku::prelude::*;
|
use deku::prelude::*;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
use log::{warn, info};
|
use log::warn;
|
||||||
|
|
||||||
#[derive(Debug, DekuRead, DekuWrite)]
|
#[derive(Debug, DekuRead, DekuWrite)]
|
||||||
#[deku(endian = "little")]
|
#[deku(endian = "little")]
|
||||||
@@ -31,13 +31,7 @@ impl DebugFileReader {
|
|||||||
impl DiagReader for DebugFileReader {
|
impl DiagReader for DebugFileReader {
|
||||||
fn get_next_messages_container(&mut self) -> DiagResult<MessagesContainer> {
|
fn get_next_messages_container(&mut self) -> DiagResult<MessagesContainer> {
|
||||||
let mut bytes_read_buf = [0; 4];
|
let mut bytes_read_buf = [0; 4];
|
||||||
if let Err(e) = self.file.read_exact(&mut bytes_read_buf) {
|
self.file.read_exact(&mut bytes_read_buf)?;
|
||||||
if e.kind() == std::io::ErrorKind::UnexpectedEof {
|
|
||||||
info!("reached end of debug file, exiting...");
|
|
||||||
std::process::exit(0);
|
|
||||||
}
|
|
||||||
return Err(e.into());
|
|
||||||
}
|
|
||||||
let bytes_read = u32::from_le_bytes(bytes_read_buf) as usize;
|
let bytes_read = u32::from_le_bytes(bytes_read_buf) as usize;
|
||||||
let mut data = vec![0; bytes_read as usize];
|
let mut data = vec![0; bytes_read as usize];
|
||||||
self.file.read_exact(&mut data)?;
|
self.file.read_exact(&mut data)?;
|
||||||
|
|||||||
Reference in New Issue
Block a user