Documentation
¶
Overview ¶
Package task is a generated GoMock package.
Index ¶
- Constants
- Variables
- type FIFOTaskSchedulerOptions
- type MockPriorityTask
- func (m *MockPriorityTask) Ack()
- func (m *MockPriorityTask) EXPECT() *MockPriorityTaskMockRecorder
- func (m *MockPriorityTask) Execute() error
- func (m *MockPriorityTask) HandleErr(err error) error
- func (m *MockPriorityTask) Nack()
- func (m *MockPriorityTask) Priority() int
- func (m *MockPriorityTask) RetryErr(err error) bool
- func (m *MockPriorityTask) SetPriority(arg0 int)
- func (m *MockPriorityTask) State() State
- type MockPriorityTaskMockRecorder
- func (mr *MockPriorityTaskMockRecorder) Ack() *gomock.Call
- func (mr *MockPriorityTaskMockRecorder) Execute() *gomock.Call
- func (mr *MockPriorityTaskMockRecorder) HandleErr(err interface{}) *gomock.Call
- func (mr *MockPriorityTaskMockRecorder) Nack() *gomock.Call
- func (mr *MockPriorityTaskMockRecorder) Priority() *gomock.Call
- func (mr *MockPriorityTaskMockRecorder) RetryErr(err interface{}) *gomock.Call
- func (mr *MockPriorityTaskMockRecorder) SetPriority(arg0 interface{}) *gomock.Call
- func (mr *MockPriorityTaskMockRecorder) State() *gomock.Call
- type MockProcessor
- type MockProcessorMockRecorder
- type MockScheduler
- type MockSchedulerMockRecorder
- type MockSequentialTaskQueue
- func (m *MockSequentialTaskQueue) Add(task Task)
- func (m *MockSequentialTaskQueue) EXPECT() *MockSequentialTaskQueueMockRecorder
- func (m *MockSequentialTaskQueue) IsEmpty() bool
- func (m *MockSequentialTaskQueue) Len() int
- func (m *MockSequentialTaskQueue) QueueID() interface{}
- func (m *MockSequentialTaskQueue) Remove() Task
- type MockSequentialTaskQueueMockRecorder
- func (mr *MockSequentialTaskQueueMockRecorder) Add(task interface{}) *gomock.Call
- func (mr *MockSequentialTaskQueueMockRecorder) IsEmpty() *gomock.Call
- func (mr *MockSequentialTaskQueueMockRecorder) Len() *gomock.Call
- func (mr *MockSequentialTaskQueueMockRecorder) QueueID() *gomock.Call
- func (mr *MockSequentialTaskQueueMockRecorder) Remove() *gomock.Call
- type MockTask
- type MockTaskMockRecorder
- func (mr *MockTaskMockRecorder) Ack() *gomock.Call
- func (mr *MockTaskMockRecorder) Execute() *gomock.Call
- func (mr *MockTaskMockRecorder) HandleErr(err interface{}) *gomock.Call
- func (mr *MockTaskMockRecorder) Nack() *gomock.Call
- func (mr *MockTaskMockRecorder) RetryErr(err interface{}) *gomock.Call
- func (mr *MockTaskMockRecorder) State() *gomock.Call
- type ParallelTaskProcessorOptions
- type PriorityTask
- type Processor
- type Scheduler
- type SchedulerType
- type SequentialTaskQueue
- type SequentialTaskQueueFactory
- type State
- type Task
- type WeightedRoundRobinTaskSchedulerOptions
Constants ¶
const (
// NoPriority is the value returned if no priority is ever assigned to the task
NoPriority = -1
)
Variables ¶
var (
// ErrTaskProcessorClosed is the error returned when submiting task to a stopped processor
ErrTaskProcessorClosed = errors.New("task processor has already shutdown")
)
var (
// ErrTaskSchedulerClosed is the error returned when submitting task to a stopped scheduler
ErrTaskSchedulerClosed = errors.New("task scheduler has already shutdown")
)
Functions ¶
This section is empty.
Types ¶
type FIFOTaskSchedulerOptions ¶ added in v0.27.0
type FIFOTaskSchedulerOptions struct {
QueueSize int
WorkerCount int
RetryPolicy backoff.RetryPolicy
}
FIFOTaskSchedulerOptions configs FIFO task scheduler
type MockPriorityTask ¶ added in v0.27.0
type MockPriorityTask struct {
// contains filtered or unexported fields
}
MockPriorityTask is a mock of PriorityTask interface.
func NewMockPriorityTask ¶ added in v0.27.0
func NewMockPriorityTask(ctrl *gomock.Controller) *MockPriorityTask
NewMockPriorityTask creates a new mock instance.
func (*MockPriorityTask) Ack ¶ added in v0.27.0
func (m *MockPriorityTask) Ack()
Ack mocks base method.
func (*MockPriorityTask) EXPECT ¶ added in v0.27.0
func (m *MockPriorityTask) EXPECT() *MockPriorityTaskMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockPriorityTask) Execute ¶ added in v0.27.0
func (m *MockPriorityTask) Execute() error
Execute mocks base method.
func (*MockPriorityTask) HandleErr ¶ added in v0.27.0
func (m *MockPriorityTask) HandleErr(err error) error
HandleErr mocks base method.
func (*MockPriorityTask) Nack ¶ added in v0.27.0
func (m *MockPriorityTask) Nack()
Nack mocks base method.
func (*MockPriorityTask) Priority ¶ added in v0.27.0
func (m *MockPriorityTask) Priority() int
Priority mocks base method.
func (*MockPriorityTask) RetryErr ¶ added in v0.27.0
func (m *MockPriorityTask) RetryErr(err error) bool
RetryErr mocks base method.
func (*MockPriorityTask) SetPriority ¶ added in v0.27.0
func (m *MockPriorityTask) SetPriority(arg0 int)
SetPriority mocks base method.
type MockPriorityTaskMockRecorder ¶ added in v0.27.0
type MockPriorityTaskMockRecorder struct {
// contains filtered or unexported fields
}
MockPriorityTaskMockRecorder is the mock recorder for MockPriorityTask.
func (*MockPriorityTaskMockRecorder) Ack ¶ added in v0.27.0
func (mr *MockPriorityTaskMockRecorder) Ack() *gomock.Call
Ack indicates an expected call of Ack.
func (*MockPriorityTaskMockRecorder) Execute ¶ added in v0.27.0
func (mr *MockPriorityTaskMockRecorder) Execute() *gomock.Call
Execute indicates an expected call of Execute.
func (*MockPriorityTaskMockRecorder) HandleErr ¶ added in v0.27.0
func (mr *MockPriorityTaskMockRecorder) HandleErr(err interface{}) *gomock.Call
HandleErr indicates an expected call of HandleErr.
func (*MockPriorityTaskMockRecorder) Nack ¶ added in v0.27.0
func (mr *MockPriorityTaskMockRecorder) Nack() *gomock.Call
Nack indicates an expected call of Nack.
func (*MockPriorityTaskMockRecorder) Priority ¶ added in v0.27.0
func (mr *MockPriorityTaskMockRecorder) Priority() *gomock.Call
Priority indicates an expected call of Priority.
func (*MockPriorityTaskMockRecorder) RetryErr ¶ added in v0.27.0
func (mr *MockPriorityTaskMockRecorder) RetryErr(err interface{}) *gomock.Call
RetryErr indicates an expected call of RetryErr.
func (*MockPriorityTaskMockRecorder) SetPriority ¶ added in v0.27.0
func (mr *MockPriorityTaskMockRecorder) SetPriority(arg0 interface{}) *gomock.Call
SetPriority indicates an expected call of SetPriority.
type MockProcessor ¶ added in v0.27.0
type MockProcessor struct {
// contains filtered or unexported fields
}
MockProcessor is a mock of Processor interface.
func NewMockProcessor ¶ added in v0.27.0
func NewMockProcessor(ctrl *gomock.Controller) *MockProcessor
NewMockProcessor creates a new mock instance.
func (*MockProcessor) EXPECT ¶ added in v0.27.0
func (m *MockProcessor) EXPECT() *MockProcessorMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockProcessor) Start ¶ added in v0.27.0
func (m *MockProcessor) Start()
Start mocks base method.
type MockProcessorMockRecorder ¶ added in v0.27.0
type MockProcessorMockRecorder struct {
// contains filtered or unexported fields
}
MockProcessorMockRecorder is the mock recorder for MockProcessor.
func (*MockProcessorMockRecorder) Start ¶ added in v0.27.0
func (mr *MockProcessorMockRecorder) Start() *gomock.Call
Start indicates an expected call of Start.
type MockScheduler ¶ added in v0.27.0
type MockScheduler struct {
// contains filtered or unexported fields
}
MockScheduler is a mock of Scheduler interface.
func NewMockScheduler ¶ added in v0.27.0
func NewMockScheduler(ctrl *gomock.Controller) *MockScheduler
NewMockScheduler creates a new mock instance.
func (*MockScheduler) EXPECT ¶ added in v0.27.0
func (m *MockScheduler) EXPECT() *MockSchedulerMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockScheduler) Start ¶ added in v0.27.0
func (m *MockScheduler) Start()
Start mocks base method.
func (*MockScheduler) Stop ¶ added in v0.27.0
func (m *MockScheduler) Stop()
Stop mocks base method.
type MockSchedulerMockRecorder ¶ added in v0.27.0
type MockSchedulerMockRecorder struct {
// contains filtered or unexported fields
}
MockSchedulerMockRecorder is the mock recorder for MockScheduler.
func (*MockSchedulerMockRecorder) Start ¶ added in v0.27.0
func (mr *MockSchedulerMockRecorder) Start() *gomock.Call
Start indicates an expected call of Start.
func (*MockSchedulerMockRecorder) Stop ¶ added in v0.27.0
func (mr *MockSchedulerMockRecorder) Stop() *gomock.Call
Stop indicates an expected call of Stop.
type MockSequentialTaskQueue ¶ added in v0.27.0
type MockSequentialTaskQueue struct {
// contains filtered or unexported fields
}
MockSequentialTaskQueue is a mock of SequentialTaskQueue interface.
func NewMockSequentialTaskQueue ¶ added in v0.27.0
func NewMockSequentialTaskQueue(ctrl *gomock.Controller) *MockSequentialTaskQueue
NewMockSequentialTaskQueue creates a new mock instance.
func (*MockSequentialTaskQueue) Add ¶ added in v0.27.0
func (m *MockSequentialTaskQueue) Add(task Task)
Add mocks base method.
func (*MockSequentialTaskQueue) EXPECT ¶ added in v0.27.0
func (m *MockSequentialTaskQueue) EXPECT() *MockSequentialTaskQueueMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockSequentialTaskQueue) IsEmpty ¶ added in v0.27.0
func (m *MockSequentialTaskQueue) IsEmpty() bool
IsEmpty mocks base method.
func (*MockSequentialTaskQueue) Len ¶ added in v0.27.0
func (m *MockSequentialTaskQueue) Len() int
Len mocks base method.
type MockSequentialTaskQueueMockRecorder ¶ added in v0.27.0
type MockSequentialTaskQueueMockRecorder struct {
// contains filtered or unexported fields
}
MockSequentialTaskQueueMockRecorder is the mock recorder for MockSequentialTaskQueue.
func (*MockSequentialTaskQueueMockRecorder) Add ¶ added in v0.27.0
func (mr *MockSequentialTaskQueueMockRecorder) Add(task interface{}) *gomock.Call
Add indicates an expected call of Add.
func (*MockSequentialTaskQueueMockRecorder) IsEmpty ¶ added in v0.27.0
func (mr *MockSequentialTaskQueueMockRecorder) IsEmpty() *gomock.Call
IsEmpty indicates an expected call of IsEmpty.
func (*MockSequentialTaskQueueMockRecorder) Len ¶ added in v0.27.0
func (mr *MockSequentialTaskQueueMockRecorder) Len() *gomock.Call
Len indicates an expected call of Len.
type MockTask ¶ added in v0.27.0
type MockTask struct {
// contains filtered or unexported fields
}
MockTask is a mock of Task interface.
func NewMockTask ¶ added in v0.27.0
func NewMockTask(ctrl *gomock.Controller) *MockTask
NewMockTask creates a new mock instance.
func (*MockTask) EXPECT ¶ added in v0.27.0
func (m *MockTask) EXPECT() *MockTaskMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockTask) Execute ¶ added in v0.27.0
func (m *MockTask) Execute() error
Execute mocks base method.
func (*MockTask) HandleErr ¶ added in v0.27.0
func (m *MockTask) HandleErr(err error) error
HandleErr mocks base method.
type MockTaskMockRecorder ¶ added in v0.27.0
type MockTaskMockRecorder struct {
// contains filtered or unexported fields
}
MockTaskMockRecorder is the mock recorder for MockTask.
func (*MockTaskMockRecorder) Ack ¶ added in v0.27.0
func (mr *MockTaskMockRecorder) Ack() *gomock.Call
Ack indicates an expected call of Ack.
func (*MockTaskMockRecorder) Execute ¶ added in v0.27.0
func (mr *MockTaskMockRecorder) Execute() *gomock.Call
Execute indicates an expected call of Execute.
func (*MockTaskMockRecorder) HandleErr ¶ added in v0.27.0
func (mr *MockTaskMockRecorder) HandleErr(err interface{}) *gomock.Call
HandleErr indicates an expected call of HandleErr.
func (*MockTaskMockRecorder) Nack ¶ added in v0.27.0
func (mr *MockTaskMockRecorder) Nack() *gomock.Call
Nack indicates an expected call of Nack.
type ParallelTaskProcessorOptions ¶ added in v0.27.0
type ParallelTaskProcessorOptions struct {
QueueSize int
WorkerCount int
RetryPolicy backoff.RetryPolicy
}
ParallelTaskProcessorOptions configs PriorityTaskProcessor
type PriorityTask ¶ added in v0.27.0
type PriorityTask interface {
Task
// Priority returns the priority of the task, or NoPriority if no priority was previously assigned
Priority() int
// SetPriority sets the priority of the task
SetPriority(int)
}
PriorityTask is the interface for tasks which have and can be assigned a priority
type Processor ¶ added in v0.27.0
type Processor interface {
common.Daemon
Submit(task Task) error
}
Processor is the generic coroutine pool interface which process tasks
func NewParallelTaskProcessor ¶ added in v0.27.0
func NewParallelTaskProcessor(
logger log.Logger,
metricsClient metrics.Client,
options *ParallelTaskProcessorOptions,
) Processor
NewParallelTaskProcessor creates a new PriorityTaskProcessor
func NewSequentialTaskProcessor ¶
func NewSequentialTaskProcessor(
coroutineSize int,
taskQueueHashFn collection.HashFunc,
taskQueueFactory SequentialTaskQueueFactory,
metricsClient metrics.Client,
logger log.Logger,
) Processor
NewSequentialTaskProcessor create a new sequential tasks processor
type Scheduler ¶ added in v0.27.0
type Scheduler interface {
common.Daemon
Submit(task PriorityTask) error
TrySubmit(task PriorityTask) (bool, error)
}
Scheduler is the generic interface for scheduling tasks with priority and processing them
func NewFIFOTaskScheduler ¶ added in v0.27.0
func NewFIFOTaskScheduler(
logger log.Logger,
metricsClient metrics.Client,
options *FIFOTaskSchedulerOptions,
) Scheduler
NewFIFOTaskScheduler creates a new FIFO task scheduler it's an no-op implementation as it simply copy tasks from one task channel to another task channel. This scheduler is only for development purpose.
func NewWeightedRoundRobinTaskScheduler ¶ added in v0.27.0
func NewWeightedRoundRobinTaskScheduler(
logger log.Logger,
metricsClient metrics.Client,
options *WeightedRoundRobinTaskSchedulerOptions,
) (Scheduler, error)
NewWeightedRoundRobinTaskScheduler creates a new WRR task scheduler
type SchedulerType ¶ added in v0.27.0
type SchedulerType int
SchedulerType respresents the type of the task scheduler implementation
const (
// SchedulerTypeFIFO is the scheduler type for FIFO scheduler implementation
SchedulerTypeFIFO SchedulerType = iota + 1
// SchedulerTypeWRR is the scheduler type for weighted round robin scheduler implementation
SchedulerTypeWRR
)
type SequentialTaskQueue ¶ added in v0.5.8
type SequentialTaskQueue interface {
// QueueID return the ID of the queue, as well as the tasks inside (same)
QueueID() interface{}
// Offer push an task to the task set
Add(task Task)
// Poll pop an task from the task set
Remove() Task
// IsEmpty indicate if the task set is empty
IsEmpty() bool
// Len return the size of the queue
Len() int
}
SequentialTaskQueue is the generic task queue interface which group sequential tasks to be executed one by one
type SequentialTaskQueueFactory ¶ added in v0.5.8
type SequentialTaskQueueFactory func(task Task) SequentialTaskQueue
SequentialTaskQueueFactory is the function which generate a new SequentialTaskQueue for a give SequentialTask
type State ¶ added in v0.27.0
type State int
State represents the current state of a task
const (
// TaskStatePending is the state for a task when it's waiting to be processed or currently being processed
TaskStatePending State = iota + 1
// TaskStateAcked is the state for a task if it has been successfully completed
TaskStateAcked
// TaskStateNacked is the state for a task if it can not be processed
TaskStateNacked
)
type Task ¶
type Task interface {
// Execute process this task
Execute() error
// HandleErr handle the error returned by Execute
HandleErr(err error) error
// RetryErr check whether to retry after HandleErr(Execute())
RetryErr(err error) bool
// Ack marks the task as successful completed
Ack()
// Nack marks the task as unsuccessful completed
Nack()
// State returns the current task state
State() State
}
Task is the interface for tasks which should be executed sequentially
type WeightedRoundRobinTaskSchedulerOptions ¶ added in v0.27.0
type WeightedRoundRobinTaskSchedulerOptions struct {
Weights dynamicconfig.MapPropertyFn
QueueSize int
WorkerCount int
RetryPolicy backoff.RetryPolicy
}
WeightedRoundRobinTaskSchedulerOptions configs WRR task scheduler