mirror of
https://github.com/weaveworks/scope.git
synced 2026-02-14 18:09:59 +00:00
33 lines
654 B
Go
33 lines
654 B
Go
package app
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/spaolacci/murmur3"
|
|
|
|
"github.com/weaveworks/scope/report"
|
|
)
|
|
|
|
// Merger is the type for a thing that can merge reports.
|
|
type Merger interface {
|
|
Merge([]report.Report) report.Report
|
|
}
|
|
|
|
type fastMerger struct{}
|
|
|
|
// NewFastMerger makes a Merger which merges together reports, mutating the one we are building up
|
|
func NewFastMerger() Merger {
|
|
return fastMerger{}
|
|
}
|
|
|
|
func (fastMerger) Merge(reports []report.Report) report.Report {
|
|
rpt := report.MakeReport()
|
|
id := murmur3.New64()
|
|
for _, r := range reports {
|
|
rpt.UnsafeMerge(r)
|
|
id.Write([]byte(r.ID))
|
|
}
|
|
rpt.ID = fmt.Sprintf("%x", id.Sum64())
|
|
return rpt
|
|
}
|