diff options
author | Valerij Fredriksen <valerijf@yahooinc.com> | 2022-01-14 22:09:31 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerijf@yahooinc.com> | 2022-01-17 19:06:38 +0100 |
commit | 4f16a16b9d6b182a22b7ba2134bd8df29c3c04d2 (patch) | |
tree | 8cf58ac2570444c7133f7cf930c0442b62fe4538 /node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/StoredDouble.java | |
parent | d70502fa56157840a2308ab34cc3228ee1a1be81 (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.java | 46 |
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); + } + +} |