diff options
| author | zosimov <[email protected]> | 2022-02-10 16:50:32 +0300 |
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:50:32 +0300 |
| commit | a8f009e06d613c9567eb4c0f461dbed5e0d8092b (patch) | |
| tree | d21fc5cd2e0d5ade9588ebc637729e86b924279b /library/cpp/histogram/adaptive/merger.h | |
| parent | 06e925754c8de946ff79d538bde1e6424cbd4cbb (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/histogram/adaptive/merger.h')
| -rw-r--r-- | library/cpp/histogram/adaptive/merger.h | 130 |
1 files changed, 65 insertions, 65 deletions
diff --git a/library/cpp/histogram/adaptive/merger.h b/library/cpp/histogram/adaptive/merger.h index fc9a6b6a4f9..a1db5e4c4bc 100644 --- a/library/cpp/histogram/adaptive/merger.h +++ b/library/cpp/histogram/adaptive/merger.h @@ -1,68 +1,68 @@ -#pragma once - -#include <util/generic/buffer.h> - -namespace NKiwiAggr { - class IMerger { - private: - bool IsMerged; +#pragma once + +#include <util/generic/buffer.h> + +namespace NKiwiAggr { + class IMerger { + private: + bool IsMerged; ui32 AutoMergeInterval; // Call Merge() after each AutoMergeInterval calls of Add(); zero means no autoMerge - ui32 NotMergedCount; - - public: - IMerger(ui32 autoMergeInterval = 0) - : IsMerged(true) - , AutoMergeInterval(autoMergeInterval) - , NotMergedCount(0) - { - } - + ui32 NotMergedCount; + + public: + IMerger(ui32 autoMergeInterval = 0) + : IsMerged(true) + , AutoMergeInterval(autoMergeInterval) + , NotMergedCount(0) + { + } + virtual ~IMerger() { - } - - // returns true if something is added - virtual bool Add(const void* data, size_t size) { - if (AddImpl(data, size)) { - AutoMerge(); - return true; - } - return false; - } - - virtual void Merge() { - if (!IsMerged) { - MergeImpl(); - IsMerged = true; - } - } - - virtual void Reset() { - ResetImpl(); - IsMerged = true; - } - - // You can add some more result-getters if you want. - // Do not forget to call Merge() in the beginning of each merger. - virtual void GetResult(TBuffer& buffer) = 0; - - protected: - // AutoMerge() is called in Add() after each AddImpl() - void AutoMerge() { - IsMerged = false; - if (AutoMergeInterval) { - ++NotMergedCount; - if (NotMergedCount >= AutoMergeInterval) { - MergeImpl(); - IsMerged = true; - NotMergedCount = 0; - } - } - } - - // Implementation of merger: define it in derivatives - virtual bool AddImpl(const void* data, size_t size) = 0; // returns true if something is added - virtual void MergeImpl() = 0; - virtual void ResetImpl() = 0; - }; - + } + + // returns true if something is added + virtual bool Add(const void* data, size_t size) { + if (AddImpl(data, size)) { + AutoMerge(); + return true; + } + return false; + } + + virtual void Merge() { + if (!IsMerged) { + MergeImpl(); + IsMerged = true; + } + } + + virtual void Reset() { + ResetImpl(); + IsMerged = true; + } + + // You can add some more result-getters if you want. + // Do not forget to call Merge() in the beginning of each merger. + virtual void GetResult(TBuffer& buffer) = 0; + + protected: + // AutoMerge() is called in Add() after each AddImpl() + void AutoMerge() { + IsMerged = false; + if (AutoMergeInterval) { + ++NotMergedCount; + if (NotMergedCount >= AutoMergeInterval) { + MergeImpl(); + IsMerged = true; + NotMergedCount = 0; + } + } + } + + // Implementation of merger: define it in derivatives + virtual bool AddImpl(const void* data, size_t size) = 0; // returns true if something is added + virtual void MergeImpl() = 0; + virtual void ResetImpl() = 0; + }; + } |
