Documentation
¶
Index ¶
- Constants
- func CompleteTask(id string) (err error)
- func EnqueTask(task *MaestroTask, ackHandler AckHandler, persistent bool) (err error)
- func EnqueTasks(thesetasks []*MaestroTask, persistent bool) (err error)
- func FailTask(id string, cause *maestroSpecs.APIError) (err error)
- func GetTaskStatus(id string) (step uint32, ok bool)
- func InitTaskManager()
- func IterateTask(id string, cb UpdateTaskCB) (err error)
- func MarkTaskStepAsExecuting(id string)
- func New_taskFIFO(maxsize uint32) (ret *taskFIFO)
- func RegisterHandler(optype string, handler TaskHandler)
- func RemoveTask(id string) error
- func RestartStoredTasks()
- func StartTaskManager()
- func TaskAckFailed(taskId string, err error)
- func TaskAckOK(taskid string)
- func ValidateTask(task *MaestroTask) (err error)
- type AckHandler
- type IfTaskCB
- type MaestroTask
- type TaskHandler
- type UpdateTaskCB
Constants ¶
const MAX_TASK_LIFE = maestroSpecs.MAX_TASK_LIFE
const RUNAWAY_THRESHOLD = 20
const TASK_COMPLETE_STEP = ^uint32(0)
Variables ¶
This section is empty.
Functions ¶
func CompleteTask ¶
func EnqueTask ¶
func EnqueTask(task *MaestroTask, ackHandler AckHandler, persistent bool) (err error)
Enqueu's the task into disk storage
func EnqueTasks ¶
func EnqueTasks(thesetasks []*MaestroTask, persistent bool) (err error)
enques a Batch of Tasks.
func GetTaskStatus ¶
func InitTaskManager ¶
func InitTaskManager()
func IterateTask ¶
func IterateTask(id string, cb UpdateTaskCB) (err error)
When a TaskHandler has finished a step of a task, the handler should call this. This will execute a call back which makes changes to the MaestroTask and automatically iterates the Step field
func MarkTaskStepAsExecuting ¶
func MarkTaskStepAsExecuting(id string)
marks the current Step as Executing Used if a Task starts a new goroutine, or defers an operation This is automatically cleared by IterateTask
func New_taskFIFO ¶
func New_taskFIFO(maxsize uint32) (ret *taskFIFO)
func RegisterHandler ¶
func RegisterHandler(optype string, handler TaskHandler)
func RemoveTask ¶
func RestartStoredTasks ¶
func RestartStoredTasks()
LoadFromStorage Loads all tasks which were queued into storage to be called on startup. This
func StartTaskManager ¶
func StartTaskManager()
func TaskAckFailed ¶
Informs the TaskManager that a request ACK for specific Task failed to send or be recieved by the original caller of the Task This is typically a remote server. In this case, the TaskManager will again ask for an ACK at some point in the future
func TaskAckOK ¶
func TaskAckOK(taskid string)
Informs the TaskManager that a request ACK for specific Task was successful sent and recieved by the original caller of the Task This is typically a remote server
func ValidateTask ¶
func ValidateTask(task *MaestroTask) (err error)
Ensures the Task can be run by the TaskManager No error is good
Types ¶
type AckHandler ¶
type AckHandler interface {
SendFinishedAck(task *MaestroTask) (err error)
SendFailedAck(task *MaestroTask) (err error)
}
An AckHandler is another module which can Ack a particular Task When you EnqueTask you must provide a AckHandler for the task
type IfTaskCB ¶
type IfTaskCB func(task *MaestroTask) bool
type MaestroTask ¶
type MaestroTask struct {
Id string
Src string // identifies where the task came from
Op maestroSpecs.Operation // a generic Operation
Step uint32 // A step of 0 means the task has never been started
// Steps after this are proprietary to the Task at hand
TotalSteps uint32 // the last step in the Task (so '2' if there are 2 steps, 0 is the first)
StepProgress uint32 // 0-100 % of Step complete
StepName string
CompleteTime int64
Error *maestroSpecs.APIError // if the Task has failed, this is the associate error
// contains filtered or unexported fields
}
func CreateNewBatchTasks ¶
func CreateNewBatchTasks(ops []maestroSpecs.Operation, masterid string, src string) (ret []*MaestroTask, err error)
func CreateNewBatchTask(childtasks []*MaestroTask, masterid string, src string) (ret *MaestroTask, err error) {
func CreateNewTask ¶
func CreateNewTask(op maestroSpecs.Operation, src string) (ret *MaestroTask, err error)
type TaskHandler ¶
type TaskHandler interface {
// Submits a Task into the Handler. It's work is b
SubmitTask(task *MaestroTask) error
ValidateTask(task *MaestroTask) error
}
A TaskHandler is another module which can handle a certain type of Task Examples are: imageManager.go and jobManager.go
type UpdateTaskCB ¶
type UpdateTaskCB func(task *MaestroTask)