Switched realtime update feed from JSON to Protobuf.

This commit is contained in:
2026-06-27 11:20:37 +01:00
parent a2ccb9b761
commit 618c4ff2fe
2 changed files with 12 additions and 3 deletions
+2
View File
@@ -10,6 +10,8 @@ csv = "1.4"
gtfs-structures = "0.47" gtfs-structures = "0.47"
gtfs-realtime = "0.2" gtfs-realtime = "0.2"
log = "0.4" log = "0.4"
prost = "0.14"
prost-types = "0.14"
reqwest = { version = "0.11", features = ["blocking"] } reqwest = { version = "0.11", features = ["blocking"] }
sdl3 = {version = "0.17", features = ["ttf"]} sdl3 = {version = "0.17", features = ["ttf"]}
serde = { version = "1.0", features = ["derive"]} serde = { version = "1.0", features = ["derive"]}
+10 -3
View File
@@ -28,8 +28,13 @@ impl Gtfs<'_> {
} }
// Parse response // Parse response
let realtime_info: gtfs_realtime::FeedMessage let response_bytes= response.bytes()?;
= serde_json::from_reader(response)?; let data: Result<gtfs_realtime::FeedMessage, prost::DecodeError> = prost::Message::decode(response_bytes.as_ref());
if data.is_err() {
return Err(Error {
_message : format! ("Error loading realtime prtobuf: {:#?}", data.err().unwrap())
})
}
// Build a map of (trip, stop) -> Arrival for faster lookup // Build a map of (trip, stop) -> Arrival for faster lookup
@@ -41,7 +46,9 @@ impl Gtfs<'_> {
} }
// Match deltas to existing arrivals // Match deltas to existing arrivals
for entity in realtime_info.entity { let entities = data.unwrap().entity;
debug!("Loaded {} entities from realtime update.", entities.len());
for entity in entities {
if entity.trip_update.is_some() && entity.stop.is_some() { if entity.trip_update.is_some() && entity.stop.is_some() {
let trip_update = entity.trip_update.unwrap(); let trip_update = entity.trip_update.unwrap();