Switched realtime update feed from JSON to Protobuf.
This commit is contained in:
@@ -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
@@ -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();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user