Resync oxy with original repository
This commit is contained in:
parent
da5e4a13bf
commit
bee8ebb00b
31 changed files with 650 additions and 808 deletions
33
vendor/github.com/vulcand/oxy/memmetrics/histogram.go
generated
vendored
33
vendor/github.com/vulcand/oxy/memmetrics/histogram.go
generated
vendored
|
@ -34,6 +34,15 @@ func NewHDRHistogram(low, high int64, sigfigs int) (h *HDRHistogram, err error)
|
|||
}, nil
|
||||
}
|
||||
|
||||
func (r *HDRHistogram) Export() *HDRHistogram {
|
||||
var hist *hdrhistogram.Histogram = nil
|
||||
if r.h != nil {
|
||||
snapshot := r.h.Export()
|
||||
hist = hdrhistogram.Import(snapshot)
|
||||
}
|
||||
return &HDRHistogram{low: r.low, high: r.high, sigfigs: r.sigfigs, h: hist}
|
||||
}
|
||||
|
||||
// Returns latency at quantile with microsecond precision
|
||||
func (h *HDRHistogram) LatencyAtQuantile(q float64) time.Duration {
|
||||
return time.Duration(h.ValueAtQuantile(q)) * time.Microsecond
|
||||
|
@ -118,6 +127,26 @@ func NewRollingHDRHistogram(low, high int64, sigfigs int, period time.Duration,
|
|||
return rh, nil
|
||||
}
|
||||
|
||||
func (r *RollingHDRHistogram) Export() *RollingHDRHistogram {
|
||||
export := &RollingHDRHistogram{}
|
||||
export.idx = r.idx
|
||||
export.lastRoll = r.lastRoll
|
||||
export.period = r.period
|
||||
export.bucketCount = r.bucketCount
|
||||
export.low = r.low
|
||||
export.high = r.high
|
||||
export.sigfigs = r.sigfigs
|
||||
export.clock = r.clock
|
||||
|
||||
exportBuckets := make([]*HDRHistogram, len(r.buckets))
|
||||
for i, hist := range r.buckets {
|
||||
exportBuckets[i] = hist.Export()
|
||||
}
|
||||
export.buckets = exportBuckets
|
||||
|
||||
return export
|
||||
}
|
||||
|
||||
func (r *RollingHDRHistogram) Append(o *RollingHDRHistogram) error {
|
||||
if r.bucketCount != o.bucketCount || r.period != o.period || r.low != o.low || r.high != o.high || r.sigfigs != o.sigfigs {
|
||||
return fmt.Errorf("can't merge")
|
||||
|
@ -150,8 +179,8 @@ func (r *RollingHDRHistogram) Merged() (*HDRHistogram, error) {
|
|||
return m, err
|
||||
}
|
||||
for _, h := range r.buckets {
|
||||
if m.Merge(h); err != nil {
|
||||
return nil, err
|
||||
if errMerge := m.Merge(h); errMerge != nil {
|
||||
return nil, errMerge
|
||||
}
|
||||
}
|
||||
return m, nil
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue