| #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_ |