blob: 093f43ea2ba7aecd70b61e06c95f1c2f3ad04197 [file] [log] [blame]
#ifndef PRODUCTION_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_DAEMON_CONTEXT_H_
#define PRODUCTION_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_DAEMON_CONTEXT_H_
#include <cstdint>
#include <utility>
#include "disruption_manager.h"
#include "persistent_storage.h"
#include "safepower_agent_config.pb.h"
#include "scheduler_interface.h"
#include "one/offline_node_entities.pb.h"
#include "absl/base/nullability.h"
#include "absl/status/status.h"
#include "absl/time/clock.h"
#include "absl/time/time.h"
namespace safepower_agent {
class DaemonContext {
public:
DaemonContext();
virtual ~DaemonContext();
static DaemonContext& Get();
virtual absl::Time now() const { return absl::Now(); }
virtual uint64_t epoch_ms() = 0;
virtual SchedulerInterface& scheduler() = 0;
virtual PersistentStorageManager& persistent_storage_manager() = 0;
const safepower_agent_config::SafePowerAgentConfig& config() const {
return config_;
}
void set_config(safepower_agent_config::SafePowerAgentConfig config) {
config_ = std::move(config);
}
DisruptionManager& disruption_manager() { return disruption_manager_; }
void set_offline_node_entities(
production_msv::node_entities_proto::OfflineNodeEntityInformation
offline_node_entities) {
offline_node_entities_ = std::move(offline_node_entities);
}
const production_msv::node_entities_proto::OfflineNodeEntityInformation&
offline_node_entities() const {
return offline_node_entities_;
}
private:
static DaemonContext* instance_;
safepower_agent_config::SafePowerAgentConfig config_;
::production_msv::node_entities_proto::OfflineNodeEntityInformation
offline_node_entities_;
DisruptionManager disruption_manager_;
};
} // namespace safepower_agent
#endif // PRODUCTION_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_DAEMON_CONTEXT_H_