|
package tache |
|
|
|
import "context" |
|
|
|
|
|
type Base struct { |
|
ID string `json:"id"` |
|
State State `json:"state"` |
|
Retry int `json:"retry"` |
|
MaxRetry int `json:"max_retry"` |
|
|
|
progress float64 |
|
size int64 |
|
err error |
|
ctx context.Context |
|
cancel context.CancelFunc |
|
persist func() |
|
} |
|
|
|
func (b *Base) SetSize(size int64) { |
|
b.size = size |
|
b.Persist() |
|
} |
|
|
|
func (b *Base) GetSize() int64 { |
|
return b.size |
|
} |
|
|
|
func (b *Base) SetProgress(progress float64) { |
|
b.progress = progress |
|
b.Persist() |
|
} |
|
|
|
func (b *Base) GetProgress() float64 { |
|
return b.progress |
|
} |
|
|
|
func (b *Base) SetState(state State) { |
|
b.State = state |
|
b.Persist() |
|
} |
|
|
|
func (b *Base) GetState() State { |
|
return b.State |
|
} |
|
|
|
func (b *Base) GetID() string { |
|
return b.ID |
|
} |
|
|
|
func (b *Base) SetID(id string) { |
|
b.ID = id |
|
b.Persist() |
|
} |
|
|
|
func (b *Base) SetErr(err error) { |
|
b.err = err |
|
b.Persist() |
|
} |
|
|
|
func (b *Base) GetErr() error { |
|
return b.err |
|
} |
|
|
|
func (b *Base) CtxDone() <-chan struct{} { |
|
return b.Ctx().Done() |
|
} |
|
|
|
func (b *Base) SetCtx(ctx context.Context) { |
|
b.ctx = ctx |
|
} |
|
|
|
func (b *Base) SetCancelFunc(cancelFunc context.CancelFunc) { |
|
b.cancel = cancelFunc |
|
} |
|
|
|
func (b *Base) GetRetry() (int, int) { |
|
return b.Retry, b.MaxRetry |
|
} |
|
|
|
func (b *Base) SetRetry(retry int, maxRetry int) { |
|
b.Retry, b.MaxRetry = retry, maxRetry |
|
} |
|
|
|
func (b *Base) Cancel() { |
|
b.SetState(StateCanceling) |
|
b.cancel() |
|
} |
|
|
|
func (b *Base) Ctx() context.Context { |
|
return b.ctx |
|
} |
|
|
|
func (b *Base) Persist() { |
|
if b.persist != nil { |
|
b.persist() |
|
} |
|
} |
|
|
|
func (b *Base) SetPersist(persist func()) { |
|
b.persist = persist |
|
} |
|
|
|
var _ TaskBase = (*Base)(nil) |
|
|