Documentation
¶
Overview ¶
Package task contains a default implementation of the interfaces in the task package.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CancelFlag ¶
type CancelFlag interface {
// Canceled returns true if a cancel or Shutdown has been requested, false otherwise.
// This method should be called periodically in the job.
Canceled() bool
// Set sets the state of this flag and wakes up waiting callers.
Set(state State)
// ShutDown returns true if a ShutDown has been requested, false otherwise.
// This method should be called periodically in the job.
ShutDown() bool
// State returns the current flag state
State() State
// Wait blocks the caller until either a cancel has been requested or the
// task has completed normally. Returns Canceled if cancel has been requested,
// or Completed if the task completed normally.
// This is intended to be used to wake up a job that may be waiting on some resources, as follows:
// The main job starts a go routine that calls Wait. The main job then does its processing.
// During processing the job may be waiting on certain events/conditions.
// In the go routine, once Wait returns, if the return value indicates that a cancel
// request has been received, the go routine wakes up the running job.
Wait() (state State)
}
CancelFlag is an object that is passed to any job submitted to a task in order to communicated job cancellation. Job cancellation has to be cooperative.
type ChanneledCancelFlag ¶
type ChanneledCancelFlag struct {
// contains filtered or unexported fields
}
ChanneledCancelFlag is a default implementation of the task.CancelFlag interface.
func NewChanneledCancelFlag ¶
func NewChanneledCancelFlag() *ChanneledCancelFlag
NewChanneledCancelFlag creates a new instance of ChanneledCancelFlag.
func (*ChanneledCancelFlag) Canceled ¶
func (t *ChanneledCancelFlag) Canceled() bool
Canceled returns true if this flag has been set to Cancel state, false otherwise.
func (*ChanneledCancelFlag) Set ¶
func (t *ChanneledCancelFlag) Set(state State)
Set sets the state of this flag and wakes up waiting callers.
func (*ChanneledCancelFlag) ShutDown ¶
func (t *ChanneledCancelFlag) ShutDown() bool
ShutDown returns true if this flag has been set to ShutDown state, false otherwise.
func (*ChanneledCancelFlag) State ¶
func (t *ChanneledCancelFlag) State() State
State returns the current flag state.
func (*ChanneledCancelFlag) Wait ¶
func (t *ChanneledCancelFlag) Wait() (state State)
Wait blocks until the flag is set to either Cancel or Completed state. Returns the state.
type Job ¶
type Job func(CancelFlag)
Job is a function that receives a cancel flag through which it can be canceled.
type JobStore ¶
type JobStore struct {
// contains filtered or unexported fields
}
JobStore is a collection of jobs.
func (*JobStore) DeleteAllJobs ¶
DeleteAllJobs deletes all the jobs of this task. Returns the deleted jobs.
type JobToken ¶
type JobToken struct {
// contains filtered or unexported fields
}
JobToken embeds a job and its associated info
type Pool ¶
type Pool interface {
// Submit schedules a job to be executed in the associated worker pool.
// Returns an error if a job with the same name already exists.
Submit(log log.T, jobID string, job Job) error
// Cancel cancels the given job. Jobs that have not started yet will never be started.
// Jobs that are running will have their CancelFlag set to the Canceled state.
// It is the responsibility of the job to terminate within a reasonable time.
// If the job fails to terminate after a Cancel, the job may be abandoned.
// Returns true if the job has been found and canceled, false if the job was not found.
Cancel(jobID string) bool
// Shutdown cancels all the jobs and shuts down the workers.
Shutdown()
// ShutdownAndWait calls Shutdown then waits until all the workers have exited
// or until the timeout has elapsed, whichever comes first. Returns true if all
// workers terminated before the timeout or false if the timeout expired.
ShutdownAndWait(timeout time.Duration) (finished bool)
// HasJob returns if jobStore has specified job
HasJob(jobID string) bool
// BufferTokensIssued returns the current buffer token size
BufferTokensIssued() int
// AcquireBufferToken acquires the buffer token based on job id
AcquireBufferToken(jobId string) PoolErrorCode
// ReleaseBufferToken releases the acquired token
ReleaseBufferToken(jobId string) PoolErrorCode
}
Pool is a pool of jobs.
func NewPool ¶
func NewPool(log log.T, maxParallel int, bufferLimit int, cancelWaitDuration time.Duration, clock times.Clock) Pool
NewPool creates a new task pool and launches maxParallel workers. The cancelWaitDuration parameter defines how long to wait for a job to complete a cancellation request.
type PoolErrorCode ¶
type PoolErrorCode string
var ( // DuplicateCommand represents duplicate command in the buffer DuplicateCommand PoolErrorCode = "DuplicateCommand" // InvalidJobId represents invalid job Id InvalidJobId PoolErrorCode = "InvalidJobId" // UninitializedBuffer represents that the buffer has not been initialized in the pool UninitializedBuffer PoolErrorCode = "UninitializedBuffer" // JobQueueFull represents that the job queue buffer is full JobQueueFull PoolErrorCode = "JobQueueFull" )