From f0119308f602c9435c793b95b0fa9af3be3a5296 Mon Sep 17 00:00:00 2001 From: fonsinchen Date: Mon, 17 Jun 2013 20:38:11 +0000 Subject: (svn r25424) -Fix: keep old flows around in an invalidated state to continue routing cargo if necessary --- src/station_cmd.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/station_cmd.cpp') diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 44cf45f5a..0ac50d2eb 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -4086,7 +4086,23 @@ StationID FlowStat::GetVia(StationID excluded, StationID excluded2) const } assert(it3 != this->shares.end()); return it3->second; +} +/** + * Reduce all flows to minimum capacity so that they don't get in the way of + * link usage statistics too much. Keep them around, though, to continue + * routing any remaining cargo. + */ +void FlowStat::Invalidate() +{ + assert(!this->shares.empty()); + SharesMap new_shares; + uint i = 0; + for (SharesMap::iterator it(this->shares.begin()); it != this->shares.end(); ++it) { + new_shares[++i] = it->second; + } + this->shares.swap(new_shares); + assert(!this->shares.empty()); } /** -- cgit v1.2.3-54-g00ecf