blob: 55e71d3dffb2bb17cc72bcb33631523b7ade9d15 [file] [log] [blame]
#ifndef PRODUCTION_SUSHID_SAFEPOWER_AGENT_DAEMON_CONTEXT_H_
#define PRODUCTION_SUSHID_SAFEPOWER_AGENT_DAEMON_CONTEXT_H_
#include <cstdint>
#include "persistent_storage.h"
#include "scheduler_interface.h"
#include "absl/base/nullability.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;
private:
static absl::Nullable<DaemonContext*> instance_;
};
} // namespace safepower_agent
#endif // PRODUCTION_SUSHID_SAFEPOWER_AGENT_DAEMON_CONTEXT_H_