///|
fn main raise {
  let state = @tracker.State::new()
  for step, record in @journal.parse(@fixtures.journal_text()) {
    match record {
      @journal.Datagram(data, endian) => state.ingest(data, endian~)
      @journal.Loss(reason) => state.mark_stale(reason)
    }
    let view = state.view()
    let json : Json = {
      "source": "recorded-linux-kernel",
      "step": step,
      "links": view.links.map(link => link.name.unwrap_or("unknown")),
      "addresses": view.addresses.map(a => {
        a.local_address.unwrap_or(a.address.unwrap_or(""))
      }),
      "route_count": view.routes.length(),
      "neighbor_count": view.neighbors.length(),
      "stale": view.stale,
      "applied_events": view.applied_events,
    }
    println(json.stringify())
  }
}