1234567891011121314151617181920212223242526272829303132 |
- 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
- }
|