blob: 0565982940ec6e11b631a9685f03cc2a91e917ac [file] [log] [blame]
#ifndef PRODUCTION_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_SCHEDULER_INTERFACE_H_
#define PRODUCTION_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_SCHEDULER_INTERFACE_H_
#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,
absl::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,
absl::string_view name) = 0;
// Cancel a Scheduled task permanently
// returns an error if name is not in use
virtual absl::Status CancelCall(absl::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_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_SCHEDULER_INTERFACE_H_