aboutsummaryrefslogtreecommitdiffstats
path: root/configd/src/apps/sentinel/model-subscriber.h
diff options
context:
space:
mode:
Diffstat (limited to 'configd/src/apps/sentinel/model-subscriber.h')
-rw-r--r--configd/src/apps/sentinel/model-subscriber.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/configd/src/apps/sentinel/model-subscriber.h b/configd/src/apps/sentinel/model-subscriber.h
new file mode 100644
index 00000000000..1777e287d4f
--- /dev/null
+++ b/configd/src/apps/sentinel/model-subscriber.h
@@ -0,0 +1,30 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/config-model.h>
+#include <vespa/config/config.h>
+#include <optional>
+
+using cloud::config::ModelConfig;
+
+namespace config::sentinel {
+
+/**
+ * Handles config subscription and has a snapshot of current config.
+ **/
+class ModelSubscriber {
+private:
+ std::string _configId;
+ config::ConfigSubscriber _subscriber;
+ config::ConfigHandle<ModelConfig>::UP _modelHandle;
+ std::unique_ptr<ModelConfig> _modelConfig;
+public:
+ ModelSubscriber(const std::string &configId);
+ virtual ~ModelSubscriber();
+ void start(std::chrono::milliseconds timeout);
+ void checkForUpdates();
+ std::optional<ModelConfig> getModelConfig();
+};
+
+}