Send out stale tickets

This commit is contained in:
Bastian Gruber 2023-05-21 17:58:51 +02:00
parent 351e301293
commit a831821026
No known key found for this signature in database
GPG key ID: BE9F8C772B188CBF
3 changed files with 18 additions and 2 deletions

View file

@ -155,6 +155,11 @@ impl Db {
.push(ticket);
}
pub(crate) fn get_open_tickets(&self) -> Vec<Ticket> {
let state = self.state.lock().unwrap();
state.open_tickets.values().flatten().cloned().collect()
}
pub(crate) fn get_plates_by_road(
&self,
plate: Plate,

View file

@ -12,7 +12,7 @@ use crate::{
db::{Camera, CameraId, Db, DbHolder, DispatcherId, Limit, Mile, Plate, Road, Timestamp},
frame::{ClientFrames, ServerFrames},
heartbeat::Heartbeat,
ticketing::issue_possible_ticket,
ticketing::{issue_possible_ticket, send_out_waiting_tickets},
Connection, Shutdown,
};
@ -240,6 +240,7 @@ impl Handler {
roads.to_vec(),
send_message.clone(),
);
send_out_waiting_tickets(db).await;
}
}

View file

@ -1,4 +1,4 @@
use crate::db::{CameraId, Db, Plate, Ticket};
use crate::db::{CameraId, Db, Plate, Road, Ticket};
pub(crate) async fn issue_possible_ticket(db: &mut Db, plate: Plate, camera_id: CameraId) {
let camera = db.get_camera(camera_id).unwrap();
@ -60,3 +60,13 @@ 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();
for ticket in tickets {
if let Some(dispatcher) = db.get_dispatcher_for_road(Road(ticket.road)) {
let _ = dispatcher.send(ticket.into()).await;
}
}
}