aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/StoredDouble.java
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@yahooinc.com>2022-01-14 22:09:31 +0100
committerValerij Fredriksen <valerijf@yahooinc.com>2022-01-17 19:06:38 +0100
commit4f16a16b9d6b182a22b7ba2134bd8df29c3c04d2 (patch)
tree8cf58ac2570444c7133f7cf930c0442b62fe4538 /node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/StoredDouble.java
parentd70502fa56157840a2308ab34cc3228ee1a1be81 (diff)
Create StoredDouble
Diffstat (limited to 'node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/StoredDouble.java')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/StoredDouble.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/StoredDouble.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/StoredDouble.java
new file mode 100644
index 00000000000..3249dab1ca8
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/StoredDouble.java
@@ -0,0 +1,46 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.node.admin.task.util.file;
+
+import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
+
+import java.nio.file.Path;
+import java.time.Instant;
+import java.util.Optional;
+import java.util.OptionalDouble;
+import java.util.function.Supplier;
+import java.util.logging.Logger;
+
+/**
+ * Class wrapping a float stored on disk
+ *
+ * @author freva
+ */
+public class StoredDouble implements Supplier<OptionalDouble> {
+
+ private static final Logger logger = Logger.getLogger(StoredDouble.class.getName());
+
+ private final UnixPath path;
+
+ public StoredDouble(Path path) {
+ this.path = new UnixPath(path);
+ }
+
+ @Override
+ public OptionalDouble get() {
+ return path.readUtf8FileIfExists().stream().mapToDouble(Double::parseDouble).findAny();
+ }
+
+ public void write(TaskContext taskContext, double value) {
+ path.writeUtf8File(Double.toString(value));
+ taskContext.log(logger, "Stored new double in %s: %f", path, value);
+ }
+
+ public void clear() {
+ path.deleteIfExists();
+ }
+
+ public Optional<Instant> getLastModifiedTime() {
+ return path.getAttributesIfExists().map(FileAttributes::lastModifiedTime);
+ }
+
+}