/src/brpc/src/bvar/detail/series.h
Line | Count | Source |
1 | | // Licensed to the Apache Software Foundation (ASF) under one |
2 | | // or more contributor license agreements. See the NOTICE file |
3 | | // distributed with this work for additional information |
4 | | // regarding copyright ownership. The ASF licenses this file |
5 | | // to you under the Apache License, Version 2.0 (the |
6 | | // "License"); you may not use this file except in compliance |
7 | | // with the License. You may obtain a copy of the License at |
8 | | // |
9 | | // http://www.apache.org/licenses/LICENSE-2.0 |
10 | | // |
11 | | // Unless required by applicable law or agreed to in writing, |
12 | | // software distributed under the License is distributed on an |
13 | | // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
14 | | // KIND, either express or implied. See the License for the |
15 | | // specific language governing permissions and limitations |
16 | | // under the License. |
17 | | |
18 | | // Date: Tue Jul 28 18:15:57 CST 2015 |
19 | | |
20 | | #ifndef BVAR_DETAIL_SERIES_H |
21 | | #define BVAR_DETAIL_SERIES_H |
22 | | |
23 | | #include <math.h> // round |
24 | | #include <ostream> |
25 | | #include "butil/scoped_lock.h" // BAIDU_SCOPED_LOCK |
26 | | #include "butil/type_traits.h" |
27 | | #include "bvar/vector.h" |
28 | | #include "bvar/detail/call_op_returning_void.h" |
29 | | #include "butil/string_splitter.h" |
30 | | |
31 | | namespace bvar { |
32 | | namespace detail { |
33 | | |
34 | | template <typename T, typename Op, typename Enabler = void> |
35 | | struct DivideOnAddition { |
36 | 0 | static void inplace_divide(T& /*obj*/, const Op&, int /*number*/) { |
37 | | // do nothing |
38 | 0 | } Unexecuted instantiation: bvar::detail::DivideOnAddition<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op, void>::inplace_divide(bvar::Stat&, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&, int) Unexecuted instantiation: bvar::detail::DivideOnAddition<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op, void>::inplace_divide(bvar::detail::PercentileSamples<254ul>&, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&, int) Unexecuted instantiation: bvar::detail::DivideOnAddition<bvar::Collected*, bvar::CombineCollected, void>::inplace_divide(bvar::Collected*&, bvar::CombineCollected const&, int) Unexecuted instantiation: bvar::detail::DivideOnAddition<bvar::detail::Sampler*, bvar::detail::CombineSampler, void>::inplace_divide(bvar::detail::Sampler*&, bvar::detail::CombineSampler const&, int) |
39 | | }; |
40 | | |
41 | | template <typename T, typename Op> |
42 | | struct ProbablyAddtition { |
43 | 0 | ProbablyAddtition(const Op& op) { |
44 | 0 | T res(32); |
45 | 0 | call_op_returning_void(op, res, T(64)); |
46 | 0 | _ok = (res == T(96)); // works for integral/floating point. |
47 | 0 | } Unexecuted instantiation: bvar::detail::ProbablyAddtition<double, bvar::detail::AddTo<double> >::ProbablyAddtition(bvar::detail::AddTo<double> const&) Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::AddTo<long> >::ProbablyAddtition(bvar::detail::AddTo<long> const&) Unexecuted instantiation: bvar::detail::ProbablyAddtition<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::ProbablyAddtition(bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::ProbablyAddtition<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::ProbablyAddtition(bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::ProbablyAddtition<unsigned long, bvar::detail::AddTo<unsigned long> >::ProbablyAddtition(bvar::detail::AddTo<unsigned long> const&) Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::ProbablyAddtition(bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::ProbablyAddtition(bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::MaxTo<long> >::ProbablyAddtition(bvar::detail::MaxTo<long> const&) Unexecuted instantiation: bvar::detail::ProbablyAddtition<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::ProbablyAddtition(bvar::detail::AddTo<bvar::Vector<long, 4ul> > const&) Unexecuted instantiation: bvar::detail::ProbablyAddtition<int, bvar::detail::AddTo<int> >::ProbablyAddtition(bvar::detail::AddTo<int> const&) |
48 | 0 | operator bool() const { return _ok; } Unexecuted instantiation: bvar::detail::ProbablyAddtition<double, bvar::detail::AddTo<double> >::operator bool() const Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::AddTo<long> >::operator bool() const Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::MaxTo<long> >::operator bool() const Unexecuted instantiation: bvar::detail::ProbablyAddtition<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::operator bool() const Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::operator bool() const Unexecuted instantiation: bvar::detail::ProbablyAddtition<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::operator bool() const Unexecuted instantiation: bvar::detail::ProbablyAddtition<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::operator bool() const Unexecuted instantiation: bvar::detail::ProbablyAddtition<unsigned long, bvar::detail::AddTo<unsigned long> >::operator bool() const Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::operator bool() const Unexecuted instantiation: bvar::detail::ProbablyAddtition<int, bvar::detail::AddTo<int> >::operator bool() const |
49 | | private: |
50 | | bool _ok; |
51 | | }; |
52 | | |
53 | | template <typename T, typename Op> |
54 | | struct DivideOnAddition<T, Op, typename butil::enable_if< |
55 | | butil::is_integral<T>::value>::type> { |
56 | 0 | static void inplace_divide(T& obj, const Op& op, int number) { |
57 | 0 | static ProbablyAddtition<T, Op> probably_add(op); |
58 | 0 | if (probably_add) { |
59 | 0 | obj = (T)round(obj / (double)number); |
60 | 0 | } |
61 | 0 | } Unexecuted instantiation: bvar::detail::DivideOnAddition<long, bvar::detail::AddTo<long>, void>::inplace_divide(long&, bvar::detail::AddTo<long> const&, int) Unexecuted instantiation: bvar::detail::DivideOnAddition<long, bvar::detail::MaxTo<long>, void>::inplace_divide(long&, bvar::detail::MaxTo<long> const&, int) Unexecuted instantiation: bvar::detail::DivideOnAddition<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op, void>::inplace_divide(long&, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&, int) Unexecuted instantiation: bvar::detail::DivideOnAddition<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op, void>::inplace_divide(unsigned long&, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&, int) Unexecuted instantiation: bvar::detail::DivideOnAddition<unsigned long, bvar::detail::AddTo<unsigned long>, void>::inplace_divide(unsigned long&, bvar::detail::AddTo<unsigned long> const&, int) Unexecuted instantiation: bvar::detail::DivideOnAddition<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op, void>::inplace_divide(long&, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&, int) Unexecuted instantiation: bvar::detail::DivideOnAddition<int, bvar::detail::AddTo<int>, void>::inplace_divide(int&, bvar::detail::AddTo<int> const&, int) |
62 | | }; |
63 | | |
64 | | template <typename T, typename Op> |
65 | | struct DivideOnAddition<T, Op, typename butil::enable_if< |
66 | | butil::is_floating_point<T>::value>::type> { |
67 | 0 | static void inplace_divide(T& obj, const Op& op, int number) { |
68 | 0 | static ProbablyAddtition<T, Op> probably_add(op); |
69 | 0 | if (probably_add) { |
70 | 0 | obj /= number; |
71 | 0 | } |
72 | 0 | } Unexecuted instantiation: bvar::detail::DivideOnAddition<double, bvar::detail::AddTo<double>, void>::inplace_divide(double&, bvar::detail::AddTo<double> const&, int) Unexecuted instantiation: bvar::detail::DivideOnAddition<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op, void>::inplace_divide(double&, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&, int) |
73 | | }; |
74 | | |
75 | | template <typename T, size_t N, typename Op> |
76 | | struct DivideOnAddition<Vector<T,N>, Op, typename butil::enable_if< |
77 | | butil::is_integral<T>::value>::type> { |
78 | 0 | static void inplace_divide(Vector<T, N>& obj, const Op& op, int number) { |
79 | 0 | static ProbablyAddtition<Vector<T, N>, Op> probably_add(op); |
80 | 0 | if (probably_add) { |
81 | 0 | for (size_t i = 0; i < N; ++i) { |
82 | 0 | obj[i] = (T)round(obj[i] / (double)number); |
83 | 0 | } |
84 | 0 | } |
85 | 0 | } |
86 | | }; |
87 | | |
88 | | template <typename T, size_t N, typename Op> |
89 | | struct DivideOnAddition<Vector<T,N>, Op, typename butil::enable_if< |
90 | | butil::is_floating_point<T>::value>::type> { |
91 | | static void inplace_divide(Vector<T,N>& obj, const Op& op, int number) { |
92 | | static ProbablyAddtition<Vector<T,N>, Op> probably_add(op); |
93 | | if (probably_add) { |
94 | | obj /= number; |
95 | | } |
96 | | } |
97 | | }; |
98 | | |
99 | | template <typename T, typename Op> |
100 | | class SeriesBase { |
101 | | public: |
102 | | explicit SeriesBase(const Op& op) |
103 | 8 | : _op(op) |
104 | 8 | , _nsecond(0) |
105 | 8 | , _nminute(0) |
106 | 8 | , _nhour(0) |
107 | 8 | , _nday(0) { |
108 | 8 | pthread_mutex_init(&_mutex, NULL); |
109 | 8 | } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::SeriesBase(bvar::detail::AddTo<double> const&) bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::SeriesBase(bvar::detail::AddTo<long> const&) Line | Count | Source | 103 | 2 | : _op(op) | 104 | 2 | , _nsecond(0) | 105 | 2 | , _nminute(0) | 106 | 2 | , _nhour(0) | 107 | 2 | , _nday(0) { | 108 | | pthread_mutex_init(&_mutex, NULL); | 109 | 2 | } |
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::SeriesBase(bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::SeriesBase(bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::SeriesBase(bvar::detail::AddTo<unsigned long> const&) Line | Count | Source | 103 | 4 | : _op(op) | 104 | 4 | , _nsecond(0) | 105 | 4 | , _nminute(0) | 106 | 4 | , _nhour(0) | 107 | 4 | , _nday(0) { | 108 | | pthread_mutex_init(&_mutex, NULL); | 109 | 4 | } |
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::SeriesBase(bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::SeriesBase(bvar::CombineCollected const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::SeriesBase(bvar::detail::CombineSampler const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::SeriesBase(bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::SeriesBase(bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::SeriesBase(bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::SeriesBase(bvar::detail::MaxTo<long> const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::SeriesBase(bvar::detail::AddTo<bvar::Vector<long, 4ul> > const&) bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::SeriesBase(bvar::detail::AddTo<int> const&) Line | Count | Source | 103 | 2 | : _op(op) | 104 | 2 | , _nsecond(0) | 105 | 2 | , _nminute(0) | 106 | 2 | , _nhour(0) | 107 | 2 | , _nday(0) { | 108 | | pthread_mutex_init(&_mutex, NULL); | 109 | 2 | } |
|
110 | 0 | ~SeriesBase() { |
111 | 0 | pthread_mutex_destroy(&_mutex); |
112 | 0 | } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::~SeriesBase() Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::~SeriesBase() Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::~SeriesBase() Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::~SeriesBase() Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::~SeriesBase() Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::~SeriesBase() Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::~SeriesBase() Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::~SeriesBase() Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::~SeriesBase() Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::~SeriesBase() Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::~SeriesBase() Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::~SeriesBase() Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::~SeriesBase() Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::~SeriesBase() |
113 | | |
114 | 20 | void append(const T& value) { |
115 | 20 | BAIDU_SCOPED_LOCK(_mutex); |
116 | 20 | return append_second(value, _op); |
117 | 20 | } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::append(double const&) bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::append(long const&) Line | Count | Source | 114 | 5 | void append(const T& value) { | 115 | 5 | BAIDU_SCOPED_LOCK(_mutex); | 116 | 5 | return append_second(value, _op); | 117 | 5 | } |
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::append(long const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::append(bvar::Vector<long, 4ul> const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append(bvar::Stat const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append(long const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append(bvar::detail::PercentileSamples<254ul> const&) Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append(double const&) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append(unsigned long const&) bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::append(unsigned long const&) Line | Count | Source | 114 | 10 | void append(const T& value) { | 115 | 10 | BAIDU_SCOPED_LOCK(_mutex); | 116 | 10 | return append_second(value, _op); | 117 | 10 | } |
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append(long const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::append(bvar::Collected* const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::append(bvar::detail::Sampler* const&) bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::append(int const&) Line | Count | Source | 114 | 5 | void append(const T& value) { | 115 | 5 | BAIDU_SCOPED_LOCK(_mutex); | 116 | 5 | return append_second(value, _op); | 117 | 5 | } |
|
118 | | |
119 | | private: |
120 | | void append_second(const T& value, const Op& op); |
121 | | void append_minute(const T& value, const Op& op); |
122 | | void append_hour(const T& value, const Op& op); |
123 | | void append_day(const T& value); |
124 | | |
125 | | struct Data { |
126 | | public: |
127 | 8 | Data() { |
128 | | // is_pod does not work for gcc 3.4 |
129 | 8 | if (butil::is_integral<T>::value || |
130 | 8 | butil::is_floating_point<T>::value) { |
131 | 8 | memset(static_cast<void*>(_array), 0, sizeof(_array)); |
132 | 8 | } |
133 | 8 | } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::Data() bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::Data() Line | Count | Source | 127 | 2 | Data() { | 128 | | // is_pod does not work for gcc 3.4 | 129 | 2 | if (butil::is_integral<T>::value || | 130 | 2 | butil::is_floating_point<T>::value) { | 131 | 2 | memset(static_cast<void*>(_array), 0, sizeof(_array)); | 132 | 2 | } | 133 | 2 | } |
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::Data() bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::Data() Line | Count | Source | 127 | 4 | Data() { | 128 | | // is_pod does not work for gcc 3.4 | 129 | 4 | if (butil::is_integral<T>::value || | 130 | 4 | butil::is_floating_point<T>::value) { | 131 | 4 | memset(static_cast<void*>(_array), 0, sizeof(_array)); | 132 | 4 | } | 133 | 4 | } |
bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::Data() Line | Count | Source | 127 | 2 | Data() { | 128 | | // is_pod does not work for gcc 3.4 | 129 | 2 | if (butil::is_integral<T>::value || | 130 | 2 | butil::is_floating_point<T>::value) { | 131 | 2 | memset(static_cast<void*>(_array), 0, sizeof(_array)); | 132 | 2 | } | 133 | 2 | } |
|
134 | | |
135 | 20 | T& second(int index) { return _array[index]; } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::second(int) bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::second(int) Line | Count | Source | 135 | 5 | T& second(int index) { return _array[index]; } |
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::second(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::second(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::second(int) Line | Count | Source | 135 | 10 | T& second(int index) { return _array[index]; } |
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::second(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::second(int) bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::second(int) Line | Count | Source | 135 | 5 | T& second(int index) { return _array[index]; } |
|
136 | 0 | const T& second(int index) const { return _array[index]; } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::second(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::second(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::second(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::second(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) const Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) const Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) const Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::second(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::second(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::second(int) const Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::second(int) const |
137 | | |
138 | 0 | T& minute(int index) { return _array[60 + index]; } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::minute(int) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::minute(int) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::minute(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::minute(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::minute(int) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::minute(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::minute(int) Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::minute(int) |
139 | 0 | const T& minute(int index) const { return _array[60 + index]; } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::minute(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::minute(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::minute(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::minute(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) const Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) const Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) const Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::minute(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::minute(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::minute(int) const Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::minute(int) const |
140 | | |
141 | 0 | T& hour(int index) { return _array[120 + index]; } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::hour(int) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::hour(int) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::hour(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::hour(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::hour(int) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::hour(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::hour(int) Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::hour(int) |
142 | 0 | const T& hour(int index) const { return _array[120 + index]; } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::hour(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::hour(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::hour(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::hour(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) const Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) const Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) const Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::hour(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::hour(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::hour(int) const Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::hour(int) const |
143 | | |
144 | 0 | T& day(int index) { return _array[144 + index]; } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::day(int) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::day(int) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::day(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::day(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::day(int) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::day(int) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::day(int) Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::day(int) |
145 | 0 | const T& day(int index) const { return _array[144 + index]; } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::day(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::day(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::day(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::day(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) const Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) const Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) const Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::day(int) const Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::day(int) const Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::day(int) const Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::day(int) const |
146 | | private: |
147 | | T _array[60 + 60 + 24 + 30]; |
148 | | }; |
149 | | |
150 | | protected: |
151 | | Op _op; |
152 | | mutable pthread_mutex_t _mutex; |
153 | | char _nsecond; |
154 | | char _nminute; |
155 | | char _nhour; |
156 | | char _nday; |
157 | | Data _data; |
158 | | }; |
159 | | |
160 | | template <typename T, typename Op> |
161 | 20 | void SeriesBase<T, Op>::append_second(const T& value, const Op& op) { |
162 | 20 | _data.second(_nsecond) = value; |
163 | 20 | ++_nsecond; |
164 | 20 | if (_nsecond >= 60) { |
165 | 0 | _nsecond = 0; |
166 | 0 | T tmp = _data.second(0); |
167 | 0 | for (int i = 1; i < 60; ++i) { |
168 | 0 | call_op_returning_void(op, tmp, _data.second(i)); |
169 | 0 | } |
170 | 0 | DivideOnAddition<T, Op>::inplace_divide(tmp, op, 60); |
171 | 0 | append_minute(tmp, op); |
172 | 0 | } |
173 | 20 | } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::append_second(double const&, bvar::detail::AddTo<double> const&) bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::append_second(long const&, bvar::detail::AddTo<long> const&) Line | Count | Source | 161 | 5 | void SeriesBase<T, Op>::append_second(const T& value, const Op& op) { | 162 | 5 | _data.second(_nsecond) = value; | 163 | 5 | ++_nsecond; | 164 | 5 | if (_nsecond >= 60) { | 165 | 0 | _nsecond = 0; | 166 | 0 | T tmp = _data.second(0); | 167 | 0 | for (int i = 1; i < 60; ++i) { | 168 | 0 | call_op_returning_void(op, tmp, _data.second(i)); | 169 | 0 | } | 170 | 0 | DivideOnAddition<T, Op>::inplace_divide(tmp, op, 60); | 171 | 0 | append_minute(tmp, op); | 172 | 0 | } | 173 | 5 | } |
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::append_second(long const&, bvar::detail::MaxTo<long> const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::append_second(bvar::Vector<long, 4ul> const&, bvar::detail::AddTo<bvar::Vector<long, 4ul> > const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_second(bvar::Stat const&, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_second(long const&, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_second(bvar::detail::PercentileSamples<254ul> const&, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_second(double const&, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_second(unsigned long const&, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::append_second(unsigned long const&, bvar::detail::AddTo<unsigned long> const&) Line | Count | Source | 161 | 10 | void SeriesBase<T, Op>::append_second(const T& value, const Op& op) { | 162 | 10 | _data.second(_nsecond) = value; | 163 | 10 | ++_nsecond; | 164 | 10 | if (_nsecond >= 60) { | 165 | 0 | _nsecond = 0; | 166 | 0 | T tmp = _data.second(0); | 167 | 0 | for (int i = 1; i < 60; ++i) { | 168 | 0 | call_op_returning_void(op, tmp, _data.second(i)); | 169 | 0 | } | 170 | 0 | DivideOnAddition<T, Op>::inplace_divide(tmp, op, 60); | 171 | 0 | append_minute(tmp, op); | 172 | 0 | } | 173 | 10 | } |
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_second(long const&, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::append_second(bvar::Collected* const&, bvar::CombineCollected const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::append_second(bvar::detail::Sampler* const&, bvar::detail::CombineSampler const&) bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::append_second(int const&, bvar::detail::AddTo<int> const&) Line | Count | Source | 161 | 5 | void SeriesBase<T, Op>::append_second(const T& value, const Op& op) { | 162 | 5 | _data.second(_nsecond) = value; | 163 | 5 | ++_nsecond; | 164 | 5 | if (_nsecond >= 60) { | 165 | 0 | _nsecond = 0; | 166 | 0 | T tmp = _data.second(0); | 167 | 0 | for (int i = 1; i < 60; ++i) { | 168 | 0 | call_op_returning_void(op, tmp, _data.second(i)); | 169 | 0 | } | 170 | 0 | DivideOnAddition<T, Op>::inplace_divide(tmp, op, 60); | 171 | 0 | append_minute(tmp, op); | 172 | 0 | } | 173 | 5 | } |
|
174 | | |
175 | | template <typename T, typename Op> |
176 | 0 | void SeriesBase<T, Op>::append_minute(const T& value, const Op& op) { |
177 | 0 | _data.minute(_nminute) = value; |
178 | 0 | ++_nminute; |
179 | 0 | if (_nminute >= 60) { |
180 | 0 | _nminute = 0; |
181 | 0 | T tmp = _data.minute(0); |
182 | 0 | for (int i = 1; i < 60; ++i) { |
183 | 0 | call_op_returning_void(op, tmp, _data.minute(i)); |
184 | 0 | } |
185 | 0 | DivideOnAddition<T, Op>::inplace_divide(tmp, op, 60); |
186 | 0 | append_hour(tmp, op); |
187 | 0 | } |
188 | 0 | } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::append_minute(double const&, bvar::detail::AddTo<double> const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::append_minute(long const&, bvar::detail::AddTo<long> const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::append_minute(long const&, bvar::detail::MaxTo<long> const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::append_minute(bvar::Vector<long, 4ul> const&, bvar::detail::AddTo<bvar::Vector<long, 4ul> > const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_minute(bvar::Stat const&, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_minute(long const&, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_minute(bvar::detail::PercentileSamples<254ul> const&, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_minute(double const&, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_minute(unsigned long const&, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::append_minute(unsigned long const&, bvar::detail::AddTo<unsigned long> const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_minute(long const&, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::append_minute(bvar::Collected* const&, bvar::CombineCollected const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::append_minute(bvar::detail::Sampler* const&, bvar::detail::CombineSampler const&) Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::append_minute(int const&, bvar::detail::AddTo<int> const&) |
189 | | |
190 | | template <typename T, typename Op> |
191 | 0 | void SeriesBase<T, Op>::append_hour(const T& value, const Op& op) { |
192 | 0 | _data.hour(_nhour) = value; |
193 | 0 | ++_nhour; |
194 | 0 | if (_nhour >= 24) { |
195 | 0 | _nhour = 0; |
196 | 0 | T tmp = _data.hour(0); |
197 | 0 | for (int i = 1; i < 24; ++i) { |
198 | 0 | call_op_returning_void(op, tmp, _data.hour(i)); |
199 | 0 | } |
200 | 0 | DivideOnAddition<T, Op>::inplace_divide(tmp, op, 24); |
201 | 0 | append_day(tmp); |
202 | 0 | } |
203 | 0 | } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::append_hour(double const&, bvar::detail::AddTo<double> const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::append_hour(long const&, bvar::detail::AddTo<long> const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::append_hour(long const&, bvar::detail::MaxTo<long> const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::append_hour(bvar::Vector<long, 4ul> const&, bvar::detail::AddTo<bvar::Vector<long, 4ul> > const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_hour(bvar::Stat const&, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_hour(long const&, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_hour(bvar::detail::PercentileSamples<254ul> const&, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_hour(double const&, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_hour(unsigned long const&, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::append_hour(unsigned long const&, bvar::detail::AddTo<unsigned long> const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_hour(long const&, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::append_hour(bvar::Collected* const&, bvar::CombineCollected const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::append_hour(bvar::detail::Sampler* const&, bvar::detail::CombineSampler const&) Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::append_hour(int const&, bvar::detail::AddTo<int> const&) |
204 | | |
205 | | template <typename T, typename Op> |
206 | 0 | void SeriesBase<T, Op>::append_day(const T& value) { |
207 | 0 | _data.day(_nday) = value; |
208 | 0 | ++_nday; |
209 | 0 | if (_nday >= 30) { |
210 | 0 | _nday = 0; |
211 | 0 | } |
212 | 0 | } Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::append_day(double const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::append_day(long const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::append_day(long const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::append_day(bvar::Vector<long, 4ul> const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_day(bvar::Stat const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_day(long const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_day(bvar::detail::PercentileSamples<254ul> const&) Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_day(double const&) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_day(unsigned long const&) Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::append_day(unsigned long const&) Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_day(long const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::append_day(bvar::Collected* const&) Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::append_day(bvar::detail::Sampler* const&) Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::append_day(int const&) |
213 | | |
214 | | template <typename T, typename Op> |
215 | | class Series : public SeriesBase<T, Op> { |
216 | | typedef SeriesBase<T, Op> Base; |
217 | | public: |
218 | 8 | explicit Series(const Op& op) : Base(op) {} Unexecuted instantiation: bvar::detail::Series<double, bvar::detail::AddTo<double> >::Series(bvar::detail::AddTo<double> const&) bvar::detail::Series<long, bvar::detail::AddTo<long> >::Series(bvar::detail::AddTo<long> const&) Line | Count | Source | 218 | 2 | explicit Series(const Op& op) : Base(op) {} |
Unexecuted instantiation: bvar::detail::Series<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Series(bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::Series<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Series(bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) bvar::detail::Series<unsigned long, bvar::detail::AddTo<unsigned long> >::Series(bvar::detail::AddTo<unsigned long> const&) Line | Count | Source | 218 | 4 | explicit Series(const Op& op) : Base(op) {} |
Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Series(bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::Series<bvar::Collected*, bvar::CombineCollected>::Series(bvar::CombineCollected const&) Unexecuted instantiation: bvar::detail::Series<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Series(bvar::detail::CombineSampler const&) Unexecuted instantiation: bvar::detail::Series<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Series(bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Series(bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::Series<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Series(bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&) Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::MaxTo<long> >::Series(bvar::detail::MaxTo<long> const&) bvar::detail::Series<int, bvar::detail::AddTo<int> >::Series(bvar::detail::AddTo<int> const&) Line | Count | Source | 218 | 2 | explicit Series(const Op& op) : Base(op) {} |
|
219 | | void describe(std::ostream& os, const std::string* vector_names) const; |
220 | | }; |
221 | | |
222 | | template <typename T, size_t N, typename Op> |
223 | | class Series<Vector<T,N>, Op> : public SeriesBase<Vector<T,N>, Op> { |
224 | | typedef SeriesBase<Vector<T,N>, Op> Base; |
225 | | public: |
226 | 0 | explicit Series(const Op& op) : Base(op) {} |
227 | | void describe(std::ostream& os, const std::string* vector_names) const; |
228 | | }; |
229 | | |
230 | | template <typename T, typename Op> |
231 | | void Series<T, Op>::describe(std::ostream& os, |
232 | 0 | const std::string* vector_names) const { |
233 | 0 | CHECK(vector_names == NULL); |
234 | 0 | pthread_mutex_lock(&this->_mutex); |
235 | 0 | const int second_begin = this->_nsecond; |
236 | 0 | const int minute_begin = this->_nminute; |
237 | 0 | const int hour_begin = this->_nhour; |
238 | 0 | const int day_begin = this->_nday; |
239 | | // NOTE: we don't save _data which may be inconsistent sometimes, but |
240 | | // this output is generally for "peeking the trend" and does not need |
241 | | // to exactly accurate. |
242 | 0 | pthread_mutex_unlock(&this->_mutex); |
243 | 0 | int c = 0; |
244 | 0 | os << "{\"label\":\"trend\",\"data\":["; |
245 | 0 | for (int i = 0; i < 30; ++i, ++c) { |
246 | 0 | if (c) { |
247 | 0 | os << ','; |
248 | 0 | } |
249 | 0 | os << '[' << c << ',' << this->_data.day((i + day_begin) % 30) << ']'; |
250 | 0 | } |
251 | 0 | for (int i = 0; i < 24; ++i, ++c) { |
252 | 0 | if (c) { |
253 | 0 | os << ','; |
254 | 0 | } |
255 | 0 | os << '[' << c << ',' << this->_data.hour((i + hour_begin) % 24) << ']'; |
256 | 0 | } |
257 | 0 | for (int i = 0; i < 60; ++i, ++c) { |
258 | 0 | if (c) { |
259 | 0 | os << ','; |
260 | 0 | } |
261 | 0 | os << '[' << c << ',' << this->_data.minute((i + minute_begin) % 60) << ']'; |
262 | 0 | } |
263 | 0 | for (int i = 0; i < 60; ++i, ++c) { |
264 | 0 | if (c) { |
265 | 0 | os << ','; |
266 | 0 | } |
267 | 0 | os << '[' << c << ',' << this->_data.second((i + second_begin) % 60) << ']'; |
268 | 0 | } |
269 | 0 | os << "]}"; |
270 | 0 | } Unexecuted instantiation: bvar::detail::Series<double, bvar::detail::AddTo<double> >::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::AddTo<long> >::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::MaxTo<long> >::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const Unexecuted instantiation: bvar::detail::Series<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const Unexecuted instantiation: bvar::detail::Series<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const Unexecuted instantiation: bvar::detail::Series<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const Unexecuted instantiation: bvar::detail::Series<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const Unexecuted instantiation: bvar::detail::Series<unsigned long, bvar::detail::AddTo<unsigned long> >::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const Unexecuted instantiation: bvar::detail::Series<bvar::Collected*, bvar::CombineCollected>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const Unexecuted instantiation: bvar::detail::Series<bvar::detail::Sampler*, bvar::detail::CombineSampler>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const Unexecuted instantiation: bvar::detail::Series<int, bvar::detail::AddTo<int> >::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const |
271 | | |
272 | | template <typename T, size_t N, typename Op> |
273 | | void Series<Vector<T,N>, Op>::describe(std::ostream& os, |
274 | 0 | const std::string* vector_names) const { |
275 | 0 | pthread_mutex_lock(&this->_mutex); |
276 | 0 | const int second_begin = this->_nsecond; |
277 | 0 | const int minute_begin = this->_nminute; |
278 | 0 | const int hour_begin = this->_nhour; |
279 | 0 | const int day_begin = this->_nday; |
280 | | // NOTE: we don't save _data which may be inconsistent sometimes, but |
281 | | // this output is generally for "peeking the trend" and does not need |
282 | | // to exactly accurate. |
283 | 0 | pthread_mutex_unlock(&this->_mutex); |
284 | |
|
285 | 0 | butil::StringSplitter sp(vector_names ? vector_names->c_str() : "", ','); |
286 | 0 | os << '['; |
287 | 0 | for (size_t j = 0; j < N; ++j) { |
288 | 0 | if (j) { |
289 | 0 | os << ','; |
290 | 0 | } |
291 | 0 | int c = 0; |
292 | 0 | os << "{\"label\":\""; |
293 | 0 | if (sp) { |
294 | 0 | os << butil::StringPiece(sp.field(), sp.length()); |
295 | 0 | ++sp; |
296 | 0 | } else { |
297 | 0 | os << "Vector[" << j << ']'; |
298 | 0 | } |
299 | 0 | os << "\",\"data\":["; |
300 | 0 | for (int i = 0; i < 30; ++i, ++c) { |
301 | 0 | if (c) { |
302 | 0 | os << ','; |
303 | 0 | } |
304 | 0 | os << '[' << c << ',' << this->_data.day((i + day_begin) % 30)[j] << ']'; |
305 | 0 | } |
306 | 0 | for (int i = 0; i < 24; ++i, ++c) { |
307 | 0 | if (c) { |
308 | 0 | os << ','; |
309 | 0 | } |
310 | 0 | os << '[' << c << ',' << this->_data.hour((i + hour_begin) % 24)[j] << ']'; |
311 | 0 | } |
312 | 0 | for (int i = 0; i < 60; ++i, ++c) { |
313 | 0 | if (c) { |
314 | 0 | os << ','; |
315 | 0 | } |
316 | 0 | os << '[' << c << ',' << this->_data.minute((i + minute_begin) % 60)[j] << ']'; |
317 | 0 | } |
318 | 0 | for (int i = 0; i < 60; ++i, ++c) { |
319 | 0 | if (c) { |
320 | 0 | os << ','; |
321 | 0 | } |
322 | 0 | os << '[' << c << ',' << this->_data.second((i + second_begin) % 60)[j] << ']'; |
323 | 0 | } |
324 | 0 | os << "]}"; |
325 | 0 | } |
326 | 0 | os << ']'; |
327 | 0 | } |
328 | | |
329 | | } // namespace detail |
330 | | } // namespace bvar |
331 | | |
332 | | #endif // BVAR_DETAIL_SERIES_H |