blob: a0a35e9240da62c90104e236f2aaa9adb2716ee6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <mutex>
#include "stable_store.h"
#include "metric_identifier.h"
#include "counter.h"
#include "gauge.h"
#include "clock.h"
#include "counter_aggregator.h"
#include "gauge_aggregator.h"
#include "current_samples.h"
namespace vespalib {
namespace metrics {
// internal
struct Bucket {
size_t genCnt;
InternalTimeStamp startTime;
InternalTimeStamp endTime;
std::vector<CounterAggregator> counters;
std::vector<GaugeAggregator> gauges;
void merge(const CurrentSamples &other);
void merge(const Bucket &other);
Bucket(size_t generation, InternalTimeStamp started, InternalTimeStamp ended)
: genCnt(generation),
startTime(started),
endTime(ended),
counters(),
gauges()
{}
~Bucket() {}
Bucket(Bucket &&) = default;
Bucket(const Bucket &) = default;
Bucket& operator= (Bucket &&) = default;
};
} // namespace vespalib::metrics
} // namespace vespalib
|