|
|
|
|
@ -172,25 +172,14 @@ func (r *Report) Clone() *Report { |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
r2 := *r |
|
|
|
|
r2.RegionLatency = cloneDurationMap(r2.RegionLatency) |
|
|
|
|
r2.RegionV4Latency = cloneDurationMap(r2.RegionV4Latency) |
|
|
|
|
r2.RegionV6Latency = cloneDurationMap(r2.RegionV6Latency) |
|
|
|
|
r2.RegionLatency = maps.Clone(r2.RegionLatency) |
|
|
|
|
r2.RegionV4Latency = maps.Clone(r2.RegionV4Latency) |
|
|
|
|
r2.RegionV6Latency = maps.Clone(r2.RegionV6Latency) |
|
|
|
|
r2.GlobalV4Counters = maps.Clone(r2.GlobalV4Counters) |
|
|
|
|
r2.GlobalV6Counters = maps.Clone(r2.GlobalV6Counters) |
|
|
|
|
return &r2 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func cloneDurationMap(m map[int]time.Duration) map[int]time.Duration { |
|
|
|
|
if m == nil { |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
m2 := make(map[int]time.Duration, len(m)) |
|
|
|
|
for k, v := range m { |
|
|
|
|
m2[k] = v |
|
|
|
|
} |
|
|
|
|
return m2 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Client generates Reports describing the result of both passive and active
|
|
|
|
|
// network configuration probing. It provides two different modes of report, a
|
|
|
|
|
// full report (see MakeNextReportFull) and a more lightweight incremental
|
|
|
|
|
|