1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package worker
- // mirror provider is the wrapper of mirror jobs
- type providerType uint8
- const (
- _WorkingDirKey = "working_dir"
- _LogDirKey = "log_dir"
- _LogFileKey = "log_file"
- )
- // A mirrorProvider instance
- type mirrorProvider interface {
- // name
- Name() string
- // TODO: implement Run, Terminate and Hooks
- // run mirror job in background
- Start()
- // Wait job to finish
- Wait()
- // terminate mirror job
- Terminate()
- // job hooks
- Hooks()
- Interval() int
- WorkingDir() string
- LogDir() string
- LogFile() string
- // enter context
- EnterContext() *Context
- // exit context
- ExitContext() *Context
- // return context
- Context() *Context
- }
- type baseProvider struct {
- ctx *Context
- name string
- interval int
- }
- func (p *baseProvider) Name() string {
- return p.name
- }
- func (p *baseProvider) EnterContext() *Context {
- p.ctx = p.ctx.Enter()
- return p.ctx
- }
- func (p *baseProvider) ExitContext() *Context {
- p.ctx, _ = p.ctx.Exit()
- return p.ctx
- }
- func (p *baseProvider) Context() *Context {
- return p.ctx
- }
- func (p *baseProvider) Interval() int {
- return p.interval
- }
- func (p *baseProvider) WorkingDir() string {
- if v, ok := p.ctx.Get(_WorkingDirKey); ok {
- if s, ok := v.(string); ok {
- return s
- }
- }
- panic("working dir is impossible to be non-exist")
- }
- func (p *baseProvider) LogDir() string {
- if v, ok := p.ctx.Get(_LogDirKey); ok {
- if s, ok := v.(string); ok {
- return s
- }
- }
- panic("log dir is impossible to be unavailable")
- }
- func (p *baseProvider) LogFile() string {
- if v, ok := p.ctx.Get(_LogFileKey); ok {
- if s, ok := v.(string); ok {
- return s
- }
- }
- panic("log dir is impossible to be unavailable")
- }
|