sub report {
  my $msg = shift;

  return unless exists $msg->{arrived};
  return unless exists $msg->{finished};

  my $total_time = $msg->{finished} - $msg->{arrived};
  my $n_deliveries = 0;
  my $total_delivery_time = 0;

  for my $del (values %{$msg->{del}}) {
    next unless exists $del->{started};
    next unless exists $del->{finished};

    $total_delivery_time += $del->{finished} - $del->{started};
    $n_deliveries += 1;
  }

  my $deliveries = "deliveries";
  $deliveries = "delivery  " if $n_deliveries == 1;
  printf "%3d $deliveries (avg %6.2f sec each); queue lifetime %6.2f sec\n",
    $n_deliveries, $total_delivery_time / $n_deliveries, $total_time;
}

