aboutsummaryrefslogtreecommitdiff
path: root/src/zenutil/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenutil/include')
-rw-r--r--src/zenutil/include/zenutil/filteredrate.h37
-rw-r--r--src/zenutil/include/zenutil/progress.h3
2 files changed, 40 insertions, 0 deletions
diff --git a/src/zenutil/include/zenutil/filteredrate.h b/src/zenutil/include/zenutil/filteredrate.h
new file mode 100644
index 000000000..3349823d0
--- /dev/null
+++ b/src/zenutil/include/zenutil/filteredrate.h
@@ -0,0 +1,37 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include <zencore/timer.h>
+
+#include <atomic>
+#include <cstdint>
+
+namespace zen {
+
+class FilteredRate
+{
+public:
+ FilteredRate() {}
+
+ void Start();
+ void Stop();
+ void Update(uint64_t Count);
+
+ uint64_t GetCurrent() const;
+ uint64_t GetElapsedTimeUS() const;
+ bool IsActive() const;
+
+private:
+ Stopwatch Timer;
+ std::atomic<uint64_t> StartTimeUS = (uint64_t)-1;
+ std::atomic<uint64_t> EndTimeUS = (uint64_t)-1;
+ std::atomic<uint64_t> LastTimeUS = (uint64_t)-1;
+ uint64_t LastCount = 0;
+ uint64_t LastPerSecond = 0;
+ uint64_t FilteredPerSecond = 0;
+};
+
+uint64_t GetBytesPerSecond(uint64_t ElapsedWallTimeUS, uint64_t Count);
+
+} // namespace zen
diff --git a/src/zenutil/include/zenutil/progress.h b/src/zenutil/include/zenutil/progress.h
index 6a137ae9c..4103723b3 100644
--- a/src/zenutil/include/zenutil/progress.h
+++ b/src/zenutil/include/zenutil/progress.h
@@ -16,6 +16,8 @@ public:
virtual void SetLogOperationName(std::string_view Name) = 0;
virtual void SetLogOperationProgress(uint32_t StepIndex, uint32_t StepCount) = 0;
+ virtual void PushLogOperation(std::string_view Name) = 0;
+ virtual void PopLogOperation() = 0;
virtual uint32_t GetProgressUpdateDelayMS() const = 0;
class ProgressBar
@@ -54,6 +56,7 @@ public:
virtual ~ProgressBar() = default;
virtual void UpdateState(const State& NewState, bool DoLinebreak) = 0;
+ virtual void ForceLinebreak() = 0;
virtual void Finish() = 0;
};