summaryrefslogtreecommitdiffstats
path: root/library/cpp/time_provider/monotonic_provider.cpp
diff options
context:
space:
mode:
authorivanmorozov <[email protected]>2022-11-29 15:52:07 +0300
committerivanmorozov <[email protected]>2022-11-29 15:52:07 +0300
commit8ff1738e8665e5c3a1a328104806bcafbc1bd7ae (patch)
tree9657e2ea4d923a22e69e954fe11fb77e35bc3271 /library/cpp/time_provider/monotonic_provider.cpp
parentdb99cf88226de50e47bd3acdc0ecfe634ce1d828 (diff)
time providers in separated library for future refactoring
Diffstat (limited to 'library/cpp/time_provider/monotonic_provider.cpp')
-rw-r--r--library/cpp/time_provider/monotonic_provider.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/library/cpp/time_provider/monotonic_provider.cpp b/library/cpp/time_provider/monotonic_provider.cpp
new file mode 100644
index 00000000000..22937bd8731
--- /dev/null
+++ b/library/cpp/time_provider/monotonic_provider.cpp
@@ -0,0 +1,32 @@
+#include "monotonic_provider.h"
+
+namespace {
+TIntrusivePtr<IMonotonicTimeProvider> GlobalMonotonicTimeProvider;
+}
+
+void TMonotonicOperator::RegisterProvider(TIntrusivePtr<IMonotonicTimeProvider> provider) {
+ GlobalMonotonicTimeProvider = provider;
+}
+
+NMonotonic::TMonotonic TMonotonicOperator::Now() {
+ if (GlobalMonotonicTimeProvider) {
+ return GlobalMonotonicTimeProvider->Now();
+ } else {
+ return TMonotonic::Now();
+ }
+}
+
+namespace NMonotonic {
+
+class TDefaultMonotonicTimeProvider: public IMonotonicTimeProvider {
+public:
+ TMonotonic Now() override {
+ return TMonotonic::Now();
+ }
+};
+
+TIntrusivePtr<IMonotonicTimeProvider> CreateDefaultMonotonicTimeProvider() {
+ return TIntrusivePtr<IMonotonicTimeProvider>(new TDefaultMonotonicTimeProvider);
+}
+
+}