logs-analyzer/signoz/pkg/query-service/rules/task.go
2024-09-02 22:47:30 +03:00

38 lines
773 B
Go

package rules
import (
"context"
"time"
)
type TaskType string
const (
TaskTypeProm = "promql_ruletask"
TaskTypeCh = "ch_ruletask"
)
type Task interface {
Name() string
// Key returns the group key
Key() string
Type() TaskType
CopyState(from Task) error
Eval(ctx context.Context, ts time.Time)
Run(ctx context.Context)
Rules() []Rule
Stop()
Pause(b bool)
}
// newTask returns an appropriate group for
// rule type
func newTask(taskType TaskType, name, file string, frequency time.Duration, rules []Rule, opts *ManagerOptions, notify NotifyFunc, ruleDB RuleDB) Task {
if taskType == TaskTypeCh {
return newRuleTask(name, file, frequency, rules, opts, notify, ruleDB)
}
return newPromRuleTask(name, file, frequency, rules, opts, notify, ruleDB)
}