From 34c6343d632315cf968eddfcd4e206bc84a866ae Mon Sep 17 00:00:00 2001 From: Bastian Gruber Date: Mon, 22 May 2023 10:10:57 +0200 Subject: [PATCH] Improve logging --- problem_06/src/connection.rs | 4 ---- problem_06/src/db.rs | 9 ++------- problem_06/src/frame.rs | 8 -------- problem_06/src/server.rs | 18 ++---------------- problem_06/src/ticketing.rs | 23 ++++++----------------- 5 files changed, 10 insertions(+), 52 deletions(-) diff --git a/problem_06/src/connection.rs b/problem_06/src/connection.rs index 750e12a..4267a6f 100644 --- a/problem_06/src/connection.rs +++ b/problem_06/src/connection.rs @@ -5,7 +5,6 @@ use tokio::{ io::{AsyncReadExt, AsyncWriteExt, BufWriter}, net::TcpStream, }; -use tracing::info; use crate::frame::{self, ClientFrames, ServerFrames}; @@ -35,11 +34,8 @@ impl Connection { } pub async fn read_frame(&mut self) -> crate::Result> { - info!("Start read_frame"); loop { - info!("Looping to self.parse_frame"); if let Some(frame) = self.parse_frame()? { - info!("parse_frame got a result: {frame:?}"); return Ok(Some(frame)); } diff --git a/problem_06/src/db.rs b/problem_06/src/db.rs index 17551ac..dd1fd2f 100644 --- a/problem_06/src/db.rs +++ b/problem_06/src/db.rs @@ -5,7 +5,7 @@ use std::{ }; use tokio::sync::mpsc; -use tracing::{debug, info}; +use tracing::info; use crate::frame::ServerFrames; @@ -115,7 +115,6 @@ impl Db { } pub(crate) fn add_camera(&self, camera_id: CameraId, camera: Camera) { - info!("Add new camera: {camera:?}"); let mut state = self.state.lock().unwrap(); state.cameras.insert(camera_id, camera); } @@ -126,7 +125,7 @@ impl Db { roads: Vec, writer_stream: mpsc::Sender, ) { - info!("Add new dispatcher: {roads:?}"); + info!("Adding new dispatcher for raods: {roads:?}"); let mut state = self.state.lock().unwrap(); for r in roads.iter() { @@ -149,7 +148,6 @@ impl Db { } pub(crate) fn add_open_ticket(&self, ticket: Ticket) { - info!("Add open ticket: {ticket:?}"); let mut state = self.state.lock().unwrap(); state .open_tickets @@ -181,13 +179,11 @@ impl Db { road: Road, ) -> Option> { let state = self.state.lock().unwrap(); - debug!(?state); state.plates.get(&(plate.plate, road)).cloned() } pub(crate) fn add_plate(&self, camera_id: CameraId, plate: Plate) { //TODO: Check if the same plate was already added for the road AND MILE - info!("Add car: {plate:?}"); let camera = self.get_camera(camera_id).unwrap(); let mut state = self.state.lock().unwrap(); @@ -206,7 +202,6 @@ impl Db { } pub(crate) fn ticket_plate(&self, day: u32, plate_name: PlateName) { - info!("Add ticket for day: {day}:{}", plate_name.0); let mut state = self.state.lock().unwrap(); state .ticketed_plates_by_day diff --git a/problem_06/src/frame.rs b/problem_06/src/frame.rs index ba504f3..ed206f6 100644 --- a/problem_06/src/frame.rs +++ b/problem_06/src/frame.rs @@ -1,7 +1,6 @@ use std::{fmt, io::Cursor, num::TryFromIntError, string::FromUtf8Error}; use bytes::{Buf, BufMut, BytesMut}; -use tracing::info; #[derive(Clone, Debug)] pub enum ClientFrames { @@ -36,7 +35,6 @@ pub enum Error { impl ClientFrames { pub fn check(src: &mut Cursor<&[u8]>) -> Result<(), Error> { - info!("Checking message: {src:?}"); match get_u8(src)? { // Error: msg: str (Server -> Client) // 0x10 => { @@ -78,10 +76,8 @@ impl ClientFrames { } // IAmDispatcher: numroads: u8, roads: [u16] 0x81 => { - info!("Checking IAmDispatcher message: {src:?}"); // numroads let amount = get_u8(src)? * 2; - info!("amount of roads: {amount:?}"); // roads skip(src, amount as usize)?; Ok(()) @@ -223,10 +219,6 @@ fn get_u16_vec<'a>(src: &mut Cursor<&'a [u8]>, len: usize) -> Result, E } fn skip(src: &mut Cursor<&[u8]>, n: usize) -> Result<(), Error> { - info!( - "Bytes left: src: {src:?}: n: {n}, remaining: {}", - src.remaining() - ); if src.remaining() < n { return Err(Error::Incomplete); } diff --git a/problem_06/src/server.rs b/problem_06/src/server.rs index 6e81c56..415c9fc 100644 --- a/problem_06/src/server.rs +++ b/problem_06/src/server.rs @@ -5,7 +5,7 @@ use tokio::{ sync::{broadcast, mpsc, Semaphore}, time::{self, Duration}, }; -use tracing::{debug, error, info}; +use tracing::error; use crate::{ connection::ConnectionType, @@ -56,7 +56,7 @@ pub async fn run(listener: TcpListener, shutdown: impl Future) -> crate::Result< } } _ = shutdown => { - info!("shutting down"); + // Shutdown signal received } } @@ -76,8 +76,6 @@ pub async fn run(listener: TcpListener, shutdown: impl Future) -> crate::Result< impl Listener { async fn run(&mut self) -> crate::Result<()> { - info!("accepting inbound connections"); - loop { let permit = self .limit_connections @@ -97,8 +95,6 @@ impl Listener { _shutdown_complete: self.shutdown_complete_tx.clone(), }; - info!("Created new handler"); - tokio::spawn(async move { if let Err(err) = handler.run().await { error!(cause = ?err, "connection error"); @@ -138,10 +134,8 @@ impl Handler { while !self.shutdown.is_shutdown() { tokio::select! { res = self.connection.read_frame() => { - info!("Reading from frame: {res:?}"); match res? { Some(frame) => { - info!("Received frame"); if let Err(e) = self.handle_client_frame(self.db.clone(), frame, send_message.clone()).await { error!("Error handling frame: {e:?}"); } @@ -150,7 +144,6 @@ impl Handler { } } message = receive_message.recv() => { - info!("Reading from channel: {message:?}"); match message { Some(message) => { let _ = self.connection.write_frame(message).await; @@ -159,7 +152,6 @@ impl Handler { } } _ = self.shutdown.recv() => { - debug!("Shutdown"); return Ok(()); } }; @@ -185,10 +177,8 @@ impl Handler { frame: ClientFrames, send_message: mpsc::Sender, ) -> crate::Result<()> { - debug!(?frame); match frame { ClientFrames::Plate { plate, timestamp } => { - info!("Receive new plate {plate} {timestamp}"); issue_possible_ticket( &mut db, Plate { @@ -200,7 +190,6 @@ impl Handler { .await; } ClientFrames::WantHeartbeat { interval } => { - info!("Receive hearbet request with interval {interval}"); if interval > 0 { tokio::spawn(async move { let mut heartbeat = Heartbeat::new(interval, send_message.clone()); @@ -209,12 +198,10 @@ impl Handler { } } ClientFrames::IAmCamera { road, mile, limit } => { - info!("Receive new camera {road} {mile} {limit}"); if self.connection_type.is_some() { return Err("Already connected".into()); } self.set_connection_type(ConnectionType::Camera); - info!("Set connection type to camera"); db.add_camera( CameraId(self.connection.get_address()), @@ -226,7 +213,6 @@ impl Handler { ); } ClientFrames::IAmDispatcher { roads } => { - info!("Receive new dispatcher {roads:?}"); if self.connection_type.is_some() { return Err("Already connected".into()); } diff --git a/problem_06/src/ticketing.rs b/problem_06/src/ticketing.rs index 76b0c11..9c5c4a9 100644 --- a/problem_06/src/ticketing.rs +++ b/problem_06/src/ticketing.rs @@ -1,19 +1,16 @@ -use tracing::debug; +use tracing::info; use crate::db::{CameraId, Db, Plate, Road, Ticket}; pub(crate) async fn issue_possible_ticket(db: &mut Db, plate: Plate, camera_id: CameraId) { - debug!("Issue possible ticket"); let camera = db.get_camera(camera_id.clone()).unwrap(); let observed_plates = db.get_plates_by_road(plate.clone(), camera.road.clone()); if observed_plates.is_none() { - debug!("No observed plates"); db.add_plate(camera_id, plate); return; } - debug!(?observed_plates, "Observed plates"); let mile = camera.mile; let limit = camera.limit; let road = camera.road; @@ -21,14 +18,6 @@ pub(crate) async fn issue_possible_ticket(db: &mut Db, plate: Plate, camera_id: let plate_name = plate.clone().plate; let timestamp = plate.clone().timestamp; - debug!( - ?plate_name, - ?timestamp, - ?mile, - ?limit, - ?road, - "Checking plate" - ); for (m, t) in observed_plates.unwrap().iter() { let distance = if mile > *m { mile.0 - m.0 @@ -44,7 +33,6 @@ pub(crate) async fn issue_possible_ticket(db: &mut Db, plate: Plate, camera_id: let speed = (distance as u64 * 3600 * 100 / time as u64) as u16; - debug!(?distance, ?time, ?speed, "Checking speed"); if speed > limit.0 * 100 { let ticket = Ticket { plate: plate_name.clone().0, @@ -60,20 +48,21 @@ pub(crate) async fn issue_possible_ticket(db: &mut Db, plate: Plate, camera_id: let day_end = timestamp2 / 86400; for day in day_start..=day_end { + info!("Day {day} for {ticket:?}"); if db.is_plate_ticketed_for_day(day, plate_name.clone()) { - debug!(?ticket, "Ticket already issued"); + info!("Ticket already issued: {ticket:?}"); continue; } let dispatcher = db.get_dispatcher_for_road(road.clone()); if dispatcher.is_none() { - debug!(?ticket, "No dispatcher for road"); + info!("No dispatcher yet for this road: {ticket:?}"); db.add_open_ticket(ticket.clone()); continue; } - debug!(?ticket, "Sending ticket"); + info!("Sending ticket: {ticket:?}"); let _ = dispatcher.unwrap().send(ticket.clone().into()).await; db.ticket_plate(day, plate_name.clone()); } @@ -85,7 +74,7 @@ pub(crate) async fn issue_possible_ticket(db: &mut Db, plate: Plate, camera_id: pub(crate) async fn send_out_waiting_tickets(db: Db) { let tickets = db.get_open_tickets(); - debug!(?tickets, "Sending out waiting tickets"); + info!("Sending out waiting tickets: {tickets:?}"); for ticket in tickets { if let Some(dispatcher) = db.get_dispatcher_for_road(Road(ticket.road)) { let _ = dispatcher.send(ticket.clone().into()).await;