| #ifndef PRODUCTION_SUSHID_SAFEPOWER_AGENT_SCHEDULER_INTERFACE_H_ |
| #define PRODUCTION_SUSHID_SAFEPOWER_AGENT_SCHEDULER_INTERFACE_H_ |
| |
| #include <string_view> |
| |
| #include "absl/functional/any_invocable.h" |
| #include "absl/status/status.h" |
| #include "absl/strings/string_view.h" |
| #include "absl/time/time.h" |
| |
| namespace safepower_agent { |
| |
| class SchedulerInterface { |
| public: |
| virtual ~SchedulerInterface() = default; |
| |
| // Schedule a task that will call a function every interval |
| // returns an error if name is already in use |
| virtual absl::Status PeriodicCall(absl::AnyInvocable<void()> fn, |
| absl::Duration interval, |
| std::string_view name) = 0; |
| |
| // Schedule task that will call a function once after waitDuration |
| // returns an error if name is already in use |
| virtual absl::Status DelayCall(absl::AnyInvocable<void() &&> fn, |
| absl::Duration wait_duration, |
| std::string_view name) = 0; |
| |
| // Cancel a Scheduled task permanently |
| // returns an error if name is not in use |
| virtual absl::Status CancelCall(std::string_view name) = 0; |
| |
| // Cancel all Scheduled task permanently |
| virtual absl::Status CancelAll() = 0; |
| |
| // Explicitly disables the Scheduler |
| virtual absl::Status Shutdown() = 0; |
| }; |
| } // namespace safepower_agent |
| #endif // PRODUCTION_SUSHID_SAFEPOWER_AGENT_SCHEDULER_INTERFACE_H_ |