Documentation
¶
Index ¶
- type AlternatePolicy
- func (alp *AlternatePolicy) AttachTasks(tasks ...task.Task) error
- func (alp *AlternatePolicy) Disable() error
- func (alp *AlternatePolicy) Done() <-chan bool
- func (alp *AlternatePolicy) Equal(p Policy) bool
- func (alp *AlternatePolicy) Evaluate() (<-chan bool, error)
- func (alp *AlternatePolicy) GetConfig() *AlternatePolicyConfiguration
- func (alp *AlternatePolicy) IsEnabled() bool
- func (alp *AlternatePolicy) Name() string
- func (alp *AlternatePolicy) Tasks() []task.Task
- type AlternatePolicyConfiguration
- type Policy
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AlternatePolicy ¶
type AlternatePolicy struct {
//To sync the related operations.
*sync.RWMutex
// contains filtered or unexported fields
}
AlternatePolicy is a policy that repeatedly executing tasks with specified duration during a specified time scope.
func NewAlternatePolicy ¶
func NewAlternatePolicy(name string, config *AlternatePolicyConfiguration) *AlternatePolicy
NewAlternatePolicy is constructor of creating AlternatePolicy. Accept name and configuration as parameters.
func (*AlternatePolicy) AttachTasks ¶
func (alp *AlternatePolicy) AttachTasks(tasks ...task.Task) error
AttachTasks is an implementation of same method in policy interface.
func (*AlternatePolicy) Disable ¶
func (alp *AlternatePolicy) Disable() error
Disable is an implementation of same method in policy interface.
func (*AlternatePolicy) Done ¶
func (alp *AlternatePolicy) Done() <-chan bool
Done is an implementation of same method in policy interface.
func (*AlternatePolicy) Equal ¶
func (alp *AlternatePolicy) Equal(p Policy) bool
Equal is an implementation of same method in policy interface.
func (*AlternatePolicy) Evaluate ¶
func (alp *AlternatePolicy) Evaluate() (<-chan bool, error)
Evaluate is an implementation of same method in policy interface.
func (*AlternatePolicy) GetConfig ¶
func (alp *AlternatePolicy) GetConfig() *AlternatePolicyConfiguration
GetConfig returns the current configuration options of this policy.
func (*AlternatePolicy) IsEnabled ¶
func (alp *AlternatePolicy) IsEnabled() bool
IsEnabled is an implementation of same method in policy interface.
func (*AlternatePolicy) Name ¶
func (alp *AlternatePolicy) Name() string
Name is an implementation of same method in policy interface.
func (*AlternatePolicy) Tasks ¶
func (alp *AlternatePolicy) Tasks() []task.Task
Tasks is an implementation of same method in policy interface.
type AlternatePolicyConfiguration ¶
type AlternatePolicyConfiguration struct {
//Duration is the interval of executing attached tasks.
//E.g: 24*3600 for daily
// 7*24*3600 for weekly
Duration time.Duration
//An integer to indicate the the weekday of the week. Please be noted that Sunday is 7.
//Use default value 0 to indicate weekday is not set.
//To support by weekly function.
Weekday int8
//OffsetTime is the execution time point of each turn
//It's a number to indicate the seconds offset to the 00:00 of UTC time.
OffsetTime int64
}
AlternatePolicyConfiguration store the related configurations for alternate policy.
type Policy ¶
type Policy interface {
//Name will return the name of the policy.
//If the policy supports multiple instances, please make sure the name is unique as an UUID.
Name() string
//Tasks will return the attached tasks with this policy.
Tasks() []task.Task
//AttachTasks is to attach tasks to this policy
AttachTasks(...task.Task) error
//Done will setup a channel for other components to check whether or not
//the policy is completed. Possibly designed for the none loop policy.
Done() <-chan bool
//Evaluate the policy based on its definition and return the result via
//result channel. Policy is enabled after it is evaluated.
//Make sure Evaluate is idempotent, that means one policy can be only enabled
//only once even if Evaluate is called more than one times.
Evaluate() (<-chan bool, error)
//Disable the enabled policy and release all the allocated resources.
Disable() error
//Equal will compare the two policies based on related factors if existing such as confgiuration etc.
//to determine whether the two policies are same ones or not. Please pay attention that, not every policy
//needs to support this method. If no need, please directly return false to indicate each policies are
//different.
Equal(p Policy) bool
//IsEnabled is to indicate whether the policy is enabled or not (disabled).
IsEnabled() bool
}
Policy is an if-then logic to determine how the attached tasks should be executed based on the evaluation result of the defined conditions. E.g:
Daily execute TASK between 2017/06/24 and 2018/06/23 Execute TASK at 2017/09/01 14:30:00
Each policy should have a name to identify itself. Please be aware that policy with no tasks will be treated as invalid.